Главная страница
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.026 c
3-3738
Владий
2003-09-11 12:30
2003.10.02
Возможно ли сделать таким образом - берется дата из поля


14-4074
Nik8.
2003-09-12 12:40
2003.10.02
Холодать стало :((


3-3737
Radionov Alexey
2003-09-12 08:41
2003.10.02
---|Ветка была без названия|---


1-3856
Брат
2003-09-19 09:53
2003.10.02
Как активизировать открытое дочернее окно?


11-3807
edi
2003-01-23 16:17
2003.10.02
TKOLTreeView