Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.02;
Скачать: CL | DM;

Вниз

Нужен хендл окна, на который плюхнули компонент   Найти похожие ветки 

 
Zilog ©   (2004-12-16 00:08) [0]

Делаю невизуальный копонент. В коде потребовалось использовать хендл окна, на который плюхнули компонент. Никак не могу его вытащить....  Application.Handle не подходит.
 
constructor TDesktopBar.Create(AOwner:TComponent);
begin
inherited Create(AOwner);

FHandle := ?????  <<< вот сюда бы мне его
RegisterBar;
end;


 
Gero ©   (2004-12-16 00:13) [1]

Для каких целей?


 
jack128 ©   (2004-12-16 00:29) [2]

function TMyCoolComponent.GetParentHandle: THandle;
begin
 if Owner is TWinControl then
   Result := TWinControl(Owner)
 else
   Result := 0
end;


 
jack128 ©   (2004-12-16 00:30) [3]

Блин, сорри, естественно
if Owner is TWinControl then
  Result := TWinControl(Owner).Handle


 
Gero ©   (2004-12-16 00:31) [4]


> jack128 ©   (16.12.04 00:29)

MyCoolPopup := TPopupMenu.Create(Form2.Button1);

Можно ли сказать, что MyCoolPopup "плюхнули" на Form2.Button1?


 
Zilog ©   (2004-12-16 00:42) [5]

2Gero
ну мне с размерчиком приложения необходимо поиграть, с его расположением, обработать кой-какие адресованные ему месседжи.


 
Zilog ©   (2004-12-16 00:43) [6]

2jack128
у меня Owner типа TComponent - и мне кажется твой пример работать не будет


 
Zilog ©   (2004-12-16 00:46) [7]

я пытаюсь подсмотреть в стандартном unit AppEvnts (с закладки Additional), я так полагаю этот компонент обязан как то быть связанным с окном, приютившим его. Пока не получается....


 
jack128 ©   (2004-12-16 01:00) [8]

Gero ©   (16.12.04 0:31) [4]
Ну во первых это ты в рантайм создаешь меню. Так что о плюхании не может идти и речи. А дезин тайм ты такого не сможешь устроить.
Zilog ©   (16.12.04 0:42) [5]
ну мне с размерчиком приложения

Хм.  То есть кинул твой компонент на форму и приложение стало занитьь не 600КБ, а 500 ?  Круто.  ;-)
Zilog ©   (16.12.04 0:42) [5]
с его расположением

Что такое "расположение приложения"?

Zilog ©   (16.12.04 0:46) [7]
так полагаю этот компонент обязан как то быть связанным с окном, приютившим его

Никак он не связан с окном его приютившим.  Он данально назначает свои обработчики событий глобальной переменной Application.


 
Zilog ©   (2004-12-16 01:04) [9]

размер - высота и ширина :)
распложение - координаты х,у

>>Он данально назначает свои обработчики событий глобальной пременной Application.

хех, а как же он обрабатывает события ИМЕННО НУЖНОГО окна?
эта переменная мне помочь не может?


 
jack128 ©   (2004-12-16 01:06) [10]

jack128 ©   (16.12.04 1:00) [8]
> Ну во первых
Это можно убрать. На "во вторых" мыслей не хватило. Но наверника челу нужно именно это

Zilog ©   (16.12.04 0:43) [6]
у меня Owner типа TComponent - и мне кажется твой пример работать не будет

Мдя. Это ты на основании этого constructor TDesktopBar.Create(AOwner:TComponent); вывел?  Ну-ну...


 
jack128 ©   (2004-12-16 01:08) [11]

Zilog ©   (16.12.04 1:04) [9]
как же он обрабатывает события ИМЕННО НУЖНОГО окна?

Какого нужного окна? Ты вообще представляешь, что делает TApplicationEvents??
Zilog ©   (16.12.04 1:04) [9]
размер - высота и ширина :)
распложение - координаты х,у

Еще раз - что такое размер и расположение ПРИЛОЖЕНИЯ ?


 
Zilog ©   (2004-12-16 01:09) [12]

>>Мдя. Это ты на основании этого constructor TDesktopBar.Create(AOwner:TComponent); вывел?  Ну-ну...

уже осознал свою оплошность :)

так есть идеи, как поступить?


 
Zacho ©   (2004-12-16 01:11) [13]

