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

dnekrasov

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

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

  • Посещение

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

    52

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

  1. Like
    dnekrasov получил реакцию от gerasim_sergey в Глобальный Hook в OSX   
    Пока нашел только такой выход:
      Создаю инсталляшку с помошью Packages (http://s.sudre.free.fr/Software/Packages/about.html)
      При завершении установки выполняю скрипт
    #!/bin/sh touch /private/var/db/.AccessibilityAPIEnabled && sqlite3 "/Library/Application Support/com.apple.TCC/TCC.db" "INSERT or REPLACE INTO access (service, client, client_type, allowed, prompt_count) VALUES ('kTCCServiceAccessibility', 'com.CompanyName.AppName', 0, 1, 0);" После этого все работает!
  2. Like
    dnekrasov получил реакцию от i.r.khayrullin в Распространение ПО для OSX   
    1. Получить на сайте сертификаты (Developer ID Application и 3rd Party Mac Developer Installer).
    2. Установить их на Маке.
    3. Прописать их в Delphi (Tools->Options->Provisioning)
    4. Сделать Deploy с конфигурацией AppStore
     
    После этого на Маке появится [ваше приложение].pkg, на который уже не ругается OSX
  3. Like
    dnekrasov получил реакцию от Vitaldj в Распространение ПО для OSX   
    1. Получить на сайте сертификаты (Developer ID Application и 3rd Party Mac Developer Installer).
    2. Установить их на Маке.
    3. Прописать их в Delphi (Tools->Options->Provisioning)
    4. Сделать Deploy с конфигурацией AppStore
     
    После этого на Маке появится [ваше приложение].pkg, на который уже не ругается OSX
  4. Like
    dnekrasov отреагировална zairkz в Более быстрая альтернатива DrawBitmap   
    Попробуй движок Shadow Engine для Firemonkey, FPS впечатляет.
    https://www.youtube.com/watch?v=w6lGasU61HQ
     
    Gihub: https://github.com/dimsa/ShadowEngine
  5. Like
    dnekrasov отреагировална Brovin Yaroslav в Объектная модель делегатов   
    Если требуется сделать хранилище универсальных данных, то я, конечно, бы лучше взял бы за основу TValue, словарь и снабдил бы это все хелпер методами для получения данных требуемых типов.
     
    И опять же все зависит от задачи. Абстрагирование вещь хорошая, но ею стоит пользоваться там, где она жизненно необходима.
  6. Like
    dnekrasov получил реакцию от Rusland в Как свернуть форму, находящуюся в режиме FullScreen?   
    FWinService.SetWindowState(Self, TWindowState.wsMinimized);
  7. Like
    dnekrasov получил реакцию от Rusland в Системная информация в OSX   
    function GetHDDSerialID: String; Const   kIOPlatformSerialNumberKey = 'IOPlatformSerialNumber'; var   PlatformExpert: io_service_t;   M: CFMutableDictionaryRef;   CFTR: CFTypeRef;   pac: PAnsiChar; begin   M := IOServiceMatching('IOPlatformExpertDevice');   PlatformExpert := IOServiceGetMatchingService(kIOMasterPortDefault, CFDictionaryRef(M));   try     CFTR := IORegistryEntryCreateCFProperty(PlatformExpert,       CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, 0);     pac := CFStringGetCStringPtr(CFTR, 0);     Result := String(AnsiString(pac));   finally     IOObjectRelease(PlatformExpert);   end; end;
  8. Like
    dnekrasov получил реакцию от AngryOwl в Системная информация в OSX   
    function GetHDDSerialID: String; Const   kIOPlatformSerialNumberKey = 'IOPlatformSerialNumber'; var   PlatformExpert: io_service_t;   M: CFMutableDictionaryRef;   CFTR: CFTypeRef;   pac: PAnsiChar; begin   M := IOServiceMatching('IOPlatformExpertDevice');   PlatformExpert := IOServiceGetMatchingService(kIOMasterPortDefault, CFDictionaryRef(M));   try     CFTR := IORegistryEntryCreateCFProperty(PlatformExpert,       CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, 0);     pac := CFStringGetCStringPtr(CFTR, 0);     Result := String(AnsiString(pac));   finally     IOObjectRelease(PlatformExpert);   end; end;
  9. Like
    dnekrasov получил реакцию от Brovin Yaroslav в Системная информация в OSX   
    function GetHDDSerialID: String; Const   kIOPlatformSerialNumberKey = 'IOPlatformSerialNumber'; var   PlatformExpert: io_service_t;   M: CFMutableDictionaryRef;   CFTR: CFTypeRef;   pac: PAnsiChar; begin   M := IOServiceMatching('IOPlatformExpertDevice');   PlatformExpert := IOServiceGetMatchingService(kIOMasterPortDefault, CFDictionaryRef(M));   try     CFTR := IORegistryEntryCreateCFProperty(PlatformExpert,       CFSTR(kIOPlatformSerialNumberKey), kCFAllocatorDefault, 0);     pac := CFStringGetCStringPtr(CFTR, 0);     Result := String(AnsiString(pac));   finally     IOObjectRelease(PlatformExpert);   end; end;
  10. Like
    dnekrasov отреагировална Ginne в Неправильная работа атрибутов текста в TTextLayout   
    При обычном режиме: GlobalUseDirect2D := True

     
    И при использовании: GlobalUseGPUCanvas := True 

     
    Как добиться того, чтобы в CanvasD2D, тоже была поддержка атрибутов с цветом?
    Есть подозрения того, что в TTextLayuotD2D забыли добавить ее! 
     
    Скачать пример TextAttribute.zip
  11. Like
    dnekrasov отреагировална Brovin Yaroslav в Как узнать поддерживаемый максимально допустимый размер изображения в TBitmap?   
    В FireMonkey TBitmap имеет верхнее ограничение на размеры хранимого изображения, ограниченные максимально допустимым размером текстур в текущей платформе. Узнать максимальную ширину и высоту можно так:
    var MaxWidthHeight: Integer; begin MaxWidthHeight := TCanvasManager.DefaultCanvas.GetAttribute(TCanvasAttribute.MaxBitmapSize); end;
  12. Like
    dnekrasov отреагировална AngryOwl в Можно ли задать минимальные размеры для формы?   
    Я думаю со мной согласится абсолютное большинство, что ограничение размеров формы - это проблема!
    Причем проблема с "большой буквы".
    Как это сделать в VCL - все в курсе.
    Предвидя ответ, что это можно сделать самому "ручками", спрошу - почему все должны лезть в исходники Firemonkey и править "родные" модули, дабы достичь нужного результата?
    Вроде это самые элементарные свойства (предопределение минимальных/максимальных размеров формы).
    Поэтому очень хотелось бы вынести это "обсуждение"/проблему на рассмотрение Embarcadero. И, конечно, хотелось бы чтобы они эту проблему решили и решили в срочном порядке.
     
    Согласитесь (думаю и наши уважаемые гуру согласятся), что этот вопрос относится к элементарным и основным проблемам.
    Представьте себе любого начинающего FMX-прогера, который в первом же своем FMX-проекте столкнется с данной проблемой...
     
    P.S. Как крайний вариант - рассматриваю коллективное обсуждение и решение этой задачи с публикацией кода.
  13. Like
    dnekrasov отреагировална Brovin Yaroslav в Можно ли задать минимальные размеры для формы?   
    Для OSX:
    uses FMX.Platform.Mac, Macapi.CoreGraphics; procedure SetFormMinSize(const AForm: TForm; const AMinSize: TSize); var MacHandle: TMacWindowHandle; begin MacHandle := WindowHandleToPlatform(AForm.Handle); MacHandle.Wnd.setMinSize(CGSizeMake(AMinSize.Width, AMinSize.Height)); end; procedure SetFormMaxSize(const AForm: TForm; const AMaxSize: TSize); var MacHandle: TMacWindowHandle; begin MacHandle := WindowHandleToPlatform(AForm.Handle); MacHandle.Wnd.setMaxSize(CGSizeMake(AMaxSize.Width, AMaxSize.Height)); end; procedure TForm1.Button1Click(Sender: TObject); begin SetFormMinSize(Self, TSize.Create(300, 100)); end;
  14. Like
    dnekrasov отреагировална Brovin Yaroslav в Можно ли задать минимальные размеры для формы?   
    В FireMonkey нету поддержки ограничений размеров, как это есть в VCL. Поэтому на текущий момент, вы можете сделать:
    Либо общими средствами FM, через OnResize. Но он вас не устраивает. Второй напрямую использовать WinApi WM_GETMINMAXINFO. Но для этого придется протянуть из FMX.Platform.Win.pas наружу обработку этого сообщения.  
  15. Like
    dnekrasov получил реакцию от Brovin Yaroslav в Несколько окон приложения в панели задач   
    Приложение убрано из панели задач
    Свойства формы:
    BorderStyle = None
    Transparency = True
     
    Немного поэкспериментировав нашел лучший способ: ... TMyForm = class(TForm) ... protected procedure CreateHandle; override; ... end; ... procedure TMyForm.CreateHandle; begin inherited CreateHandle; SetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_EXSTYLE, GetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_EXSTYLE) or WS_EX_APPWINDOW); end; ... end. Этот код вставлять нужно в каждой форме, которую Вы хотите отобразить на панели задач
  16. Like
    dnekrasov получил реакцию от AngryOwl в Несколько окон приложения в панели задач   
    Приложение убрано из панели задач
    Свойства формы:
    BorderStyle = None
    Transparency = True
     
    Немного поэкспериментировав нашел лучший способ: ... TMyForm = class(TForm) ... protected procedure CreateHandle; override; ... end; ... procedure TMyForm.CreateHandle; begin inherited CreateHandle; SetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_EXSTYLE, GetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_EXSTYLE) or WS_EX_APPWINDOW); end; ... end. Этот код вставлять нужно в каждой форме, которую Вы хотите отобразить на панели задач
  17. Like
    dnekrasov получил реакцию от AngryOwl в Несколько окон приложения в панели задач   
    Этот код работает,только его надо переместить из обработчика события OnCreate в обработчик OnShow
    Не знаю в чем проблема, но FHandle в этих событиях принимает разные значения и, как я понял, правильный именно в FormShow.
     
    Как это работает можно посмотреть в приложении Clip2net (написано на Delphi XE6)

×
×
  • Создать...