![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
доступ к рекорду в другом окне [D7, 2000, XP]
antonn © (2008-02-11 18:53:00)Вопросец :)
Создаю окна динамически, у каждого есть определенный record. Знаю хендл окна, как получить этот рекорд? :) кроме WM_COPYDATA, вообще без send/post.messages, возможно как то?
вообще даже так - есть класс, вот он и должен забрать рекорд у окна с известным хендлом.
antonn (2008-02-12 01:48:00) [21]
> Как тогда достать пойнтер? :)
завести еще один пойнтер указывающий на пойнтер на форме? %)
ketmar (2008-02-12 01:47:00) [22]>[8] antonn © (2008-02-12 01:29:00)
ты альтернативный по жизни, или умело притворяешься? фраза «генофонд знает» не сподвинула тебя сделать поиск по исходникам генофонда? убогим не подаю, обратись к другому кому.
---
Understanding is not required. Only obedience.
antonn (2008-02-12 01:44:00) [23]зарегистрированый класс формы :)
RegisterClasses([TFormI]);
создаю:
SomeComponent:TComponent;
begin
SomeComponent:=TComponentClass(FindClass('TFormI')).Create(Application);
ну можно к компонентам обращаться через (SomeComponent as TFormI), но дело в том, что в той форме есть TList, в который потом кладуться указатели на рекорды, которые мне нужно достать. Они там тоже формируются динамически :)
можно конечно завести pointer в public формы, а после заполнения Tlist указывать им на нужный рекорд, но как то некузяво. Как тогда достать пойнтер? :)
Германн (2008-02-12 01:38:00) [24]
> antonn © (12.02.08 01:29) [8]
>
>
Так все-таки форма или окно? Если форма, то нафига нужны какие-то левые хэндлы? При создании формы всегда под руками ссылка на созданный экземпляр класса. И уж эта ссылка будет валидной всегда, вплоть до уничтожения сего экземпляра.
А если окно, то тут много чего, Но у окон никогда не было никаких рекордов.
antonn (2008-02-12 01:29:00) [25]
> ketmar © (12.02.08 00:31) [7]
есть что сказать - говори :)
с удовольсвием выслушаю, где именно и при каких обстоятельствах он вызывается. то, что именно в генофонде - и так ясно.
ketmar (2008-02-12 00:31:00) [26]>[6] antonn © (2008-02-11 23:19:00)
в некоторых интересных местах. и в некоторых неочевидных. генофонд знает.
---
Understanding is not required. Only obedience.
antonn (2008-02-11 23:19:00) [27]а Recreate где во время работы вызывается?
у меня форма создается динамически, при закрытии она Action:=caFree; и по этому хендлу уже получать ничего не надо :)
ЗЫ форма создается и висит, изредка меняя width и height, меняя позицию в z-order и не содержит заголовка.
Leonid Troyanovsky (2008-02-11 22:20:00) [28]
> antonn © (11.02.08 19:22) [4]
> той формы, которой я знаю хендл? :)
Не переживай, он тоже меняется.
См., например, Recreate
--
Regards, LVT.
antonn (2008-02-11 19:22:00) [29]ну формы-формы :)
а можно вызвать процедуру у формы, в которую передать "пустой" такой же рекорд (ну через var), который заполнится на стороне той формы, которой я знаю хендл? :)
хранить ссылку на тот рекорд не могу, он там тоже динамически меняется. Та форам, соответственно, не знает о моем классе, на какой форме он находится и обратная связь пока только через WM_COPYDATA через главную форму проекта.
clickmaker (2008-02-11 19:22:00) [30]
> Знаю хендл окна, как получить этот рекорд?
если он туда записан SetWindowLong(Handle, GWL_USERDATA), то GetWindowLong
иначе никак. Хэндл и какой-то там рекорд ничего друг про друга не знают
Ins (2008-02-11 19:00:00) [31]А свойство-record нельзя сделать у класса?
Palladin (2008-02-11 18:56:00) [32]1 может все таки формы а не окна?
2 хранить ссылки на объекты форм и обращаться к ним по божески...