![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как добавить к компоненту 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;