Главная страница
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.49 MB
Время: 0.059 c
4-1104765228
Error202
2005-01-03 18:13
2005.02.20
Передача данных из IE в приложение


1-1107715358
Владимир Кладов
2005-02-06 21:42
2005.02.20
помогите "чайнику"


1-1107870852
Sergo
2005-02-08 16:54
2005.02.20
Создание Dll


3-1105803796
Fedor
2005-01-15 18:43
2005.02.20
Размер файла *.gdb


9-1096023740
<<BEAST>>
2004-09-24 15:02
2005.02.20
DOOM3