![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В качестве parent- а компонента рабочий стол [D2005, XP]
Kvendi © (2007-11-29 13:33:00)Собственно вопрос в названии как в качестве parent-а компонента указать рабочий стол, т.е. чтобы компонент распологался не на форме, а на рабочем столе ?
Однокамушкин (2007-12-02 21:20:00) [1]Контрол можно разместить в любом неVCL-ном окне, используя конструктор CreateParented вместо Create, только смысла в этом, как написано в Сергей М. © (29.11.07 14:52) [16], не будет... Контролы в VCL обмениваются со своими родителями кучей специфичных и стандартных нотификационных сообщений, а если родитель не посылает компоненту нужных сообщений и не обрабатывает его сообщения, то б ольшая часть функциональности компонента будет недоступна... Пробовали когда-нибудь вставить кнопку или комбобокс в StringGrid? Ни фига не работает, а всё потому, что в гриде переопределён обработчик нотификационных сообщений от дочерних окон, и переопределён неправильно
DmT (2007-12-01 16:05:00) [2]Panel1.Parent:=nil;
Panel1.ParentWindow:=GetDesktopWindow();
Amoeba (2007-11-29 15:05:00) [3]
> Kvendi (29.11.07 13:33)
>
> Собственно вопрос в названии как в качестве parent-а компонента
> указать рабочий стол, т.е. чтобы компонент распологался
> не на форме, а на рабочем столе ?
>
Извращенец!
clickmaker (2007-11-29 15:04:00) [4]
> [1] tesseract © (29.11.07 14:07)
> никак. Рабочий стол компонентом не являеться. Можно по handle
> окна создавать. Handle у рабочего стола 0.
GetDesktopWindow()
Сергей М. (2007-11-29 14:52:00) [5]
> Kvendi (29.11.07 13:33)
Расположить-то ты его может и расположишь, только вот работать он как положено не будер - родителю впарили пасынка, которого он знать не знает и ухаживать за ним не намерен.
Anatoly Podgoretsky (2007-11-29 14:45:00) [6]Ни каких CreateWindow в цитате, на которую я реагировал не видно. Ку?
homm (2007-11-29 14:24:00) [7]> [11] Anatoly Podgoretsky © (29.11.07 14:20)
> Не правда
Возможно у вас свой, особый взгляд на вещи. Уточню. «Кнопка, появлению кторой предшествовал вызов CreateWindow — тоже окно».
Anatoly Podgoretsky (2007-11-29 14:23:00) [8]
> Handle у рабочего стола 0.
У экрана, десктопов может быть много.
homm (2007-11-29 14:22:00) [9]> [10] Kvendi (29.11.07 14:19)
> [Pascal Error] Unit29.pas(29): E2362 Cannot access protected
> symbol TControl.SetParent
Не юзай TControl.SetParent. Нужный тебе SetParent лежит в модуле windows.pas.
Anatoly Podgoretsky (2007-11-29 14:20:00) [10]
> «Кнопка — тоже окно!»
Не правда
Kvendi (2007-11-29 14:19:00) [11][Pascal Error] Unit29.pas(29): E2362 Cannot access protected symbol TControl.SetParent
homm (2007-11-29 14:18:00) [12]> [0] Kvendi (29.11.07 13:33)
> как в качестве parent-а компонента указать рабочий стол
> [1] tesseract © (29.11.07 14:07)
> Handle у рабочего стола 0.
SetParent(Handle, 0);
Anatoly Podgoretsky (2007-11-29 14:18:00) [13]> Kvendi (29.11.2007 14:14:04) [4]
Компонет вообще нельзя разместить, он же может быть не визуальный и размещать можно только на наследнике TWinControl и подобном. Рабочий стол не компонент типа TWinControl
Kvendi (2007-11-29 14:16:00) [14]
> Нет, возможно.
Ок, тогда соответственно напращивается второй вопрос: как ?
homm (2007-11-29 14:16:00) [15]«Кнопка — тоже окно!»
© шокирующая новичков истина
homm (2007-11-29 14:15:00) [16]> [4] Kvendi (29.11.07 14:14)
> ок, т.е. правильный ответ что невозможно разместить свой
> компонент вместо формы на рабочем столе ?
Нет, возможно.
> [1] tesseract © (29.11.07 14:07)
> Handle у рабочего стола 0.
Kvendi (2007-11-29 14:14:00) [17]ок, т.е. правильный ответ что невозможно разместить свой компонент вместо формы на рабочем столе ?
Anatoly Podgoretsky (2007-11-29 14:13:00) [18]> Kvendi (29.11.2007 14:11:02) [2]
ListView тоже не компонент, вот TListView компонент, но это не рабочий стол.
Kvendi (2007-11-29 14:11:00) [19]а как же ListView который собственно и представляет из себя рабочий стол ?
tesseract (2007-11-29 14:07:00) [20]никак. Рабочий стол компонентом не являеться. Можно по handle окна создавать. Handle у рабочего стола 0.