Форум: "Основная";
Текущий архив: 2005.01.02;
Скачать: [xml.tar.bz2];
Вниз
Нужен хендл окна, на который плюхнули компонент Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 3.223 c