![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TWinControl [D7, WinXP]
P@vel © (2004-06-17 11:18:00)Можно создать компонент не имеющий родителя и (или) владельца?
jack128 (2004-06-18 19:43:00) [1]
> > TObject.Dispatch(Msg);
>
> но для этого сначала msg надо получить, а для этого нужна
> очередь выборки сообщений. имхо.
не совсем. В дельфи есть собственное понятие "сообщение". TControl реализован так, что сообщение в терминах Windows преобразуется в сообщения Дельфи
procedure TControl.WndProc(var Message: TMessage);
var
Form: TCustomForm;
begin
...
Dispatch(Message);
end;
Поэтому Rem прав - даже TObject может принемать сообщения, но только сообщения Delphi, а не Windows. Ответ в духе app(c) - абсолютно коректен ;-)
ПсихЪ (2004-06-18 12:34:00) [2]А вот с элементом TLabel всё несколько по другому. У него нет пропертей ParentWindow, которое есть у TEdit.
TEdit:
var
Form : TForm;
Edit : TEdit;
begin
Edit := TEdit.Create( Form );
Edit.ParentWindow := Form.Handle;
end.
TLabel:
var
Form : TForm;
Label : TLabel;
begin
Label := TLabel.Create( Form );
Label.Parent := TWinControl( Form );
end.
P@vel (2004-06-17 16:35:00) [3]Всем большое спасибо. Это реально помогло. Я уж было пытался через. CreateWindowEx но это какаято нереальная запарка. Класс регестрируется без проблем, а вот при попытке создания самого окна постоянно получаю ошибку 1400.
ПсихЪ (2004-06-17 14:57:00) [4]Удалено модератором
Тимохов (2004-06-17 14:48:00) [5]Удалено модератором
ПсихЪ (2004-06-17 14:39:00) [6]Удалено модератором
Тимохов (2004-06-17 12:43:00) [7]Удалено модератором
ПсихЪ (2004-06-17 12:31:00) [8]Удалено модератором
Тимохов (2004-06-17 12:21:00) [9]Удалено модератором
evvcom (2004-06-17 12:20:00) [10]Удалено модератором
ПсихЪ (2004-06-17 12:20:00) [11]Удалено модератором
Sandman25 (2004-06-17 12:19:00) [12]Удалено модератором
Тимохов (2004-06-17 12:18:00) [13]Господа
> Sandman25 © (17.06.04 12:15) [11]
> evvcom © (17.06.04 12:17) [12]
Он же издевается :))) имхо...
evvcom (2004-06-17 12:17:00) [14]"Криэтя" по родителю (Owner), ты указываешь, кто потом будет ответственнен за его убийство. А Parent - кто ответственнен за его отображание.
Sandman25 (2004-06-17 12:15:00) [15][10] ПсихЪ (17.06.04 12:14)
В create не родитель, а владелец.
PS. Боже, ну и день сегодня :)
ПсихЪ (2004-06-17 12:14:00) [16]
> Тимохов
ПРЕОГРОМНЕЙШЕЕ ТЕБЕ СПАСИБО!!! Вот ни за что не мподумал бы... ): Т.е. вроде и логично, но ведь ни за что бы не подумал, что "криэтя" TEdit по родителю, родителя придётся прописывать отдельно... (:
Тимохов (2004-06-17 12:12:00) [17]
> TObject.Dispatch(Msg);
но для этого сначала msg надо получить, а для этого нужна очередь выборки сообщений. имхо.
либо скрытое окно делать - очередь выборки будет штатной (главного потока).
либо делать доп поток - там делать выборку сообщений. Но если сообщения будут посылвать по sendmessage (т.е. синхнронные) то в потоке нужно делать окно все равно - иначе такие собщения будут игнорироваться.
Rem (2004-06-17 12:09:00) [18]> Мне нужен обьект который сможет принимать сообщения.
TObject.Dispatch(Msg);
Тимохов (2004-06-17 12:09:00) [19]
> Что делать дальше, чтобы элемент TEdit отобразился на форме?
как минимум Parent выставить.
ПсихЪ (2004-06-17 12:07:00) [20]Чё-то я туплю... ):
Создаю массив элементов типа TEdit:
EditArr : array of TEdit;
Далее мне нужно на форме Form1 показать один TEdit:
SetLength( EditArr, 1 );
EditArr[0] := TEdit.Create( Form1 );
// Далее заполняю параметры ьтпа Left, Top, Width, Height и т.д.
Что делать дальше, чтобы элемент TEdit отобразился на форме?