Вниз
Скачать: CL | DM;

Как узнать имя компонента в момент его создания?   Найти похожие ветки 

← →
ZENsan ©   (2008-04-23 16:29) [0]

Ситуация следующая:

Есть форма (TFormX). В ней два фрейма одного класса (TFrameX) с именами FrameA, FrameB. Все отлично до одного момента:

В конструкторе фреймов нужно узнать имя фрейма! Проблема в том, что фрейм ещё не назван в тот момент и имеет имя по умолчанию FrameX (без буквы T).

Мне это нужно, так как я исправляю баг в TJvFormPlacement. Так вот мне нужно зарезолвить путь до объекта - нужно имя, а оба фрейма возвращают одно и то же имя...

Предложите может что-нибудь, Мастера?


← →
Reindeer Moss Eater ©   (2008-04-23 16:41) [1]

name := "frame_on_form1_" + inttostr(componentcount);


← →
ZENsan ©   (2008-04-23 16:45) [2]

ho..
CompomentCount odinakovij... klassi zhe odinakovie


← →
Reindeer Moss Eater ©   (2008-04-23 16:46) [3]

Это каунт формы.


← →
ZENsan ©   (2008-04-23 16:51) [4]

name := "frame_on_form1_" + inttostr(componentcount);

Eta strochka v konstruktore frejma..
Dlja kazhdogo freima etot ComponentCount budet odinakovim..


← →
ZENsan ©   (2008-04-23 16:52) [5]

Nuzhni konkretno imena, potomu chto potom eti imenna perevodjatsja v objekti i k nim dostup osushetvljaetsja cherez imena.. a ne cherez chto-to drugoe.

Ja voobshe podozrevaju chto eto nevozmozhno.. v Jedi VCl formstorage imenno tak seichas i estj..


← →
Reindeer Moss Eater ©   (2008-04-23 16:52) [6]

Проблема завести переменную-счетчик  в модуле фрейма?


← →
ZENsan ©   (2008-04-23 16:53) [7]

Ja vrode poka reshil etu problemu, vizivaja proceduri nuzhnie iz formi, kotoraja soderzhit eti freimi... togda konechno vse putem... No interesnej bilo bi konechno universaljno.. No kak uznatj imja do InsertControl..


← →
Reindeer Moss Eater ©   (2008-04-23 16:54) [8]

зачем узнавать, если надо явно присваивать?


← →
ZENsan ©   (2008-04-23 16:54) [9]

Ti navernoe ne ponjal... esli imja komponenta FrameABC, to mi ne mozhem zapisivatj Fram1 ili Frame2... nado imenno FrameABC... potomu chto tolko togda potom mi smozhem po imeni naiti sootvetstvujushij objekt.


← →
ZENsan ©   (2008-04-23 16:56) [10]

V TJvFormStorage hranjatsja stroki tekstovie..

"Grid.Columns"#13#10
"Button1.Caption"

Komponent sohranjaet ih znachenija v storage, zatem kogda nado zagruzhaet iz storage. Dlja etogo juzaetsja RTTI.


← →
ZENsan ©   (2008-04-23 16:57) [11]

Tak vot esli neskoljko identichnih freimov, to nuzhno uznatj imja freima v kotorom etot Button ili grid...


← →
Reindeer Moss Eater ©   (2008-04-23 16:57) [12]

чума.....
сам создаешь, потом сам ищешь по имени, которое дал не ты.
борем трудности собой создаваемые?


← →
ZENsan ©   (2008-04-23 17:01) [13]

Удалено модератором


← →
ZENsan ©   (2008-04-23 17:02) [14]

Komponent, ne hranit nikakih pointerov, tolko puti po nih v tekstovo vide, a potom eti puti rezolvjatsja v konkretnie adresa i objekti cherez RTTI. RTTI nuzhno dlja property.


← →
Reindeer Moss Eater ©   (2008-04-23 17:07) [15]

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


← →
Восхищенный   (2008-04-23 20:27) [16]

> ZENsan ©   (23.04.08 16:29)  

> В конструкторе фреймов нужно узнать имя фрейма!
> Проблема в том, что фрейм ещё не назван в тот момент

Угу. А раз имени еще нет, то и узнать его нельзя.

В конструкторе - нельзя. А в Loaded - можно. И резолвить можно там же.


← →
zensan ©   (2008-04-23 21:49) [17]

