Форум: "Основная";
Текущий архив: 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