Zilog ©   (16.12.04 0:43) [6]
у меня Owner типа TComponent


TForm тоже потомок TComponent
В случае "плюханья" компонента на форму его Owner"ом будет именно эта форма


 
Zilog ©   (2004-12-16 01:17) [14]

сенкс, вроде начинаю понимать!


 
Zilog ©   (2004-12-16 01:17) [15]

вот так вроде как работает
 FHandle := (Owner as TForm).Handle;


 
Zacho ©   (2004-12-16 01:34) [16]

Zilog ©   (16.12.04 1:17) [15]

Только желательно ещё предусмотреь (и как-то обработать) случаи, когда owner всё-таки не TForm, а то получишь exception в конструкторе.


 
Gero ©   (2004-12-16 08:11) [17]


> Zilog ©   (16.12.04 01:17)

[2]


 
Zilog ©   (2004-12-16 09:52) [18]

>>Только желательно ещё предусмотреь (и как-то обработать)
>>случаи, когда owner всё-таки не TForm, а то получишь exception
>>в конструкторе.

Я так понял Create компонента вызывается в двух случаях:
1) Design-time, в момент когда компонент плюхнулся на форму
2) при запуске приложения.

в обоих сучаях Owner тот что нужно. Откуда может случиться исключение?


 
TUser ©   (2004-12-16 10:39) [19]


> jack128

При чем тут Owner?


 
jack128 ©   (2004-12-16 10:53) [20]

Zilog ©   (16.12.04 9:52) [18]
Откуда может случиться исключение?

ЕСли компонент создатся в ран тайм. См [4]
TUser ©   (16.12.04 10:39) [19]
При чем тут Owner?

Я телепат в седьмом колене!!! :-)) Owner - это что нужно! ;-) Чел скорее всего делает компонент, манипулирующий формой, на которую его кинули.

2Zilog. Ты так и не ответил на
jack128 ©   (16.12.04 1:08) [11]
Еще раз - что такое размер и расположение ПРИЛОЖЕНИЯ ?


ЗЫ Учись граммотно формулировать вопросы. Из тебя информацию клещами нужно выдирать.


 
Zilog ©   (2004-12-16 10:58) [21]

>>jack128 ©   (16.12.04 01:08) [11]
1) приблизительно, знал бы - не спрашивал тут.
2) Top, Left, Width, Height. Так устроит?

>>jack128 ©   (16.12.04 10:53) [20]
>> Из тебя информацию клещами нужно выдирать.

Так ты же телепат? ;)


 
Reindeer Moss Eater ©   (2004-12-16 11:04) [22]

в обоих сучаях Owner тот что нужно. Откуда может случиться исключение?

Плюхни свой компонент на датамодуль и увидишь, что и откуда может случиться.


 
jack128 ©   (2004-12-16 11:31) [23]

Zilog ©   (16.12.04 10:58) [21]
2) Top, Left, Width, Height. Так устроит?


нет, не устроит. У ПРИЛОЖЕНИЯ нет ни ширины, ни длины, ни верхнего левого угла.


 
jack128 ©   (2004-12-16 11:31) [24]

jack128 ©   (16.12.04 11:31) [23]
нет ни ширины, ни высоты,


 
DiamondShark ©   (2004-12-16 11:36) [25]


> нет ни ширины, ни высоты,

и ложки тоже нет.


 
Zilog ©   (2004-12-16 11:37) [26]

>>jack128 ©   (16.12.04 11:31) [24]

у _прложения_ нет у форм есть.


 
Zilog ©   (2004-12-16 11:37) [27]

>> DiamondShark ©   (16.12.04 11:36) [25]

:D



Страницы: 1 вся ветка

Текущий архив: 2005.01.02;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.043 c
14-1102962094
AlterEgo of WondeRu
2004-12-13 21:21
2005.01.02
Почему аська находит только 20 контактов?


3-1101982342
msguns
2004-12-02 13:12
2005.01.02
ADO+MSAccess. Длинный запрос


14-1102575072
Чеширский_Кот
2004-12-09 09:51
2005.01.02
Байер (Германия) - Динамо (Киев) 3:0


14-1102770444
БезОбид
2004-12-11 16:07
2005.01.02
Мануал для "автошемы"


6-1097842342
Meff
2004-10-15 16:12
2005.01.02
Посылка файлов через сокет