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

rareMax

Пользователи
  • Постов

    553
  • Зарегистрирован

  • Посещение

  • Победитель дней

    35

Весь контент rareMax

  1. У @Brovin Yaroslav не хватит места на хостинге для БД
  2. Документации, как таковой, нету. Но есть открытый исходный код + примеры. Проект переехал на bitBucket и даже обновляется
  3. А делфи мучать обязательно? Сохрани word как pdf'ку и открывай на телефоне
  4. Бага это. У меня, если приложение развернуто на весь экран и нажать на иконку в панеле задач - меняет состояние из (Разверное) в (Нормальные размеры), вместо того что бы принять состояние (Свернутое)
  5. (не знаю даже в какой ветке задать вопрос) нужно с помощью 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. Результат консоли:
  6. Целый раздел с примерчиками: http://fire-monkey.ru/forum/130-json/
  7. На сколько я понимаю это не совсем вопрос по делфи... но держи http://ru.stackoverflow.com/questions/284297/Вывести-из-базы-mysql-в-виде-json-массива
  8. В общем. Есть такой контрол: TSelection. Если нужно произвести операцию над каким-либо контролом(Назовем его MyControl) - помещаешь MyControl на TSelection . Делаешь TAlign у MyControl на весь клиент. Делаешь HitTest := False; В итоге можешь двигать и менять размеры контрола
  9. Есть, но пока что бета. Подлагивает даже на винде. https://github.com/Steema/TeeGrid Several classes are already provided to bind data to TeeGrid, like: TVirtualModeData in Tee.Grid.Data.Strings unit, to use OnGet and OnSet events (pure virtual mode) TVirtualData in Tee.Grid.Data.Rtti unit (for records, arrays, generic TList, collections etc) TVirtualDBData in Tee.Grid.Data.DB unit (for TDataSource and TDataSet) TBIGridData in BI.Grid.Data unit (for TeeBI TDataItem objects, ultra-fast big-data) TStringData in Tee.Grid.Data.Strings unit (to emulate a TStringGrid with "Cells[col,row]" property) Examples: // From a TDataSource or TDataSet: TeeGrid1.DataSource:= DataSource1; // <-- or any dataset, FDQuery1, ClientDataSet1 etc // From a TDataSource creating a class: TeeGrid1.Data:= TVirtualDBData.From(DataSource1); // From an array of records or classes: var MyData : Array of TPerson; ... fill array... TeeGrid1.Data:=TVirtualArrayData<TPerson>.Create(MyData); // From a TeeBI TDataItem: var MyData : TDataItem; MyData := TStore.Load('SQLite_Demo')['Products']; TeeGrid1.Data := TBIGridData.Create(TeeGrid1.Grid, MyData ); // Emulating a TStringGrid: var MyData : TStringsData; MyData:= TStringsData.Create(10, 1000); // 10 columns, 1000 rows TeeGrid1.Data:= MyData; ... MyData.Cells[4,50]:= 'Hello';
  10. @Brovin Yaroslav, Какой хороший человек делал реализацию TDialogService.InputQuery ? Первое в чем жутко накосячили - это метрика. Заголовок формы, если он больше ширины вопроса + ширины TEdit = будет обрезан. Размер текста в TEdit не влияет на ширину формы, и в итоге не видим полностью текст в TEdit(ок, это спорно, текст может быть слишком длинным, но 16 символов маловато будет). Если оставить вопрос пустым - под него все равно выделяется место. Между полем ввода и кнопками много места остается. Второе - этот диалог по-верх окон. Всех окон. То бишь - я сейчас пишу этот текст, основная программа под браузером, а InputQuery следит как я доношу на него. Третье. Самое печальное. Он такой упрямый - что кнопкой Cancel или через системное меню его не закрыть. Только если согласиться с ним, и нажать Ок. И собственно вопрос - зачем так сразу делать старую версию InputQuery устаревшей, если новая еще не обкатана как следует?
  11. https://github.com/dph2011/Object-Debugger-for-FireMonkey Ну а создавать в приложении нужные компоненты динамически думаю не сложно.
  12. https://www.youtube.com/user/EmbarcaderoTechNet и для совсем ленивых https://www.youtube.com/results?search_query=delphi+livebindings
  13. Я на данный момент работаю с БД через Marshmallow ORM - и вполне доволен. Возможно для вас это и не выход - тогда пытайтесь подружиться с ЛайвБайндингом. Там кстати вебинар скоро по нему будет))
  14. Ну LiveBinding"ом я бы не стал пользоваться, кроме как ради забавы. Слишком он уж сырой.
  15. AddObject используйте если нужно добавить несколько объектов в другой объект. Например несколько MyLabel_N в MyRect/ И считайте что FParent.AddObject(FChild) и FChild.Parent := FParent это просто синонимы
  16. А для чего написал его? Вполне достаточно указать Parent.
  17. Играйся, http://www.javadecompilers.com/apk
  18. Для мобильных девайсов я выбрал-бы ЛистВью - лучше группированные по логических блокам данные в ЛВ чем разбитые по столбцам. Но опять-же - зависит от вашей ситуации
  19. Как вариант - попробуйте поставить последнюю версию Инди - https://indy.fulgan.com , возможно пофиксили фиксики
  20. Открывал в Word 2k16. В этом файле как таковых переносов строки(#13#10) нет. Что-бы сделать перенос строки в документе - нужно добавить приблизительно такой код: <w:p w:rsidR="007F56FD" w:rsidRDefault="007F56FD"/> (на сколько я понял - это новый параграф.) Что бы написать текст в новом параграфе: <w:p w:rsidR="008B3AED" w:rsidRDefault="00F824AB"><w:r><w:t>%you_simple_text</w:t></w:r></w:p>
  21. "Создать" <> "Активировать". Стиль (Который нужно загрузить в TStyleBook) - создаете сами. Что бы понять как их создавать - можете воспользоваться курсами от @Brovin Yaroslav
  22. rareMax

    Segmentation fault

    Слева вверху студии во время отладки есть Стек вызовов методов. Сверху вниз выбирай нужный метод (2е нажатие ЛК Мыши) и студия будет показывать выбранный метод. Чуть ниже будет таблица Локальных переменных. Поочередно спускайся вниз по колл-стеку и проверяй состояния переменных.
×
×
  • Создать...