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

Вниз

Как получить объект зная его дескриптор ?   Найти похожие ветки 

 
_Narayan_   (2003-10-23 11:34) [0]

Как получить объект зная его дескриптор ?
т.е. например.

...
var m: TMenu;
...
If ( ??? is TMenu) Then m:=( ??? as TMenu);
...

где ??? - функция принимающая дескриптор


 
Polevi ©   (2003-10-23 11:36) [1]

плохо представляешь что такое дескриптор, у тебя это экземпляр типа


 
Smithson ©   (2003-10-23 11:48) [2]

Никак.
Вернее, то что ты хочешь делается-то просто m.Handle := ???;
Но тут начинаются разные грабли... Объекты Windows (описываемые descriptors) и классы VLC совсем не одно и тоже...


 
_Narayan_   (2003-10-23 12:12) [3]

2 Polevi

Прошу прощения, может я и плохо представляю, но в каком месте у меня экземпляр объекта ?

??? - это нужная мне функция, которую я представляю так:

function ObjByHandle(Handle: THandle): TObject;

Нуивот. Есть такая или нет ?


 
Zacho ©   (2003-10-23 12:17) [4]


> _Narayan_ (23.10.03 12:12) [3]

Нет и быть не может, поскольку у TObject нет Handle


 
Polevi ©   (2003-10-23 12:18) [5]

THabdle - объект ОС, TObject - объект VCL


 
_Narayan_   (2003-10-23 12:26) [6]

Ну хорошо. Тогда так.
Путсь у меня на форме есть десять кнопок(1).
И есть у меня какой-то там дескриптор(2).
Допустим этот дескриптор(2) является дескиптором одной из десяти кнопок(1).
Тогда как мне узнать какой из них ?


 
REA ©   (2003-10-23 12:29) [7]

А зачем? У кнопки есть свойство Tag - можешь считать его дескриптором.


 
KSergey ©   (2003-10-23 12:32) [8]

[6] _Narayan_ (23.10.03 12:26)
И есть у меня какой-то там дескриптор(2).


Покажи откуда он взялся и скажи, а не проще ли вместо этого "дескриптора" сохранить ссылку на экземпляр объекта?


 
_Narayan_   (2003-10-23 12:39) [9]

2 KSergey
В том-то и замута, что взялся он из далека.
Вобщем он просто есть и всё.


 
Zacho ©   (2003-10-23 12:50) [10]


> _Narayan_ (23.10.03 12:39) [9]

Ну напиши функцию, к-рая будет переберать все компоненты (на форме или где еще), и если у объекта вообще есть св-во Handle (т.е если он потомок от TWinControl) - сравнивать с нужным.


 
KSergey ©   (2003-10-23 13:58) [11]

[9] _Narayan_ (23.10.03 12:39)
В том-то и замута, что взялся он из далека.


Издалека, но, я надеюсь, хотя бы это компонент твоего приложения, а не из чужого приложения хендл?


 
_Narayan_   (2003-10-23 14:07) [12]

2 KSergey
Точно моего, но хотелось бы не это здесь обсудить


 
Skier ©   (2003-10-23 14:09) [13]


> Как получить объект зная его дескриптор ?


function FindControl(Handle: HWnd): TWinControl; ?


 
_Narayan_   (2003-10-23 14:40) [14]

2 Skier

Большое спасибо, это то что нужно.
Странно, но до вас меня тут убеждали что это чушь несусветная.


 
Skier ©   (2003-10-23 14:44) [15]

>_Narayan_ (23.10.03 14:40) [14]

> Странно, но до вас меня тут убеждали что это чушь несусветная.

Это потому что код следующий за твоим вопросом не соответствует самому вопросу, FindControl возвращает оконный компонент, а у тебя TMenu. TMenu не является потомком TWinControl !


 
_Narayan_   (2003-10-24 06:07) [16]

Похоже в случае с меню придётся воспользоваться
Zacho © (23.10.03 12:50) [10]
Зато с кнопками работает.


 
Юрий Зотов ©   (2003-10-24 09:33) [17]

> _Narayan_ (24.10.03 06:07) [16]

> Похоже в случае с меню придётся воспользоваться
> Zacho © (23.10.03 12:50) [10]
> Зато с кнопками работает.

Знаете, после таких слов я бы все же ОЧЕНЬ посоветовал Вам разобраться, что означают такие ПРИНЦИПИАЛЬНЫЕ понятия, как окно, TComponent, TControl, TWinControl и TGraphicControl. А также с тем, что такое дескриптор и какими они бывают.

Конечно, дело Ваше, но если не хотите повторения подобных "проблем", то нужно все же понять эти вещи. Тем более, что они совсем несложные.


 
_Narayan_   (2003-10-24 10:36) [18]

2 Юрий Зотов
Непременно разберусь. Я в полной мере понимаю важность этих понятий.



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

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

Наверх




Память: 0.5 MB
Время: 0.015 c
1-8485
demon88
2003-10-24 00:14
2003.11.03
Файлы!


14-8664
VID
2003-10-13 15:17
2003.11.03
ASDSee 6.0, Norton Utilities 2002 6.0


7-8705
OlegV
2003-08-25 15:18
2003.11.03
Копирование файлов


14-8582
Rouse_
2003-10-15 21:39
2003.11.03
Ммм да. От алисы с косой челкой до моряка....


14-8656
real_qwerty
2003-10-14 13:31
2003.11.03
Счастливые билеты