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

Вниз

Чтение свойст из строки Control.Property= xxxxxx   Найти похожие ветки 

 
Vladimir   (2003-09-18 11:24) [0]

Добрый день!
Хочу сделать чтение свойств из строк вида
Form1.Control1.Control2.Property= xxxxxx
Например:
Form1.Panel1.Button1.Caption=Открыть
Form1.Panel1.Button1.Left=10
Form1.Panel1.Button1.Top=20
т.е., форма Form1 в определенный момент присваивает кнопке Button1 с панели Panel1 следующие свойства:
caption "Открыть"
left 10
top 20
Добраться до Button1 достаточно просто - надо пройти по Controls формы и панели. Как быть с именами свойств?
Можно по-простому, что-то вроде
IF Property="Caption" THEN Button1.Caption = ...
IF Property="Left" THEN Button1.Left = ...
IF Property="Top" THEN Button1.Top = ...

Может кто знает более красивый способ?


 
Song ©   (2003-09-18 11:30) [1]

IF Controls[..] is TButton then TButton(Controls[...]).Caption:=...;


 
Vladimir   (2003-09-18 11:35) [2]

Вопрос в том, что я не знаю заранее Caption это или Top, Left, Color, а может что еще.


 
willys ©   (2003-09-18 13:18) [3]

можно делать так (Control - компонент, которому устанавливаем свойство, PropName - имя свойства, Value - значение):

uses TypInfo;
var
Control: TObject;
PropName: String;
Value: String;
PropInfo: PPropInfo;

...

PropInfo := GetPropInfo(Control.ClassInfo, PropName);
case PropInfo^.PropType^.Kind of
tkInteger:
SetOrdProp(Control, PropInfo, StrToInt(Value));
tkFloat:
SetFloatProp(Control, PropInfo, StrToFloat(Value));
tkString, tkLString, tkWString:
SetStrProp(Control, PropInfo, Value);
...
end;


 
Vladimir   (2003-09-18 14:06) [4]

Спасибо, willys!
Кажется, это то, что нужно. Буду пробовать.



Страницы: 1 вся ветка

Текущий архив: 2003.10.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
1-3916
WondeRu
2003-09-22 10:03
2003.10.02
Шо за месаг такой в winNTs 0B000h и 0B001h


7-4138
kedr
2003-07-21 13:35
2003.10.02
запись и воспроизведение звука используя буфер


3-3719
AlexWeb
2003-09-13 15:33
2003.10.02
Вопрос по UPPER...


1-3920
Renegate
2003-09-22 09:19
2003.10.02
ListView/FailGetAttr


1-3937
Sergiy
2003-09-21 13:45
2003.10.02
Блокировка перевода времени