Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

доступ к рекорду в другом окне [D7, 2000, XP]


Страницы:   1 2

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 хранить ссылки на объекты форм и обращаться к ним по божески...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо