Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.042 c
2-1183407477
Okolobaxa
2007-07-03 00:17
2007.07.29
Странная ошибка при выполнении


2-1183480740
Zablkon
2007-07-03 20:39
2007.07.29
Преобразование типов


2-1183627061
dwery
2007-07-05 13:17
2007.07.29
Как обновить запрос?


6-1166812433
Sanek_sd
2006-12-22 21:33
2007.07.29
Помогите советом как отправить ListBox1.Items


2-1183288977
>>DEATH<<
2007-07-01 15:22
2007.07.29
картинки и выдееие шрифта в текстовом поле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский