Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Портятся размеры элеметов формы в Win8, Программа написана для XP, а в Win8 не р 
:(
    Опции темы
Jek1975
Дата 19.7.2013, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.5.2008

Репутация: нет
Всего: нет



Есть программа, написанная для WinXP в Borland Delphi 7. Там она работала безупречно, но возникла необходимость запустить её в Win8.
И тут начались проблемы. По умолчанию в Win8 есть параметр "панель управления">"оформление и персонализация">"экран">"Изменение размера всех элементов".
По умолчанию он = 125%. В этом случае многие элементы, которые могут менять размеры в зависимости от параметров Align и Anchors уезжают за пределы формы (становятся невидимыми); шрифты тоже уезжают и портят рамки.
Если этот параметр изменить на 100%, глюков становится меньше, но они не пропадают совсем - см.прикреплённый скриншот.

Подскажите что делать? Играться параметрами Align и Anchors или что-то другое? (на "удлиняющиеся" шрифты наплевать, нужно хотя бы все элементы формы оставить на местах). Гуглом искал, но ничего похожего не нашёл.

Это сообщение отредактировал(а) Jek1975 - 19.7.2013, 14:58

Присоединённый файл ( Кол-во скачиваний: 29 )
Присоединённый файл  Безымянный2.PNG 26,39 Kb
PM MAIL WWW ICQ   Вверх
Illusion Dolphin
Дата 19.7.2013, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Самое простое это выставить у формы Scaled = False (это не тру с точки знения юзабилити для польователя, но легче в разработке)


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
gesper
Дата 19.7.2013, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


"Shарфик"
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 23.2.2005

Репутация: 1
Всего: 2



AutoSize параметр офнуть пробовал у компонентов?
--------------------
...И приколется обломившийся и oбломится приколовшийся...
PM MAIL   Вверх
ZBugz
Дата 20.7.2013, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 636
Регистрация: 15.2.2006
Где: Москва

Репутация: 6
Всего: 6



Там наоборот, лучше у формы AutoSize включить. 
PM MAIL   Вверх
StranikS
Дата 26.7.2013, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 1.2.2006

Репутация: 1
Всего: 2



Вы Manifest подключите к проекту.

И интерфейс нужно будет пересобрать под Win7 или Win8, ставьте D7 под любую из них и собирайте его по новой при этом у формы должно стоять Scale =True (стоит по умолчанию), в этом случае он у вас уже автоматически будет "резиновым", т.е. масштабируемым.  

Это сообщение отредактировал(а) StranikS - 28.7.2013, 11:43
PM MAIL   Вверх
korvinx3m
Дата 11.4.2014, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 2.11.2009

Репутация: нет
Всего: нет



Если актуально еще...

Я, в свое время, нашел такое решение:

Код

const

  ScreenWidth: LongInt = 1280;  {Я разрабатывал мою форму в режиме 1280x1024}
  ScreenHeight: LongInt = 1024; {Я разрабатывал мою форму в режиме 1280x1024}

procedure TForm1.FormCreate(Sender: TObject);
var
i: integer; 

begin
//масштабирование формы  [begin]
scaled := true;
if (screen.height-GetTaskBarHeight) <= Form1.Height then
  begin
  Form1.scaleBy((screen.height-GetTaskBarHeight-Form1.BorderWidth-GetSystemMetrics(SM_CYFRAME)), Form1.Height);
  scaled := false;
  end;
//масштабирование формы  [end]

//масштабирование шрифтов  [begin]
for i := componentCount-1 downto 0 do
  with components[i] do
    if GetPropInfo(ClassInfo, 'font') <> nil  then font.size := (Form1.Height DIV ScreenHeight) * font.size;
//масштабирование шрифтов  [end]

//Центрируем форму относительно клиентской области экрана (не включая панель задач)  [begin]
//Для того, чтобы этот код работал свойство Position формы должно быть установлено в poDefault
Form1.left := (screen.width - Form1.width) div 2;
Form1.top := (screen.height - GetTaskBarHeight - Form1.height) div 2;
//Центрируем форму [end]

end; 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0752 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.