• 0
Авторизация  
Ilya.Z

 Креш при изменение в RunTime у формы BorderStyle/Transperency [OSX]

Вопросы

Столкнулся с такой проблемой, (Delphi Seattle, OSX+ WIndows 10) делаю форму со своим заголовком, при установленных свойствах Transperency := True  или BorderStyle := None,
переход в режим FullScreen не отрабатывается корректно (форма не изменяет размер на максимальный),  решил перед переходом в полноэкранный режим устанавливать   Transperency := False  и BorderStyle отличный от None, но программа вылетает, иногда сразу иногда на 2-3 раз смены параметров, причем независимо от того что меняю прозрачность или бордер.  если запускать через отладчик то вываливается на такое -

в System.Internal.ExcUtils;
{   RaiseSignalException is called from SignalConverter, once we've made things look   like there's a legitimate stack frame above us.  Now we will just create   an exception object, and raise it via a software raise. } procedure RaiseSignalException(ExceptionEIP: LongWord; FaultAddr: LongWord; ErrorCode: LongWord);
begin  
  raise GetExceptionObject(ExceptionEIP, FaultAddr, ErrorCode);
end;

под Windows все работает нормально, без всяких выкрутасов

для проверки можно сделать пустую форму, две кнопки , и скажем панель за которую перетаскивать форму
и три обработчика-

procedure TForm1.Rectangle1MouseDown(Sender: TObject; Button: TMouseButton;   Shift: TShiftState; X, Y: Single);
begin
 if (Button = TMouseButton.mbLeft) and (y < 25) then StartWindowDrag;
end;
procedure TForm1.sbExpandClick(Sender: TObject);
begin
  i f BorderStyle = TFmxFormBorderStyle.None then  
            BorderStyle := TFmxFormBorderStyle.Single  
   else  BorderStyle := TFmxFormBorderStyle.None;
end;
procedure TForm17.sbFullClick(Sender: TObject);
begin  
  FullScreen := not FullScreen;
end;

Может кто то сталкивался, как под OSX в рантайме менять у формы прозрачность и бордер не вываливаясь в исключения, или нормально обрабатывать переход в полноэкранный режим у прозарчной (или без стандартного заголовка) формы

Спасибо :)

Изменено пользователем Ilya.Z

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

0 ответов на этот вопрос

