Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как добавить к компоненту TColorDialog кнопку TButton?


ColD.Handle ©   (2006-03-10 00:43:00) 

Я пробовал так

VAR ColD:TColorDialog;

RESBUTTON:=TButton.CreateParented(ColD.Handle);

Но у TColorDialog хендл=0

Как быть?


ColD.Handle   (2006-03-10 17:39:00) [1]

Спасибо, вот сделал:

type
 TForm1 = class(TForm)
//
   procedure cl(Sender: TObject);
 private
 public
end;

var   Form1: TForm1;  TNotifyEvent;
TP:TPanel; B:TButton;  cl:TNotifyEvent;

procedure TForm1.cl;
BEGIN
 beep;
END;

procedure TForm1.ColorDialog1Show(Sender: TObject);
begin
   TP:=TPanel.CreateParented(ColorDialog1.Handle);
   Windows.SetParent(TP.Handle,ColorDialog1.Handle);
   TP.Parent:=self;
   TP.top:=270;TP.Left:=150;  TP.Height:=24; TP.Width:=65;
   B:=TButton.Create(self);
   B.Parent:=TP;
   B.Caption:='Default'; B.Width:=65;B.Height:=23;
   B.OnClick:=cl;
end;

procedure TForm1.ColorDialog1Close(Sender: TObject);
begin
 B.Free;TP.Free;
end;



Пришлось кноку на панель ставить.


Defunct   (2006-03-10 05:45:00) [2]

не за минуту, конечно, часов 8 отняло, зато функционально, красиво и на долго ;>


Джо   (2006-03-10 05:31:00) [3]

> [8] Defunct ©   (10.03.06 05:25)
> А я не читал, и родил диалог такой же как в фотошопе ;>

Такой как в Фотошопе, за минуту не родишь :P Одну пантоновскую таблицу набить чего стоит :)


Defunct   (2006-03-10 05:25:00) [4]


> Прочитать несколько куцых предложений из Справки по поводу
> Handle. Я прочитал (минут 20 назад), в результате родил
> код из [5] :)

А я не читал, и родил диалог такой же как в фотошопе ;>
вывод - лишнее знание иногда вредит ;>


Джо   (2006-03-10 03:09:00) [5]

> Но у TColorDialog хендл=0
>
> Как быть?

Прочитать несколько куцых предложений из Справки по поводу Handle. Я прочитал (минут 20 назад), в результате родил код из [5] :)


Германн   (2006-03-10 03:02:00) [6]


> Только, разумеется, нажатие на эту кнопку ни к чему не приведет,
>  да это в вопросе и не требовалось :-)


:-)


Джо   (2006-03-10 02:53:00) [7]

procedure TForm1.Button1Click(Sender: TObject);
begin
 if ColorDialog1.Execute then
   /// blabla
end;

// OnShow event
procedure TForm1.ColorDialog1Show(Sender: TObject);
begin
 Windows.SetParent(Button2.Handle,ColorDialog1.Handle);
 // тут выбираем место для кнопки
 Button2.Left := 100;
 Button2.Top := 0;
end;

// OnClose event
procedure TForm1.ColorDialog1Close(Sender: TObject);
begin
 Windows.SetParent(Button2.Handle,Handle);
end;

Только, разумеется, нажатие на эту кнопку ни к чему не приведет, да это в вопросе и не требовалось :-)


Германн   (2006-03-10 02:37:00) [8]


> ColD.Handle   (10.03.06 00:43)

А кто или что мешает написать наследника TColorDialog с новой кнопкой и с её обработчиком?


Defunct   (2006-03-10 02:15:00) [9]

Наконец-то понял ваш вопрос. Кнопку к диалогу прикрутить не удастся, т.к. TColorDialog это "вещь в себе" и окно диалога создается динамически при вызове execute.


ColD.Handle   (2006-03-10 01:02:00) [10]

>а просто кинуть TColorDialog на форму не пробовали?
Попробовал, так тоже  хендл = 0.


Defunct   (2006-03-10 00:55:00) [11]

а просто кинуть TColorDialog на форму не пробовали?
в обработчике кнопки:

if ColorDialog1.Execute then
begin
 ..
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо