Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.008 c
2-1209657059
VirEx
2008-05-01 19:50
2008.05.25
Математика


4-1188981076
dzr_gregory
2007-09-05 12:31
2008.05.25
Windows 2003 сервер терминалов и Delphi


2-1209717817
holodok
2008-05-02 12:43
2008.05.25
Цикл


15-1208102997
power on
2008-04-13 20:09
2008.05.25
Кто слушает Epica и Kamelot посоветуют что-нибудь ещё?


2-1209742904
dest81
2008-05-02 19:41
2008.05.25
FireBird





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский