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

Вниз

TComponent, а как "детей" определить?   Найти похожие ветки 

 
Arbiter ©   (2005-02-03 11:08) [0]

Появилась необходимость сделать автоматически формирующийся INI файл, куда будут записаны значения Caption, Text и др. значения компонентов размещённых в программе.
Всё дело встало когда возник вопрос:"Получил я компонент (TComponent), узнал что это потомок TButton, а как свойства выдрать?"


 
Ega23 ©   (2005-02-03 11:12) [1]

Получил я компонент (TComponent), узнал что это потомок TButton,

Ничего не путаешь?

По сабжу:

for i:=0 to Form1.ControlCount-1 do
begin
 WriteLn(F, Form1.Controls[i].Caption); // за Caption не уверен, у некоторых в protected может быть вынесено
 WriteLn(F, Form1.Controls[i].Name);
 ......
end;



 
Digitman ©   (2005-02-03 11:16) [2]

если интересуют лишь заранее известные тебе заведомо существующие св-ва (public или published они - неважно в дан.случае), то прочитать, например, то же св-во TButton.Caption проще пареной репы :

TButton(SomeComponent).Caption - читаем св-во Caption


 
Александр Иванов ©   (2005-02-03 11:16) [3]

Ega23 ©   (03.02.05 11:12) [1]
WriteLn(F, Form1.Controls[i].Caption); Уверен?


 
Александр Иванов ©   (2005-02-03 11:17) [4]

Александр Иванов ©   (03.02.05 11:16) [3]
Да, не заметил коммент, приведения нужно.


 
Ega23 ©   (2005-02-03 11:18) [5]

WriteLn(F, Form1.Controls[i].Caption); Уверен?

Нет, конечно. Если захочет - разберётся куда и что писать...


 
asafr ©   (2005-02-03 11:23) [6]


var
Ini:TIniFile;
i:integer;
begin
Ini:=TIniFile.Create(ChangeFileExt( Application.ExeName,".INI"));
for i:=0 to Form1.ControlCount-1 do
if (Form1.Controls[i] is TButtonChild) then
 begin
 Ini.WriteString("PathBase","PathBase",(Form1.Controls[i] as TButtonChild).Caption);
 Ini.WriteString("PathBase","PathBase",(Form1.Controls[i] as TButtonChild).Name);
 end;
Ini.Free
end;


 
Александр Иванов ©   (2005-02-03 11:23) [7]

Ega23 ©   (03.02.05 11:18) [5]
Он компилироваться не будет.


 
asafr ©   (2005-02-03 11:24) [8]

PathBase - это просто название, которое м.б. любым... Просто тупо скопировал...


 
Ega23 ©   (2005-02-03 11:55) [9]

2 Александр Иванов ©   (03.02.05 11:23) [7]
Он компилироваться не будет.

Да я прямо тут набирал, по-памяти. Сейчас посмотрел, действительно TControl.Caption в protected-секции сидит. Ну, тогда явное приведение потомков от TControl надо.


 
Erik1 ©   (2005-02-03 12:12) [10]

PropInfo := TypInfo.GetPropInfo(Control.ClassInfo, "Caption");
if Assigned(PropInfo) and Assigned(PropInfo.GetProc) then
 GetOrdProp(Control, PropInfo, ....)
Вполне надежный метод, учитывая, что нужныые свойства находятся в published.



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

Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.049 c
1-1107275325
pablo
2005-02-01 19:28
2005.02.20
Декомпелятор дельфи-EXE


10-1084259585
13-Drakosha
2004-05-11 11:13
2005.02.20
Настройка DCOM...


14-1107345598
Луарвик
2005-02-02 14:59
2005.02.20
Самый крупный faq... Где он???????


9-1100536487
Kobik
2004-11-15 19:34
2005.02.20
Диздок


3-1106054433
zunder
2005-01-18 16:20
2005.02.20
DBGrid с поддержкой перемещения записей(строк)





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