Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.063 c
15-1201722950
Марсер
2008-01-30 22:55
2008.03.09
Бесплатный прокси-сервер для обеспечения ноутбука Инетом


11-1185319893
Andrey_rus
2007-07-25 03:31
2008.03.09
Напутано с цветами clXXX


2-1202803897
abhtr
2008-02-12 11:11
2008.03.09
2 TMainMenu на одной форме?


8-1176853126
Adic
2007-04-18 03:38
2008.03.09
Быстрое определение цвета


4-1184247411
GTR86
2007-07-12 17:36
2008.03.09
Номер винчестера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский