Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.038 c
1-1107427514
GrayFace
2005-02-03 13:45
2005.02.20
Как лучше отучить "пищать" Edit и форму?


14-1106835258
Ega23
2005-01-27 17:14
2005.02.20
ААААААААААААААЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕЕ!!!!!!!!!!!!


14-1106902612
Antonn
2005-01-28 11:56
2005.02.20
Про мощные видяхи и хилые БП


1-1107870228
vvllaadd
2005-02-08 16:43
2005.02.20
В Rave Reports 5.0 вывожу несколько графиков :


1-1107513405
Хипалов
2005-02-04 13:36
2005.02.20
Аитачинг к процессу





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