-
Постов
553 -
Зарегистрирован
-
Посещение
-
Победитель дней
35
Сообщения, опубликованные rareMax
-
-
-
10 часов назад, Barbanel сказал:
Скорее всего увас в конфиге IDE прописан флаг WAIT_2_SECONDS_BEFORE_FMX_STARTS. Уберите его - и проблема исчезнет.
Спасибо, помогло!
-
А делфи мучать обязательно? Сохрани word как pdf'ку и открывай на телефоне
-
-
(не знаю даже в какой ветке задать вопрос)
нужно с помощью 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.
Результат консоли:
ЦитатаLClass: TSomeType
LProp: property Phone: string
LAttr: DemoDataAttribute
Attr value: +1800764328
New.Phone: -
13 минут назад, Major сказал:
а как получившийся Json ответ распарсить? есть где-нить примерчик?
Целый раздел с примерчиками: http://fire-monkey.ru/forum/130-json/
-
На сколько я понимаю это не совсем вопрос по делфи... но держи
http://ru.stackoverflow.com/questions/284297/Вывести-из-базы-mysql-в-виде-json-массива
-
-
Есть, но пока что бета. Подлагивает даже на винде.
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';
-
-
@Brovin Yaroslav, Какой хороший человек делал реализацию TDialogService.InputQuery ?
Первое в чем жутко накосячили - это метрика. Заголовок формы, если он больше ширины вопроса + ширины TEdit = будет обрезан. Размер текста в TEdit не влияет на ширину формы, и в итоге не видим полностью текст в TEdit(ок, это спорно, текст может быть слишком длинным, но 16 символов маловато будет). Если оставить вопрос пустым - под него все равно выделяется место. Между полем ввода и кнопками много места остается.
Второе - этот диалог по-верх окон. Всех окон. То бишь - я сейчас пишу этот текст, основная программа под браузером, а InputQuery следит как я доношу на него.
Третье. Самое печальное. Он такой упрямый - что кнопкой Cancel или через системное меню его не закрыть. Только если согласиться с ним, и нажать Ок.
И собственно вопрос - зачем так сразу делать старую версию InputQuery устаревшей, если новая еще не обкатана как следует?
-
9 часов назад, Janex72 сказал:
property editor где у контролов своиство посмотреть/поменять.
https://github.com/dph2011/Object-Debugger-for-FireMonkey
Ну а создавать в приложении нужные компоненты динамически думаю не сложно.
-
4 минуты назад, Major сказал:
"там" - это где?
https://www.youtube.com/user/EmbarcaderoTechNet
и для совсем ленивых https://www.youtube.com/results?search_query=delphi+livebindings
-
-
Ну LiveBinding"ом я бы не стал пользоваться, кроме как ради забавы. Слишком он уж сырой.
-
Попробуй так
-
25 минут назад, Major сказал:
А зачем тогда существует AddObject ?
AddObject используйте если нужно добавить несколько объектов в другой объект. Например несколько MyLabel_N в MyRect/
И считайте что FParent.AddObject(FChild) и FChild.Parent := FParent это просто синонимы
-
58 минут назад, MaratBest сказал:
может нужно в поток сделать ?
Вы правы.
-
А для чего написал его? Вполне достаточно указать Parent.
-
-
-
Как вариант - попробуйте поставить последнюю версию Инди - https://indy.fulgan.com , возможно пофиксили фиксики
-
Открывал в 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>
-
"Создать" <> "Активировать".
Стиль (Который нужно загрузить в TStyleBook) - создаете сами. Что бы понять как их создавать - можете воспользоваться курсами от @Brovin Yaroslav
-
Слева вверху студии во время отладки есть Стек вызовов методов. Сверху вниз выбирай нужный метод (2е нажатие ЛК Мыши) и студия будет показывать выбранный метод. Чуть ниже будет таблица Локальных переменных. Поочередно спускайся вниз по колл-стеку и проверяй состояния переменных.
Телеграмм
в Предложения об организации форума
Опубликовано
У @Brovin Yaroslav не хватит места на хостинге для БД