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

Вниз

доступ к рекорду в другом окне   Найти похожие ветки 

 
antonn ©   (2008-02-11 18:53) [0]

Вопросец :)
Создаю окна динамически, у каждого есть определенный record. Знаю хендл окна, как получить этот рекорд? :) кроме WM_COPYDATA, вообще без send/post.messages, возможно как то?
вообще даже так - есть класс, вот он и должен забрать рекорд у окна с известным хендлом.


 
Palladin ©   (2008-02-11 18:56) [1]

1 может все таки формы а не окна?
2 хранить ссылки на объекты форм и обращаться к ним по божески...


 
Ins ©   (2008-02-11 19:00) [2]

А свойство-record нельзя сделать у класса?


 
clickmaker ©   (2008-02-11 19:22) [3]


> Знаю хендл окна, как получить этот рекорд?

если он туда записан SetWindowLong(Handle, GWL_USERDATA), то GetWindowLong
иначе никак. Хэндл и какой-то там рекорд ничего друг про друга не знают


 
antonn ©   (2008-02-11 19:22) [4]

ну формы-формы :)
а можно вызвать процедуру у формы, в которую передать "пустой" такой же рекорд (ну через var), который заполнится на стороне той формы, которой я знаю хендл? :)
хранить ссылку на тот рекорд не могу, он там тоже динамически меняется. Та форам, соответственно, не знает о моем классе, на какой форме он находится и обратная связь пока только через WM_COPYDATA через главную форму проекта.


 
Leonid Troyanovsky ©   (2008-02-11 22:20) [5]


> antonn ©   (11.02.08 19:22) [4]

> той формы, которой я знаю хендл? :)

Не переживай, он тоже меняется.
См., например, Recreate

--
Regards, LVT.


 
antonn ©   (2008-02-11 23:19) [6]

а Recreate где во время работы вызывается?

у меня форма создается динамически, при закрытии она Action:=caFree; и по этому хендлу уже получать ничего не надо :)

ЗЫ форма создается и висит, изредка меняя width и height, меняя позицию в z-order и не содержит заголовка.


 
ketmar ©   (2008-02-12 00:31) [7]

>[6] antonn © (2008-02-11 23:19:00)
в некоторых интересных местах. и в некоторых неочевидных. генофонд знает.

---
Understanding is not required. Only obedience.


 
antonn ©   (2008-02-12 01:29) [8]


> ketmar ©   (12.02.08 00:31) [7]

есть что сказать - говори :)
с удовольсвием выслушаю, где именно и при каких обстоятельствах он вызывается. то, что именно в генофонде - и так ясно.


 
Германн ©   (2008-02-12 01:38) [9]


> antonn ©   (12.02.08 01:29) [8]
>
>

Так все-таки форма или окно? Если форма, то нафига нужны какие-то левые хэндлы? При создании формы всегда под руками ссылка на созданный экземпляр класса. И уж эта ссылка будет валидной всегда, вплоть до уничтожения сего экземпляра.
А если окно, то тут много чего, Но у окон никогда не было никаких рекордов.


 
antonn ©   (2008-02-12 01:44) [10]

зарегистрированый класс формы :)
RegisterClasses([TFormI]);

создаю:
SomeComponent:TComponent;
begin
SomeComponent:=TComponentClass(FindClass("TFormI")).Create(Application);


ну можно к компонентам обращаться через (SomeComponent as TFormI), но дело в том, что в той форме есть TList, в который потом кладуться указатели на рекорды, которые мне нужно достать. Они там тоже формируются динамически :)
можно конечно завести pointer в public формы, а после заполнения Tlist указывать им на нужный рекорд, но как то некузяво. Как тогда достать пойнтер? :)


 
ketmar ©   (2008-02-12 01:47) [11]

>[8] antonn © (2008-02-12 01:29:00)
ты альтернативный по жизни, или умело притворяешься? фраза «генофонд знает» не сподвинула тебя сделать поиск по исходникам генофонда? убогим не подаю, обратись к другому кому.

---
Understanding is not required. Only obedience.


 
antonn ©   (2008-02-12 01:48) [12]


> Как тогда достать пойнтер? :)

завести еще один пойнтер указывающий на пойнтер на форме? %)


 
antonn ©   (2008-02-12 01:49) [13]


> ketmar ©   (12.02.08 01:47) [11]

форум - это место общения, обсуждения. На ВСЕ вопросы "генофонд знает".
повторюсь - "есть что сказать - скажи".


 
ketmar ©   (2008-02-12 01:57) [14]

>[13] antonn © (2008-02-12 01:49:00)
я уже сказал. ты отчего-то считаешь, что все вокруг тебе должны. уверяю тебя — это не так. я тебе дал достаточно информации, чтобы ты раскопал интересующее сам. не хочешь? тогда напиши сумму, которую готов мне заплатить за удовлетворение твоего любопытства. работа — она забесплатно делается редко.

---
Understanding is not required. Only obedience.


 
antonn ©   (2008-02-12 02:04) [15]

на информацию мне намекнул Leonid Troyanovsky. Хотя и известно, что хендл "не железный", спасибо ему что сказал мне об этом совершенно цивилизовано, не ткнув лицом в грязь и тп :)
если ты считаешь, что мы тебе здесь должны - это не так. ты не обязан отвечать. только если тебя там не пытают утюгами %)

> работа — она забесплатно делается редко.