А как мне фрейму добавить такое собитие... OnLoaded


← →
{RASkov} ©   (2008-04-23 21:55) [18]

> [17] zensan ©   (23.04.08 21:49)

Перекрыть protected метод TComponent"а procedure Loaded; virtual;


← →
ZENsan ©   (2008-04-23 21:57) [19]

Я же не интегрирую ето в свой фрейм, а в любой. У фрейма можно выжать только конструктор и деструктор...

Или ты думаесх оверрайд сделать процедуре Loaded?


← →
ZENsan ©   (2008-04-23 21:58) [20]

:)


← →
ZENsan ©   (2008-04-23 21:58) [21]

Ja pisal svoj post kogda tvoego {Raskov} message eshe ne bilo...


← →
ZENsan ©   (2008-04-23 21:59) [22]

Vot v principe problemu i reshili, spasibo, esli chto eshe vernusj..


← →
ZENsan ©   (2008-04-23 22:26) [23]

Эхх.. Повёлся я на ваши фишки...

Мне ж на Create надо узнавать имя....
Ну в designtime задаём параметры для етого TJvFormStorage.StoredProps.
И в случаях, если Active у него true - то при создании етого компонента(TJvFormStorage) нужно восстанавливать определённые свойства Ownera. Если вызывается после етого(вручную где-то), то все путем - можно Loaded override сделать или просто из формы вызывать (как я сеичас пока делаю) естесвенно что там всё универсально..обходится рекурсивноь нахдятся ети компоненти и вызываются restoreformplacement/saveofmrplacement.

Но чтобы компонент корректно функционировал с фреймами надо вот чё-то придумать как узнать реальное имя Ownera v constructor...


← →
sniknik ©   (2008-04-23 23:11) [24]

имена компонентам нужны только для режима разработки... задание имен в рантайм это происки "пиаршиков своих страниц", вываливают надуманную проблему и типа обсуждают, а на самом деле "светят" свою страницу...
не будет здесь такого.

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


← →
ZENsan ©   (2008-04-24 08:42) [25]

Ja smotrju ti bolvan na golovu "SNIKNIK"!!!

To chto tvoj IQ < 115 nikto ne somnevalsja...

I esli ti ne znaesh chto takoe Jedi Componenti... to sochustvuju tebe...

Otkuda takie barani berutsja...


← →
ZENsan ©   (2008-04-24 08:43) [26]

Удалено модератором
Примечание: Обсуждение модерирования


← →
ZENsan ©   (2008-04-24 08:44) [27]

I RTTI navernoe v borlande takie zhe lohi kak ja pridumivali da? "имена компонентам нужны только для режима разработки"...
Preklonjajusj pered vashimi umstvennimi sposobnostjami!!!


← →
ZENsan ©   (2008-04-24 08:50) [28]

A eshe i v profile napisano "Master delphi...".. visshee obrazovanie..Master..


← →
ZENsan ©   (2008-04-24 08:52) [29]

I esli ti umeesh chitatj s visshim obrazovanie. Mne ne zadanie imen nado a ego opredelenie.

Tak kak komponent nahoditsja v objekte. A Kogda tot objekt sozdaetsja, to on sozdaet vse komponenti, kotorie v nem nahodjatsja. I toljko potom Loaded vizivaetsja. V etom problema. Ja sprashival, ljudi predlagali chto-to..
No bez geniev ne oboshlosj..


← →
ZENsan ©   (2008-04-24 08:54) [30]

Spsibo takiem masteram, kak {RASkov} i Reindeer Moss Eater za predlozhennie idei.

No osoboe SPASIBO.... SHIKNIKU!!! The BEST of the BEST of the BEST!!! (Y)



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

Скачать: CL | DM;



Память: 0.51 MB
Время: 0.011 c
2-1209796997
NieL
2008-05-03 10:43
2008.05.25
API-функция извлечения рекомендуемых программ


8-1180607479
First
2007-05-31 14:31
2008.05.25
Vidio Проигрыватель


15-1208160747
@!!ex
2008-04-14 12:12
2008.05.25
Подскажите как сделать свой Linux Live CD


2-1209658341
programmer9090
2008-05-01 20:12
2008.05.25
Удаление выделеного текста в RichEdit


2-1209116239
Int23
2008-04-25 13:37
2008.05.25
Как скрыть названия у ярлычков в PageControl




   Наверх