Форум: "Основная";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
Внизсвойство в строку Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.043 c