Главная страница
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.023 c
4-1104774029
Davinchi
2005-01-03 20:40
2005.02.20
Как заставить мою прогу не показывать себя на панели задач...


4-1105357078
Norny
2005-01-10 14:37
2005.02.20
Изменение обоев Рабочего стола


14-1106769065
Oddin
2005-01-26 22:51
2005.02.20
Потдержка скинов


14-1107100401
AG.Smit
2005-01-30 18:53
2005.02.20
Помогите, база данных не работает у тех, у кого нет Delphi


1-1107419773
Kazus
2005-02-03 11:36
2005.02.20
Борьба с "Подвисанием"