за платно делается качественная работа, а посмотрев отношение к качественной работе в соседней ветке я вижу, что платить не нужно будет, зачем, если код придется пересматривать потом весь, чтобы небыло сюрпризов "а надо было делать вот так!" :) (скока запятых! :))


 
Германн ©   (2008-02-12 02:06) [16]


> antonn ©   (12.02.08 01:44) [10]
>
> зарегистрированый класс формы :)
> RegisterClasses([TFormI]);
>
> создаю:
> SomeComponent:TComponent;
> begin
> SomeComponent:=TComponentClass(FindClass("TFormI")).Create(Application);
>
>
> ну можно к компонентам обращаться через (SomeComponent as
> TFormI), но дело в том, что в той форме есть TList, в который
> потом кладуться указатели на рекорды, которые мне нужно
> достать.

КулХацкер? Только не ври! В угол поставлю!
:)


 
antonn ©   (2008-02-12 02:07) [17]


> Германн ©   (12.02.08 02:06) [16]
>
> КулХацкер? Только не ври! В угол поставлю!
> :)

не бейте дяденька! :)

там типа своего ВЦЛ, хотели сделать более универсальный "креатор объектов".


 
antonn ©   (2008-02-12 02:09) [18]

хм.. а если я знаю класс окна и его хендл, могу я сотворить что то подобное?
(Getwindowhandle(hwdl) as TFormI).record? есть что нибудь подобное типа Getwindowhandle?


 
Германн ©   (2008-02-12 02:19) [19]


> там типа своего ВЦЛ, хотели сделать более универсальный
> "креатор объектов".
>

Где там? В тьмутаракани? Так ведь "там" уже было:
"Сквозь слёзы, застилающие глаза, я увидел, как Кристобаль Хозевич, зловеще
играя тростью, приблизился к Лавру Федотовичу и приказал ему сквозь зубы:
- Пшел вон.
..."


 
ketmar ©   (2008-02-12 02:27) [20]

>[15] antonn © (2008-02-12 02:04:00)
>за платно делается качественная работа

на качественную у тебя денег не хватит. учитывая уровень клиента — это будет очень дорого.

---
Understanding is not required. Only obedience.


 
antonn ©   (2008-02-12 12:21) [21]


> Где там?

там, где нет отношения к сабжу :)
код создания я показал, а как оно выглядит и называется не важно, в общем то...


 
Ins ©   (2008-02-12 12:45) [22]


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

Есть, только не пойму зачем оно тебе? Чем не подходит [9]? По поводу получения ссылки по хэндлу - см. FindControl


 
Leonid Troyanovsky ©   (2008-02-12 12:47) [23]


> antonn ©   (12.02.08 01:44) [10]

> потом кладуться указатели на рекорды, которые мне нужно
> достать. Они там тоже формируются динамически :)

SetProp, скажем, в перекрытом CreateWnd.
А, во-ще-то, сделать той форме нужное свойство или
метод доступа.

--
Regards, LVT.


 
antonn ©   (2008-02-12 12:50) [24]


> Ins ©   (12.02.08 12:45) [22]

у меня хранятся только хендлы, ссылок на экземпляры класов не хранятся.


> По поводу получения ссылки по хэндлу - см. FindControl

блин )))) спасибо :)


 
Ins ©   (2008-02-12 12:53) [25]


> у меня хранятся только хендлы, ссылок на экземпляры класов
> не хранятся.

Вот я этого и не пойму. Почему бы не сделать наоборот?


 
antonn ©   (2008-02-12 13:08) [26]

потому что оно уже есть, и никто мне не даст переделывать. да и не хочется, там пол ядра переколбасить надо будет...


 
Ins ©   (2008-02-12 13:10) [27]


> antonn ©   (12.02.08 13:08) [26]


Аааа, тогда ясно :) Скажу даже больше, как я тебя понимаю! :-D


 
ketmar ©   (2008-02-12 13:24) [28]

>[24] antonn © (2008-02-12 12:50:00)
>у меня хранятся только хендлы, ссылок на экземпляры класов не хранятся.

обалдеть! дайте две!

---
Understanding is not required. Only obedience.


 
antonn ©   (2008-02-12 13:27) [29]


> ketmar ©   (12.02.08 13:24) [28]
>
> обалдеть! дайте две!

сначала заработай %))


 
ketmar ©   (2008-02-12 13:32) [30]

>[29] antonn © (2008-02-12 13:27:00)
на что? на гуано, которое даже спроектировать нормально не могли? опять же у вас денег не хватит доплатить мне, чтобы я это хотя бы взял, я уж не говорю «использовал».

---
Understanding is not required. Only obedience.


 
antonn ©   (2008-02-12 13:38) [31]

да ладно, не бушуй, я там смайлики, если что, поставил :)
у слона все равно и длиннее и толще %)


 
ketmar ©   (2008-02-12 13:59) [32]

>[31] antonn © (2008-02-12 13:38:00)
если я не ставлю смайлов — это вовсе не значит, что я серьэёзен, как китайский император.

---
Understanding is not required. Only obedience.



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

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

Наверх




Память: 0.55 MB
Время: 0.016 c
8-1176485104
Veter
2007-04-13 21:25
2008.03.09
Массив изображений


11-1184499935
Lex1
2007-07-15 15:45
2008.03.09
KOL поддерживает регулярные выражения?


15-1201810312
@!!ex
2008-01-31 23:11
2008.03.09
Virtual Desktop Manager - release


15-1201992664
ICQ
2008-02-03 01:51
2008.03.09
Время молчания клиетна


3-1192802734
Vendict
2007-10-19 18:05
2008.03.09
создание DNS для Oracle