Ответы на этот вопрос пока отсутствуют

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Похожий контент

    • От SIARHEI RAHOUSKI
      Как в самой форме созданной в Delphi XE3 открыть word документ?
    • От SIARHEI RAHOUSKI
      Как стилизовать Border окна ? 
    • От Euvene
      Добрый день! Подскажите пожалуйста, возможно ли средствами fmx сворачивать форму в трей?
    • От Radio
      Толи я дурак толи лыжи не едут.  gesturemanager нужно для перелистывание Tabcontrol left right. Если form.borderstyle:=single; все работает. а вот если borderstyle:=none; или уберешь  border.styling=false; и border.icons. то не работает. в чем может быть проблема и как его решить? заранее благодарю  
    • От rakhmet
      Для FMX-приложения понадобилось разместить кнопки с битмапами в заголовке OSX-окна:

      Здесь был, это читал, но подходящего Delphi-решения найти не смог. Есть какие-нибудь идеи?
    • От ivadimos
      Добрый вечер. Каким образом я могу запустить приложение на дополнительном мониторе?
    • От AndreyS
      Всем доброго дня!
      После обновления OSX до El Capitan появился один эффект, который сильно мешает. В моей программе я не использую FullScreen для форм. Дело в том, что при FullScreen на OSX при нескольких открытых окнах, особенно если некоторые из них модальные бывают глюки, когда немодальное окно вдруг становится поверх всех окон, но при этом неактивным, т. к. есть модальное окно, на котором сейчас фокус. Раньше я не парился по этому поводу, т. к. мое приложение просто разворачивалось так же, как в винде. Но после обновления на El Capitan в заголовке формы отображается кнопка перехода в в FullScreen в независимости от значений соответствующих флажков у TForm. Есть ли какой-нибудь способ запретить окну переходить в FullScreen?
      Заранее спасибо.
    • От AndreyS
      Доброго всем дня. Столкнулся со следующей проблемой:
      Есть приложение для OSX, написанное на FMX (.app, упакованное в dmg). Если пользователь скачивает это приложение с сайта (сторонний сайт, не AppStore), то при запуске OSX говорит, что это приложение нельзя запускать, т. к. неизвестен издатель и пр. Так вот, что конкретно нужно сделать с этим приложением (перед деплоем или уже после), чтобы OSX не ворчала? Просто хочется заранее узнать, до того, как заплатить $99 для подключения к Developer program. Заранее спасибо.
    • От AndreyS
      Доброго всем дня! У меня в  самый неподходящий момент возникла следующая проблема:
       
      Есть приложение для Win и Mac. Работает с SQLite (Через FDQuery).
      Естественно, в базе куча данных с кириллицей. Так вот, на Win - все нормально, на одном Mac(10.10) - тоже все хорошо. Попробовал поставить на второй Mac(10.9.5) - b и вот там уже начались проблемы с кодировкой. Причем, читает из таблицы 
      S := Query.FieldByName('Title').AsString; //Без проблем а вот при записи в таблицу
      Query.ParamByName('Title').AsString := 'Заголовок'; В таблицу записывается '????????' (Причем именно запись идет неправильно). При подключении к базе Указываю, что StringFormat=Unicode.
       
      Может кто-то сталкивался с таким уже?
       
      Есть подозрения, что на 10.9.5 какая-то старая dylib, которая неправильно работает с кириллицей. тогда, наверное, нужно подключать свою к приложению, но опять же, где ее взять и как подключить? 
    • От dnekrasov
      Создаю глобальный hook на несколько событий:
      {$IFDEF MACOS} var EvtTap: CFMachPortRef; RunLoopSource: CFRunLoopSourceRef; {$ENDIF} ... procedure CreateGlobalHook; {$IFDEF MACOS} var EvtMask: UInt64; {$ENDIF} begin {$IFDEF MACOS} if EvtTap = nil then begin EvtMask := (1 shl kCGEventKeyDown) or (1 shl kCGEventFlagsChanged) or (1 shl kCGEventLeftMouseUp); EvtTap := CGEventTapCreate(kCGAnnotatedSessionEventTap, kCGTailAppendEventTap, kCGEventTapOptionListenOnly, EvtMask, @EventTapHandler, nil); RunLoopSource := CFMachPortCreateRunLoopSource(kCFAllocatorDefault, EvtTap, 0); CFRunLoopAddSource(CFRunLoopGetCurrent, RunLoopSource, kCFRunLoopCommonModes); end; CGEventTapEnable(EvtTap, 1); {$ENDIF} end; function EventTapHandler(proxy: CGEventTapProxy; type_: CGEventType; event: CGEventRef; refcon: Pointer): CGEventRef; cdecl; {$IFDEF MACOS} var iKey: Integer; iType: Integer; {$ENDIF} begin {$IFDEF MACOS} Result := event; iType := CGEventGetType(event); iKey := CGEventGetIntegerValueField(event, kCGKeyboardEventKeycode); case iType of kCGEventFlagsChanged: ...; kCGEventLeftMouseUp: ...; kCGEventKeyDown: ...; end; {$ENDIF} end; При обработке события возникает проблема: приходят все события кроме kCGEventKeyDown В документации нашел, что kCGEventKeyDown и kCGEventKeyUp приходят только в том случае если приложение запущено от root-а или внесено в список "System Preferences->Security & Privacy->Privacy->Accessibility"
       
      Может кто знает как мне программно получить доступ к этим событиям?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу