Форум: "Основная";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
ВнизПолучить значение заданных полей через RTTI Найти похожие ветки
← →
pasha_golub © (2007-05-22 15:11) [0]Имеем код:
function Enum(AObject: TObject; APropName: string; ASubPropName: string = ""): string;
var
I: Integer;
FList: PPropList;
FCount, FSize: Integer;
begin
//FList := nil;
if AObject = nil then Exit;
if APropName = "" then Exit;
if AObject.ClassInfo <> nil then
begin
FCount := GetPropList(AObject.ClassInfo, tkProperties, nil);
FSize := FCount * SizeOf(Pointer);
GetMem(FList, FSize);
try
GetPropList(AObject.ClassInfo, tkProperties, FList);
if FCount > 0 then
for I := 0 to FCount - 1 do
If FList^[I].Name = APropName then
begin
case FList^[I].PropType^.Kind of
tkString, tkLString, tkWString, tkInteger, tkChar, tkFloat:
If ASubPropName = "" then
Result := VarAsType(GetPropValue(AObject, FList^[I].Name), varString);
tkClass:
Result := Enum(GetObjectProp(AObject, FList^[I].Name),ASubPropName);
end;
Break;
end;
finally
FreeMem(FList);
end;
end;
end;
Задача, например, получить значения свойств Memo1: TMemo :
Memo2.Lines.Text := Enum(Memo1,"Name",""); //в случае простого поля - работает
Memo2.Lines.Text := Enum(Memo1,"Lines","Text"); //в случае непростого поля - не работает
Memo2.Lines.Text := Enum(Memo1,"Font","Name"); //в случае непростого поля - работает
В чем разница между TFont & TStrings? Не могу понять.
← →
pasha_golub © (2007-05-22 15:17) [1]Неужели в том, что она public? :)
← →
pasha_golub © (2007-05-22 15:27) [2]Таки да... Lines не имеет published свойств посему для нее такой путь не приемлем.
Можно закрывать. Всем спасибо
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.071 c