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

Вниз

свойство в строку   Найти похожие ветки 

 
Klopan ©   (2006-01-23 21:29) [0]

как введя в edit строку типа form1.button1.left, определить значение свойства left?

в какую сторону копать? или все просто?


 
sniknik ©   (2006-01-23 21:37) [1]

копать надо в RTTI вестимо... и до обеда. ;о)


 
Klopan ©   (2006-01-23 22:05) [2]

спасибо большое! и правда до обеда :)


 
Джо ©   (2006-01-23 22:37) [3]

Принцип такой.


uses TypInfo;

function GetPropertyValue (FormName,ComponentName,PropertyName: string): Variant;

function FindForm (AFormName: string): TForm;
var
 I: Integer;
begin
 Result := nil;
 for I := 0 to Screen.FormCount-1 do
 if Screen.Forms[I].Name = AFormName then
 begin
   Result := Screen.Forms[I];
   Break
 end
end;

var
 I: Integer;
 Form: TForm;
 Component: TComponent;
begin
 Form := FindForm (FormName);
 if not Assigned (Form) then
   raise Exception.CreateFmt ("Form %s not found",[FormName]);

 Component := Form.FindComponent(ComponentName);
 if not Assigned (Component) then
   raise Exception.CreateFmt ("Component %s not found",[ComponentName]);

 if GetPropInfo(Component,PropertyName) = nil then
   raise Exception.CreateFmt ("Property %s not found",[PropertyName]);

 Result := GetPropValue (Component,PropertyName);
end;

///
/// Пример использования
///

procedure TForm1.Button1Click(Sender: TObject);
var
 EdLeft: Integer;
begin
 EdLeft := GetPropertyValue("Form1","Edit1","Left");
 ShowMessageFmt ("%d",[EdLeft]);
end;


В качестве домашнего задания предоставляю написать процедуру, преобразующую строку вида "FormName.ComponentName.PropertyName" в три отдельные строки, для того, чтобы скормит их моей функции :)



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

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

Наверх




Память: 0.47 MB
Время: 0.041 c
4-1133898889
Svit
2005-12-06 22:54
2006.02.26
Имитация нажатия мыши в флеш приложение


15-1138993695
Piter
2006-02-03 22:08
2006.02.26
Аналог функции Unescape в Delphi


4-1133954434
BVV
2005-12-07 14:20
2006.02.26
Перехват CreateProcess


15-1138741427
Michael5
2006-02-01 00:03
2006.02.26
Решил сделать сервер. Мне подарили материнку. Посмотрел: 486!


15-1139174677
kilonet
2006-02-06 00:24
2006.02.26
Инструмент для автоматической замены имён переменных