Главная страница
    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.036 c
1-1107333376
denis24
2005-02-02 11:36
2005.02.20
изменения размера шрифта при редактировании в stringgtide


14-1107338274
syte_ser78
2005-02-02 12:57
2005.02.20
блин!


14-1107272287
PIF
2005-02-01 18:38
2005.02.20
помогите разобраться с NetBios


4-1104314900
MAINUSER
2004-12-29 13:08
2005.02.20
Восстановление удалённых файлов


3-1104861881
Alex_S
2005-01-04 21:04
2005.02.20
Восстановление строк DBGrid после перезагрузки таблицы TQuery.





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