Форум: "Основная";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
ВнизКак получить объект зная его дескриптор ? Найти похожие ветки
← →
_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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.011 c