Вы можете сделать это, настроив вещательные приемники для ACTION_SCREEN_ON
и ACTION_SCREEN_OFF
.
Здесь есть 2 разные идеи :
- Delphi запущена и работает
- Приложение работает под отладчиком
. Обычный способ проверить, работает ли Delphi , - это проверить наличие известных IDE Windows с определенным именем класса, например TAppBuilder или TPropertyInspector.
Эти 2 работают во всех версиях Delphi IIRC.
Если вы хотите узнать, работает ли ваше приложение под отладчиком , то есть запускается в обычном режиме из среды IDE с помощью команды «Выполнить» (F9) или присоединено к отладчику, когда оно уже запущено, вам просто нужно проверить глобальная переменная DebugHook.
Обратите внимание, что «Отсоединить от программы» не удаляет значение DebugHook, а «Присоединить к процессу» устанавливает его.
function IsDelphiRunning: Boolean;
begin
Result := (FindWindow('TAppBuilder', nil) > 0) and
(FindWindow('TPropertyInspector', 'Object Inspector') > 0);
end;
function IsOrWasUnderDebugger: Boolean;
begin
Result := DebugHook <> 0;
end;
Если цель - ограничить использование пробной версии вашего компонента, когда приложение разрабатывается, оба имеют недостатки :
- Скрытые окна с правильным именем класса / заголовком могут быть включены в приложение
- DebugHook можно установить вручную в коде
NO
для NSScrollView
имеет дополнительный эффект отправки NSClipView
сообщения setCopiesOnScroll:
с параметр НЕТ
. Побочным эффектом отправки сообщения setDrawsBackground:
непосредственно в NSClipView
вместо этого будет появление «следов» (остатков предыдущего рисунка) в представлении документа при его прокрутке.
Похоже, текстового поля нет даже в области прокрутки ... Вы уверены, что что-то не перекрывает его?
У меня была такая же проблема некоторое время назад. Не помню, как я это решил.
Попытайтесь поместить NSTextView в другое представление, если супервизор является настраиваемым. Просто чтобы посмотреть, что будет.