Перейти к содержанию
Fire Monkey от А до Я

Поиск сообщества

Показаны результаты для тегов 'rtti'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
    • Android
    • iOS
    • OSX
    • Windows
    • Windows Phone
    • Linux
  • Вопросы по использованию RAD Studio
    • Лицензирование
    • Сборка проектов
    • Multi-Device Designer
    • Редактор кода
    • Вопросы
  • Обучение
    • Основная информация
    • Вопросы
    • Отзывы
  • Поиск специалистов по FireMonkey
    • Консультации
    • Ищу подрядчика
  • Дополнительные ресурсы по FireMonkey
    • Сторонние компоненты
    • Приложения, написанные с использованием FireMonkey
    • Примеры
    • Руководства
    • Шаблоны
    • Статьи и заметки
    • Информация о версиях RAD Studio
    • Новости
  • Организация работы данного форума

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


StackOverflow


Защита от ботов


Город


Интересы

Найдено: 3 результата

  1. (не знаю даже в какой ветке задать вопрос) нужно с помощью rtti создать класс с предустановленными значениями. Значения берутся из атрибута. Все работает кажется нормально ровно до момента когда нужно внести значение в поле. Находит нужное свойство и получает значение атрибута верно. А вот запись не работает. Подскажите где не так делаю? program DemoGenerator; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, System.Rtti; Type // базовый аттрибут DemoDataAttribute = class(TCustomAttribute) private FGenerator: String; public constructor Create(Generator: String); published property Generator: string read FGenerator write FGenerator; end; // Обслуживаемый класс TSomeType = Class private fPhone: string; published [DemoData('+1800764328')] property Phone: string read fPhone write fPhone; End; // Управляющий класс TMegaSuperClass = Class Function Go<T: Class, constructor>: T; End; Procedure Test; var LMsc: TMegaSuperClass; New: TSomeType; Begin LMsc := TMegaSuperClass.Create; try New := LMsc.Go<TSomeType>; Writeln('New.Phone: ' + New.Phone); finally LMsc.Free; // New.Free; end; End; { DemoDataAttribute } constructor DemoDataAttribute.Create(Generator: String); begin FGenerator := Generator; end; { TMegaSuperClass } function TMegaSuperClass.Go<T>: T; var LContext: TRttiContext; LClass: TRttiInstanceType; LProp: TRttiProperty; LAttr: TCustomAttribute; LField: TRttiField; begin // Инициализируем РТТИ LContext := TRttiContext.Create; LClass := LContext.GetType(T) as TRttiInstanceType; Writeln('LClass: ' + LClass.ToString); // Результат Result := T.Create; for LProp in LClass.GetProperties do begin Writeln('LProp: ' + LProp.ToString); for LAttr in LProp.GetAttributes do begin Writeln('LAttr: ' + LAttr.ToString); if LAttr is DemoDataAttribute then Begin Writeln('Attr value: ' + DemoDataAttribute(LAttr).Generator); // Как записать значение? LProp.SetValue(@Result, DemoDataAttribute(LAttr).Generator); End; end; end; end; begin try { TODO -oUser -cConsole Main : Insert code here } Test; Readln; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. Результат консоли:
  2. Здравствуйте всем! Воодушевившись статьей Ярослава про подход "Control-Model-Presentation" применяю ,как в примере автозаполнение ,но передаю данные в StringList вопрос как правильно уничтожить данные чтобы освободить память от списка и чтобы память не текла //------------------------------------------------------Нужно ли явно разрушать объект? C учетом того что каждое новое заполнение ввода порождает новый список для автозаполнения Edit1.Model.Data['hint_list'].AsType<TSTringList>.Clear; Edit1.Model.Data['hint_list'].AsType<TSTringList>.DisposeOf; //? //--------------------------------------------------------------------------обнулять данные-> чтобы можно было проверить Edit1.Model.Data['hint_list'].IsEmpty Edit1.Model.Data['hint_list']:=Tvalue.Empty; или Edit1.Model.Data['hint_list'].Empty; Просьба сильно не пинать за вопрос так как после отпуска голова не варит совсем
  3. Выделение вопроса от Nixon в отдельную тему, В общем, я пытаюсь на основании этой статьи, сделать автоматический пересчет высоты объекта, в зависимости от содержания с учетом изображений и т.д. Для этого мне необходимо получить ширину и высоту конкретного текстового элемента в стиле. Как бы это не звучало странно, но ListBoxItem.StylesData['text.width'].asInteger постоянно возвращает нуль. Естественно пытаюсь получить размеры после того, как ListBoxItem создан и размещен на родителе. И ListBoxItem.StylesData['text.text'].asString не возвращает текст. Это может быть связано с тем что text это TActiveStyleTextObject ? RAD Studio XE6
×
×
  • Создать...