Форум: "Основная";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
ВнизЧтение свойст из строки 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c