-
Постов
317 -
Зарегистрирован
-
Посещение
-
Победитель дней
52
Активность репутации
-
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);" После этого все работает!
-
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
-
dnekrasov получил реакцию от Vitaldj в Распространение ПО для OSX
1. Получить на сайте сертификаты (Developer ID Application и 3rd Party Mac Developer Installer).
2. Установить их на Маке.
3. Прописать их в Delphi (Tools->Options->Provisioning)
4. Сделать Deploy с конфигурацией AppStore
После этого на Маке появится [ваше приложение].pkg, на который уже не ругается OSX
-
dnekrasov отреагировална zairkz в Более быстрая альтернатива DrawBitmap
Попробуй движок Shadow Engine для Firemonkey, FPS впечатляет.
https://www.youtube.com/watch?v=w6lGasU61HQ
Gihub: https://github.com/dimsa/ShadowEngine
-
dnekrasov отреагировална Brovin Yaroslav в Объектная модель делегатов
Если требуется сделать хранилище универсальных данных, то я, конечно, бы лучше взял бы за основу TValue, словарь и снабдил бы это все хелпер методами для получения данных требуемых типов.
И опять же все зависит от задачи. Абстрагирование вещь хорошая, но ею стоит пользоваться там, где она жизненно необходима.
-
dnekrasov получил реакцию от Rusland в Как свернуть форму, находящуюся в режиме FullScreen?
FWinService.SetWindowState(Self, TWindowState.wsMinimized); -
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; -
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; -
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; -
dnekrasov отреагировална Ginne в Неправильная работа атрибутов текста в TTextLayout
При обычном режиме: GlobalUseDirect2D := True
И при использовании: GlobalUseGPUCanvas := True
Как добиться того, чтобы в CanvasD2D, тоже была поддержка атрибутов с цветом?
Есть подозрения того, что в TTextLayuotD2D забыли добавить ее!
Скачать пример TextAttribute.zip
-
dnekrasov отреагировална Brovin Yaroslav в Как узнать поддерживаемый максимально допустимый размер изображения в TBitmap?
В FireMonkey TBitmap имеет верхнее ограничение на размеры хранимого изображения, ограниченные максимально допустимым размером текстур в текущей платформе. Узнать максимальную ширину и высоту можно так:
var MaxWidthHeight: Integer; begin MaxWidthHeight := TCanvasManager.DefaultCanvas.GetAttribute(TCanvasAttribute.MaxBitmapSize); end; -
dnekrasov отреагировална AngryOwl в Можно ли задать минимальные размеры для формы?
Я думаю со мной согласится абсолютное большинство, что ограничение размеров формы - это проблема!
Причем проблема с "большой буквы".
Как это сделать в VCL - все в курсе.
Предвидя ответ, что это можно сделать самому "ручками", спрошу - почему все должны лезть в исходники Firemonkey и править "родные" модули, дабы достичь нужного результата?
Вроде это самые элементарные свойства (предопределение минимальных/максимальных размеров формы).
Поэтому очень хотелось бы вынести это "обсуждение"/проблему на рассмотрение Embarcadero. И, конечно, хотелось бы чтобы они эту проблему решили и решили в срочном порядке.
Согласитесь (думаю и наши уважаемые гуру согласятся), что этот вопрос относится к элементарным и основным проблемам.
Представьте себе любого начинающего FMX-прогера, который в первом же своем FMX-проекте столкнется с данной проблемой...
P.S. Как крайний вариант - рассматриваю коллективное обсуждение и решение этой задачи с публикацией кода.
-
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; -
dnekrasov отреагировална Brovin Yaroslav в Можно ли задать минимальные размеры для формы?
В FireMonkey нету поддержки ограничений размеров, как это есть в VCL. Поэтому на текущий момент, вы можете сделать:
Либо общими средствами FM, через OnResize. Но он вас не устраивает. Второй напрямую использовать WinApi WM_GETMINMAXINFO. Но для этого придется протянуть из FMX.Platform.Win.pas наружу обработку этого сообщения. -
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. Этот код вставлять нужно в каждой форме, которую Вы хотите отобразить на панели задач -
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. Этот код вставлять нужно в каждой форме, которую Вы хотите отобразить на панели задач -
dnekrasov получил реакцию от AngryOwl в Несколько окон приложения в панели задач
Этот код работает,только его надо переместить из обработчика события OnCreate в обработчик OnShow
Не знаю в чем проблема, но FHandle в этих событиях принимает разные значения и, как я понял, правильный именно в FormShow.
Как это работает можно посмотреть в приложении Clip2net (написано на Delphi XE6)