Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.11.2012, 11:43
Antony_svt Antony_svt вне форума
Прохожий
 
Регистрация: 01.11.2012
Сообщения: 2
Репутация: 10
Сообщение Проблемы с компонентом TFrame

Доброго времени суток. Возникла щекотливая ситуация с компонентом TFrame.

Есть главная форма. На ней размещен объект класса TPageControl с несколькими объектами TTabSheet.

При загрузке главного окна в событии OnCreate я создаю экземпляр класса TFrame и помещаю в нужный мне TabSheet.
Выглядит примерно так.

public:
myFrame : TCustomFrame; //Класс наследник TFrame с моими компонентами там.
.
.
.
.
.
procedure TForm.FormCreate(Sender: TObject);
begin
myFrame := TCustomFrame.Create(Application);
myFrame.Parent := My_TabSheet;
end;

Долгое время все устраивало. Но в один момент появилась необходимость запускать приложение на Full HD мониторе (1920x1080). И поскольку виндовые буквы были очень маленькими, через "Специальные возможности" винды установили "Средние буквы".
Все поплыло и поехало...
Винда своими топорными методами сделала Resize всех объектов, где-то увеличив только длину, а где-то длину и ширину. Но подгружаемые фреймы так и остались старого размера. Что сделало интерфейс кривым и неюзабельным.

Вариант скопировать фрейм на форму не рассматривается, нарушится модульность. Да и сам запутаюсь в нескольких десятках тысяч строк кода. Будет путаница с огромным количеством компонентов.
Разбить на разные окна - не катит. Именно данный вид вызывает бОльшее одобрение у юзеров.

Пока приходит на ум единственный вариант - просто сделать отдельную версию программы для таких случаев (Текст 125%, Текст 150%).

Можно проблему решить менее радикальным способом? А именно масштабируемость подгружаемых фреймов при включении специальных возможностей виндовс.
Ответить с цитированием
  #2  
Старый 01.11.2012, 14:37
Antony_svt Antony_svt вне форума
Прохожий
 
Регистрация: 01.11.2012
Сообщения: 2
Репутация: 10
Радость

В общем посовещавшись, проблему исчерпали.

Насколько я понял, это фишка Windows 7, возможность увеличивать все окна для слабовидящих, создавая эффект уменьшения разрешения.

Решение 1 :
Найти где-то в WinAPI параметр, отвечающий за данный режим отображения. (А может и в реестре лежит). Физически на ПК разрешение остается тем же, через него не отследишь.

И уже исходя из этого менять в коде все размеры фреймов и компонентов на них.


Решение 2:
Просто создать версию фреймов именно под эти параметры. Проще, быстрее и в виду единичного случая. Уже притащил себе монитор 22" с похожим разрешением. Все спасибо за внимание.

Решение
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:15.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter