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

Error

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

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

  • Посещение

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

    8

Активность репутации

  1. Like
    Error получил реакцию от Kitty в [Статья] Fire-Monkey help and tips   
    Ссылка: https://habrahabr.ru/post/317814/
    Автор: Пётр (Error)
    Описание:
    За годы существования фреймворк Fire-Monkey(FMX) претерпел множество изменений, и если с самого начала он был очень сырым и ненадежным, то сейчас это намного более стабильная и надежная платформа.
    Данная заметка представляет из себя сборник из нескольких полезных советов для разработчиков использующих данный фреймворк...
  2. Like
    Error получил реакцию от DimArt в [Статья] Fire-Monkey help and tips   
    Ссылка: https://habrahabr.ru/post/317814/
    Автор: Пётр (Error)
    Описание:
    За годы существования фреймворк Fire-Monkey(FMX) претерпел множество изменений, и если с самого начала он был очень сырым и ненадежным, то сейчас это намного более стабильная и надежная платформа.
    Данная заметка представляет из себя сборник из нескольких полезных советов для разработчиков использующих данный фреймворк...
  3. Like
    Error получил реакцию от Andrey Efimov в [Статья] Fire-Monkey help and tips   
    Ссылка: https://habrahabr.ru/post/317814/
    Автор: Пётр (Error)
    Описание:
    За годы существования фреймворк Fire-Monkey(FMX) претерпел множество изменений, и если с самого начала он был очень сырым и ненадежным, то сейчас это намного более стабильная и надежная платформа.
    Данная заметка представляет из себя сборник из нескольких полезных советов для разработчиков использующих данный фреймворк...
  4. Like
    Error получил реакцию от Равиль Зарипов (ZuBy) в Скоро Новый год! Эффект снега   
    Да, намного дешевле отрисовывать в пейнтбоксе самому.
  5. Like
    Error получил реакцию от rareMax в Скоро Новый год! Эффект снега   
    Да, намного дешевле отрисовывать в пейнтбоксе самому.
  6. Like
    Error отреагировална Dmitry Sobko в Проблемы с отрисовкой элементов формы   
    Спасибо большое ZuBy и enatechno за ответы. Так как на текущий момент решение нужно было быстрое, я попробовал совет enatechno и все заработало! Но я уверен, что совет ZuBy тоже будет работать и обязательно позже так и сделаю. Действительно в коде будет проще ориентироваться.
    Прошу прощения, не знаю Ваших имен.
    Оба ответа лучшие. Но можно отметить только один. Отмечаю ответ enatechno, так как он сейчас у меня работает.
    Еще раз всем спасибо большое!
  7. Like
    Error получил реакцию от Равиль Зарипов (ZuBy) в PackagesGenerator для Delphi   
    https://github.com/errorcalc/PackagesGenerator/
    PackagesGenerator для Delphi

    Если вы пишете компоненты для Delphi, то вы знаете, как трудно поддерживать несколько версий Delphi. Обычно вы получаете много почти одинаковых dpk, dproj, groupproj файлов для разных версий Delphi,

    Пример:
    MyComponents_XE2.groupproj MyComponents_XE2.dpk MyComponents_XE2.dproj MyComponentsDesign_XE2.dpk MyComponentsDesign_XE2.dproj MyComponents_XE3.groupproj MyComponents_XE3.dpk MyComponents_XE3.dproj MyComponentsDesign_XE3.dpk MyComponentsDesign_XE3.dproj ... MyComponentsDesign_RX10Berlin.dproj
    Утомительно создавать эти файлы вручную, также вы можете совершить ошибки.

    ErrorSoft PackagesGenerator может решить эту проблему!
    PackagesGenerator генерирует необходимые файлы, делая необходимые внутренние изменения (LIBSUFFUX, contains ...).

    Параметры генерации задаются в INI файле (пример):
    [Folders] Base=Source\ <- the path to the original files Gen=Packages\ <- the path to the generated files GroupAbove=True [Versions] RX10Godzilla=320 RX10Berlin=310 RX10Seattle=300 XE8=290 XE7=280 XE6=270 XE5=260 XE4=250 XE3=240 XE2=230 [Files] MyComponents.groupproj MyComponentsDesign.dpk MyComponents.dpk MyComponentsDesign.dproj MyComponents.dproj
    Данный INI и PackagesGenerator сгенерирует все необходимые файлы!

    Для примера смотрите: https://github.com/errorcalc/FreeEsVclComponents, папку "Packages".

    Лицензия:
    Доступны три лицензии:
    1) Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License.
    Некоммерческая лицензия, для некоммерческого использования:
    (exaple: Personal use, Study, Open Source,...)

    2) GNU GPL v3: https://www.gnu.org/licenses/gpl.html (ТОЛЬКО для открытых OpenSource проектов)

    3) ErrorSoft PackagesGenerator Commercial license.(see LICENSE.TXT)
    Полноценная коммерческая лицензия.
    $10 для индивидуальных разработчиков, $50 для компаний.
  8. Like
    Error получил реакцию от rareMax в Что не так с FindStyleResource и что делать.   
    ЧАВО:
    Опишу "багофичу" на которую я наткнулся.
    Предположим что вы пишете свой компонент, наследуемый от TStyledControl (или любого другого компонента, который происходит от  TStyledControl), для доступа к элементам стиля обычно используют FindStyleResource('ИмяРесурса') (есть вариант в виде FindStyleResource<Класс>('ИмяРесурса', Переменная)) , например компонент TImageControl получает Image так:
    procedure TImageControl.ApplyStyle; begin inherited; if FindStyleResource<TImage>('image', FImage) then UpdateImage; end; И FindStyleResource работает отлично, пока в дереве стиля искомый объект лежит на НЕ TStyledControl-ах, то есть FindStyleResource будет успешно находить объект, который расположен на TRectangle, но не найдет его же, но на TPanel!
    Пример:
    Код, в процедуре ApplyStyle:
    procedure TEsImageSelection.ApplyStyle; var T: TControl; begin inherited ApplyStyle; if FindStyleResource<TControl>('selection', T) then ShowMessage('"selection" founded!'); end; Что делает данный код? - При нахождении стилевого объекта выдает соответствующее сообщение.
    Рассмотрим стиль:

    Как видите в варианте A, "Selection" лежит на НЕ наследнике TStyledControl. Запустив программу можно убедиться что FindStyleResource<TControl>('selection', T) найдет объект "Selection".
    В варианте B, при запуске можно с удивлением обнаружить что FindStyleResource<TControl>('selection', T) не находит объект "Selection"!
    Почему так?
    Судя по исходникам поиск во вложенных TStyledControl-ах сломан специально, дабы не всплывали еще большие глюки\проблемы.(но я не изучал вопрос очень подробно, во внутренний код работы с загрузкой и поиском стилей - кромешный ад, с наслаиванием истории Fire-Monkey разных лет).
    Как можно обойти проблему?
    Я нашел следующее решение:
    (Однако я совершенно не уверен в отсутствии побочных эффектов, возможно @Brovin Yaroslav сможет прокомментировать его?)
    Данный код находит искомый стилевой объект, в отличии от FindStyleResource.
    procedure TEsImageSelection.ApplyStyle; var T: TControl; begin inherited ApplyStyle; T := nil; EnumObjects( function (Obj: TFmxObject): TEnumProcResult begin if Obj.StyleName.ToLower = 'selection' then begin T := TControl(Obj); Result := TEnumProcResult.Stop; end else Result := TEnumProcResult.Continue; end); if T <> nil then ShowMessage('"selection" founded!'); end;  
    Процедура-замена FindStyleResource, работает как ожидается:
    type TOpenStyledControl = class(TStyledControl); function EsFindStyleResource(Self: TStyledControl; StyleName: string): TFmxObject; var StyleObject: TFmxObject; begin // если Self.ChildrenCount < 1 то в компоненте не загружен стиль, // т.к. известно что главный эллемент стиля ВСЕГДА находиться по нулевому индексу. if (TOpenStyledControl(Self).ResourceLink = nil) or (Self.ChildrenCount < 1) then Exit(nil); StyleObject := nil; Self.Children[0].EnumObjects( function (Obj: TFmxObject): TEnumProcResult begin if Obj.StyleName.ToLower = StyleName.ToLower then begin Result := TEnumProcResult.Stop; StyleObject := Obj; end else Result := TEnumProcResult.Continue; end); Result := StyleObject; end;  
  9. Like
    Error отреагировална Brovin Yaroslav в Что не так с FindStyleResource и что делать.   
    Костыль: Self.Children[0] - Объект в стиле, использующий стиль может его и не загрузить, но при этом иметь вложенные контролы. Поэтому физически у него еще нет стиля, но один контрол внутри есть. (Подсказка, смотреть ResourceLink)
  10. Like
    Error отреагировална Brovin Yaroslav в Описание TfgSignature - Получение подписи на устройстве   
    Описание:
    Назначение: Получение подписи клиента в графическом виде. Позволяет получить векторную подпись клиента на устройстве и сохранить ее в файл с любым разрешением Поддерживаемые платформы: Windows, OSX, Android, iOS Демо проект: Samples\SignatureDemo\SignatureDemo.dproj Доступен с версии: R102  Возможности:
    Экспорт подписи в файл или поток с любым разрешением (TfgSignature.SaveToFile, TfgSignature.SaveToStream). При этом в файле подпись кадрируется, то есть пустые не заполненные области справа, слева, сверху и снизу игнорируются. Доступно изменение точности записи подписи  (TfgSignature.TrackingAccurancy). Возможность получить в процентах степень заполнения подписи клиента (TfgSignature.CalculatePercentFilling, TfgSignature.IsValidSignature) Возможность установить цвет (TfgSignature.Stroke) Возможность задать цвет заднего фона (TfgSignature.Brush) Доступно редактирование длительности отображения уведомления (TfgToast.Duration) Возможность менять глобальные параметры отображения всех тостов в рамках приложения (TfgToast.DefaultBackgroundColor, TfgToast.DefaultMessageColor и TfgToast.DefaultPadding) Скриншоты:


  11. Like
    Error получил реакцию от rareMax в background TEdit   
    StyleLookup := 'transparenteditstyle'
  12. Like
    Error получил реакцию от Kitty в background TEdit   
    StyleLookup := 'transparenteditstyle'
  13. Like
    Error отреагировална web_warp в Canvas и FillText в StringGrid'е - разворот времени   
    В DrawColumnCell провожу зарисовку некоторых строк, необходима подсветка цветом. И тут возникла неожиданная проблема на ровном месте: ячейка, где текстом записано время, почему-то меняет местами время и дату, хотя передаётся в функцию FillText как надо.
    TabbedForm->StringGrid1->Canvas->Fill->Color = background_color; TabbedForm->StringGrid1->Canvas->FillRect(Bounds, 0, 0, AllCorners, 100); TabbedForm->StringGrid1->Canvas->Fill->Color = font_color; TabbedForm->StringGrid1->Canvas->Font->Style << fsBold; TabbedForm->StringGrid1->Canvas->FillText(Bounds,TabbedForm->StringGrid1->Cells[Column->Index][Row], false, 100,TFillTextFlags() << TFillTextFlag::ftRightToLeft, TTextAlign::taTrailing, TTextAlign::taTrailing); Подскажите пожалуйста, как развернуть время обратно?

    Ну и параллельно вопрос: как строку сплошным цветом заливать? Без белых границ?
  14. Like
    Error отреагировална Равиль Зарипов (ZuBy) в [Обзор] #3 ModernListView - динамическая подгрузка контента   
    Ссылка: http://blog.rzaripov.kz/2016/12/3-modernlistview.html
    Автор: Зарипов Равиль @ZuBy
    Описание:  Реализация динамической подгрузки контента:
    Бесконечный скроллинг (например как лента в ВК) Паджинация/Пагинация (постраничная загрузка)
  15. Like
    Error получил реакцию от Steepe_Hare в Сходка в Питере   
    Равиль Зарипов предложил отличную мысль - устроить сходку дельфистов в Питере, посидеть где-нибудь, пообщаться
    Собственно, кому интересно, отпишитесь в комментариях, можно будет в декабре устроить встречу
    Думаю надо хотябы 5-6 человек.
  16. Like
    Error получил реакцию от Andrey Efimov в Сходка в Питере   
    Равиль Зарипов предложил отличную мысль - устроить сходку дельфистов в Питере, посидеть где-нибудь, пообщаться
    Собственно, кому интересно, отпишитесь в комментариях, можно будет в декабре устроить встречу
    Думаю надо хотябы 5-6 человек.
  17. Like
    Error получил реакцию от zairkz в Проиграть несколько аудиофайлов параллельно   
    https://github.com/EmbarcaderoPublic/DelphiArcadeGames
    Не уверен, но вроде бы как, здесь сделано одновременное воспроизведение для разных платформ
  18. Like
    Error получил реакцию от Равиль Зарипов (ZuBy) в Сходка в Питере   
    Равиль Зарипов предложил отличную мысль - устроить сходку дельфистов в Питере, посидеть где-нибудь, пообщаться
    Собственно, кому интересно, отпишитесь в комментариях, можно будет в декабре устроить встречу
    Думаю надо хотябы 5-6 человек.
  19. Like
    Error получил реакцию от zairkz в Сходка в Питере   
    О, отлично, 3 человека уже готовы:)
  20. Like
    Error получил реакцию от zairkz в Сходка в Питере   
    Равиль Зарипов предложил отличную мысль - устроить сходку дельфистов в Питере, посидеть где-нибудь, пообщаться
    Собственно, кому интересно, отпишитесь в комментариях, можно будет в декабре устроить встречу
    Думаю надо хотябы 5-6 человек.
  21. Like
    Error получил реакцию от Brovin Yaroslav в Сходка в Питере   
    Равиль Зарипов предложил отличную мысль - устроить сходку дельфистов в Питере, посидеть где-нибудь, пообщаться
    Собственно, кому интересно, отпишитесь в комментариях, можно будет в декабре устроить встречу
    Думаю надо хотябы 5-6 человек.
  22. Like
    Error получил реакцию от #WAMACO в Сходка в Питере   
    Равиль Зарипов предложил отличную мысль - устроить сходку дельфистов в Питере, посидеть где-нибудь, пообщаться
    Собственно, кому интересно, отпишитесь в комментариях, можно будет в декабре устроить встречу
    Думаю надо хотябы 5-6 человек.
  23. Like
    Error получил реакцию от rareMax в Сходка в Питере   
    Равиль Зарипов предложил отличную мысль - устроить сходку дельфистов в Питере, посидеть где-нибудь, пообщаться
    Собственно, кому интересно, отпишитесь в комментариях, можно будет в декабре устроить встречу
    Думаю надо хотябы 5-6 человек.
  24. Like
    Error отреагировална Равиль Зарипов (ZuBy) в [Android] Что использовать для сохранения настроек приложения?   
    Если писать в папку приложения TPath.GetDocumentsPath, то файлы автоматически удаляются при деинсталяции приложения
  25. Like
    Error отреагировална Равиль Зарипов (ZuBy) в [Обзор] #2 ModernListView - режим мультивыделения   
    надо же познакомить народ с возможностями ModernListView, зря писал что-ли?)
×
×
  • Создать...