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

Вниз

Получить значение заданных полей через 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
15-1183375146
White Barsik
2007-07-02 15:19
2007.07.29
LHA библиотека


2-1183704839
zapis
2007-07-06 10:53
2007.07.29
ADOConnection


15-1183453560
Bolek
2007-07-03 13:06
2007.07.29
документация по ParadoxSQL


5-1157964828
Степан Журавлев
2006-09-11 12:53
2007.07.29
Разработка наследника TScrollingWinControl


1-1179828671
DelphiLexx
2007-05-22 14:11
2007.07.29
Screen.Cursor не меняет вид курсора