Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.03.2009, 13:57   #1
SibBear
Пользователь
 
Регистрация: 11.05.2008
Сообщений: 62
По умолчанию Помогите создать компонент на основе PageControl

Мне нужен PageControl с дополнительным свойством ImageList2, чтобы у вкладки рисовалось 2 картинки, перед текстом и после него. И нужна обработка события onImage2MouseClick.
Я не могу толком разобраться с созданием компонентов. Может кто занимался подобным?

Последний раз редактировалось SibBear; 22.03.2009 в 14:09.
SibBear вне форума Ответить с цитированием
Старый 23.03.2009, 10:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот когда-то делал примерно то что ты хочеш, кто то тут вопрошал:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    TabControl1: TTabControl;
    Button1: TButton;
    procedure TabControl1DrawTab(Control: TCustomTabControl;
      TabIndex: Integer; const Rect: TRect; Active: Boolean);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var  tb:array of TButton;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.TabControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin

 if high(tb)<TabIndex then setlength(tb,TabIndex+1);
 if tb[TabIndex]=nil then begin
  tb[TabIndex]:=TButton.Create(TabControl1);
  tb[TabIndex].Parent:=TabControl1;
  tb[TabIndex].Caption:='X';
  tb[TabIndex].Left:=rect.Left;
  tb[TabIndex].Top:=rect.Top;
  tb[TabIndex].Width:=20;
  tb[TabIndex].Height:=rect.Bottom;
  tb[TabIndex].Visible:=true;
 end;    
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
TabControl1.Tabs.Add('qwerty');
end;

end.
Замени Кнопки на Картинки и радуйся.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2009, 11:15   #3
SibBear
Пользователь
 
Регистрация: 11.05.2008
Сообщений: 62
По умолчанию

А как нибудь сделать это при OwnerDraw=False? Иначе оформление слетает...

11:30
все, спасибо, разбираюсь

13:19
не могу разобраться, если я делаю
Код:
tb[TabIndex].Click:=onMyClick;
а далее
Код:
procedure TForm1.onMyClick(Sender: TObject)
begin
Как вот тут получить номер кнопки которую нажали?
end;

Последний раз редактировалось mihali4; 23.03.2009 в 14:43.
SibBear вне форума Ответить с цитированием
Старый 23.03.2009, 13:49   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Цитата:
procedure TForm1.onMyClick(Sender: TObject)
begin
Index := (Sender as TButton).Tag;
end;
Но перед этим когда создаешь присваивай tb[TabIndex].Tag например TabIndex, чтобы потом при клике обрабатывать этот самый Tag - что-то типа номера кнопки у тебя будет.
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 23.03.2009, 13:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем тебе номер? Есть же имя у кнопки, или по крайней мере выставляй его при создании. Впрочем можно номер кнопки в свойство TAG пихнуть а потом проверять TButton(Sender).tag
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2009, 16:28   #6
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Для картинки слева можно использовать
TTabSheet.ImageIndex (и TPageControl.Images)
а вообще нашол в нете PageExtControl.zip
Там и кнопочка закрытия на каждой вкладке - надеюсь подойдет.
s.Creator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PageControl. в процессе проектировки формы создать несколько вкладок. GN_ Помощь студентам 7 15.11.2011 20:56
Как динамически создать компонент subsonic Общие вопросы Delphi 2 13.03.2009 15:23
Как создать свой компонент? Д'якон Компоненты Delphi 1 21.05.2008 16:37
Компонент на основе TPanel для отображения погоды из интернета... xzDelphi Компоненты Delphi 7 08.01.2008 17:33
Создать компонент в BDS 2006 Баламут Компоненты Delphi 2 08.11.2007 13:06