Главная страница
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.016 c
2-1183538670
\/iKTOR
2007-07-04 12:44
2007.07.29
Прога работы с вероятностными выпадениями чисел (0 и 1)


15-1183225038
@!!ex
2007-06-30 21:37
2007.07.29
Можно ли вернуть РАБОЧУЮЮ, но не совместимой с железом видюху?


15-1182909688
koha
2007-06-27 06:01
2007.07.29
можно ли скаченные архивы форума подсунуть в DMClient?


15-1183128555
TIF
2007-06-29 18:49
2007.07.29
Регистрация программы


8-1161842358
delphim
2006-10-26 09:59
2007.07.29
доступ нескольких пользователей с данным