rareMax

Пользователи
  • Публикации

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

  • Посещение

  • Days Won

    24

rareMax last won the day on 12 февраля

rareMax had the most liked content!

2 подписчика

О rareMax

  • Звание
    Продвинутый пользователь
  • День рождения 03.01.1995

Контакты

  • ICQ
    611110205
  • StackOverflow
    http://ru.stackoverflow.com/users/12119/ms301

Информация

  • Пол
    Мужчина
  • Город
    Мелитополь

Посетители профиля

2 138 просмотров профиля
  1. А делфи мучать обязательно? Сохрани word как pdf'ку и открывай на телефоне
  2. Бага это. У меня, если приложение развернуто на весь экран и нажать на иконку в панеле задач - меняет состояние из (Разверное) в (Нормальные размеры), вместо того что бы принять состояние (Свернутое)
  3. (не знаю даже в какой ветке задать вопрос) нужно с помощью 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. Результат консоли:
  4. Целый раздел с примерчиками: http://fire-monkey.ru/forum/130-json/
  5. На сколько я понимаю это не совсем вопрос по делфи... но держи http://ru.stackoverflow.com/questions/284297/Вывести-из-базы-mysql-в-виде-json-массива
  6. В общем. Есть такой контрол: TSelection. Если нужно произвести операцию над каким-либо контролом(Назовем его MyControl) - помещаешь MyControl на TSelection . Делаешь TAlign у MyControl на весь клиент. Делаешь HitTest := False; В итоге можешь двигать и менять размеры контрола
  7. Есть, но пока что бета. Подлагивает даже на винде. 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';
  8. @Brovin Yaroslav, Какой хороший человек делал реализацию TDialogService.InputQuery ? Первое в чем жутко накосячили - это метрика. Заголовок формы, если он больше ширины вопроса + ширины TEdit = будет обрезан. Размер текста в TEdit не влияет на ширину формы, и в итоге не видим полностью текст в TEdit(ок, это спорно, текст может быть слишком длинным, но 16 символов маловато будет). Если оставить вопрос пустым - под него все равно выделяется место. Между полем ввода и кнопками много места остается. Второе - этот диалог по-верх окон. Всех окон. То бишь - я сейчас пишу этот текст, основная программа под браузером, а InputQuery следит как я доношу на него. Третье. Самое печальное. Он такой упрямый - что кнопкой Cancel или через системное меню его не закрыть. Только если согласиться с ним, и нажать Ок. И собственно вопрос - зачем так сразу делать старую версию InputQuery устаревшей, если новая еще не обкатана как следует?
  9. https://github.com/dph2011/Object-Debugger-for-FireMonkey Ну а создавать в приложении нужные компоненты динамически думаю не сложно.
  10. https://www.youtube.com/user/EmbarcaderoTechNet и для совсем ленивых https://www.youtube.com/results?search_query=delphi+livebindings
  11. Убрал вес - добавил проблем)
  12. Я на данный момент работаю с БД через Marshmallow ORM - и вполне доволен. Возможно для вас это и не выход - тогда пытайтесь подружиться с ЛайвБайндингом. Там кстати вебинар скоро по нему будет))
  13. Ну LiveBinding"ом я бы не стал пользоваться, кроме как ради забавы. Слишком он уж сырой.
  14. AddObject используйте если нужно добавить несколько объектов в другой объект. Например несколько MyLabel_N в MyRect/ И считайте что FParent.AddObject(FChild) и FChild.Parent := FParent это просто синонимы