Как получить разрешение экрана в Firemonkey XE3?

Как получить разрешение экрана в Firemonkey 2 (Delphi XE3)?


person Wayfer    schedule 09.10.2012    source источник


Ответы (1)


Все изменилось в XE3. Поддержка платформы была полностью переработана. Дополнительную информацию см. в статье Павла Гловацки.

var
  ScreenSvc: IFMXScreenService;
  Size: TPointF;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenSvc)) then
  begin
    Size := ScreenSvc.GetScreenSize;
    ....
  end;
end;

Несмотря на капитальный ремонт, это все еще не очень полезно, если у вас несколько мониторов. Возможно, в FMX2 есть какая-то поддержка мультимонов, но в IFMXScreenService ее явно нет.

person David Heffernan    schedule 09.10.2012
comment
В платформе XE3 нет метода GetScreenSize. - person Wayfer; 09.10.2012
comment
Извините, я четко просматривал документы XE2. Обновление теперь исправляет это. - person David Heffernan; 09.10.2012
comment
О, спасибо, все работает. И можно ли получить высоту (ширину) экрана без панели Пуск в Windows? - person Wayfer; 09.10.2012
comment
@Wayfer Насколько я знаю, нет. Однако вы можете использовать новые службы платформы на основе реестра, чтобы зарегистрировать свой собственный плагин, который будет сообщать об этом. Вам придется написать условный код для Windows и Mac и любых других целей. Но это позволит вам иметь высокоуровневый код, которому не нужно знать о вариантах платформы. Позвоните Platform.TPlatformServices.AddPlatformService, чтобы зарегистрировать новую услугу. - person David Heffernan; 09.10.2012
comment
Интересно, как это будет работать в конфигурации с несколькими мониторами. Эти избалованные поклонники Apple, они любят эти качественные телевизоры :-) - person Arioch 'The; 10.10.2012
comment
@Arioch'The Единственный способ узнать это - прочитать код. Документы не говорят. Что довольно хромает на мой взгляд. Сравните это с MSDN. - person David Heffernan; 10.10.2012
comment
MSDN в основном документирует давно устоявшийся код. Тот, который даже в основном воспроизводился WinE/Odin/ReactOS. FMX находится в стадии разработки, и в прямом эфире проводится крупный рефакторинг... - person Arioch 'The; 10.10.2012
comment
@Arioch'Документация Delphi также в основном документирует давно установленный код. Документация MSDN для WinRT существовала до того, как этот продукт был запущен. Он был разработан в тандеме с продуктом. Документация FMX отстала на годы. - person David Heffernan; 10.10.2012