Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
ВнизКак узнать имя компонента в момент его создания? Найти похожие ветки
← →
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 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.006 c