Проблема C инсталлятором во время увеличения шрифта в системе

Статус
В этой теме нельзя размещать новые ответы.

AtotIK

Новичок
Можно ли сделать так, что бы при установленном увеличенном масштабе шрифтов в системе это не затрагивало окно инсталлятора?

Дело в том, что даже при 125% все элементы перекашиваются и выглядит это "не совсем".
 

sergey3695

Ветеран
Модератор
ScaleX() - left, width.
ScaleY() - top, height.
SetBounds(ScaleX(),ScaleY(),ScaleX(),ScaleY());
В скобках соответственно координаты. Тогда и разъезжаться не будет.
 

Edison007

Ветеран
Модератор
Ну тут два варианта:
1. Либо все координаты указывать, как писал выше sergey3695, через функции ScaleX/ScaleY. Тогда инсталл будет увеличиваться/уменьшаться вместе с изменением размера шрифта в системе.
2. Либо все координаты без ScaleX/ScaleY. Инсталл всегда будет одного и того же размера.
 

Le9ent

Новичок
У меня похожая ситуация все так прописал как вы рекомендовали:

with WizardForm.NextButton do begin
Left:=ScaleX(10);
Top:=ScaleY(565);
Width:=ScaleX(90);
Height:=ScaleY(25);
Parent:=WizardForm;
end;

var
Logo, Fon:TBitmapimage;

ExtractTemporaryFile('Fon.bmp');
WizardForm.Width:=ScaleX(600);
WizardForm.Height:=ScaleY(600);

Fon:=TBitmapImage.Create(WizardForm);
with Fon do begin
Left:=ScaleX(0);
Top:=ScaleY(0);
Width:=ScaleX(600);
Height:=ScaleY(600);
Parent:=WizardForm;
Bitmap.LoadFromFile(ExpandConstant('{tmp}\Fon.bmp'));
end;

Какие параметры можно добавить для изображения что бы фоновый рисунок масштабировался с остальными элементами?
 
Последнее редактирование модератором:

Le9ent

Новичок
reflexx.56, огромное спасибо вам. Хоть и смотрится не очень изображение после масштабирования, ну хотя бы растягивается.
 

XLASER

Новичок
Проблема заключается вот в чём.

Удобство чтения с экрана 100%. Инсталлятор отображается нормально.



Удобство чтения с экрана 125% Инсталлятор отображается без кнопок установки и отмены + всё растянулось.



И удобство чтения с экрана 150% Инсталлятор отображается без кнопок установки и отмены + всё растянулось ещё больше.




Можно ли это как то исправить? Подскажите если кто знает.
Заранее благодарю!!!
 

sergey3695

Ветеран
Модератор
XLASER,
Код:
  Left := ScaleX(тут значение);
  Top := ScaleY(тут значение);
  Width:= ScaleX(тут значение);
  Height := ScaleY(тут значение);
 

sergey3695

Ветеран
Модератор
XLASER, координаты это, позиция объектов на форме. Подробней некуда :help:
 

ExPlayer

Старожил
sergey3695, А где это дописать? Что то не пойму!
На примере скрипта от BlackBox:
Код:
MyCancelButton:=TButton.Create(WizardForm);
  with MyCancelButton do begin
    Parent:=WizardForm;
    Width:=ScaleX(150);
    Caption:='Выход';
    Left:=ScaleX(347);
    Height:=ScaleX(30);
    Left:=(480);
    Top:=WizardForm.cancelbutton.top;
    OnClick:=@CancelButtonOnClick;
 

XLASER

Новичок
Наверное это всё не то.
Мне надо чтобы при Удобство чтения с экрана 125-150% было так же как Удобство чтения с экрана 100%.
Как на первом скрине
 

Carlos

Участник
Модератор
Всё так и будет.

Только если значения стоят типа

Width:=150;
Caption:='Выход';
Left:=347;
Height:=30;
Left:=480;

надо заменить на

Width:=ScaleX(150);
Caption:='Выход';
Left:=ScaleY(347);
Height:=ScaleX(30);
Left:=ScaleY(480);
 

Mailchik

Старожил
Проверенный
Это и есть решение проблемы для Inno.
Так же для картинок нужно изменить Stretch на True.
 

Edison007

Ветеран
Модератор
Вариантов два:
1. Писать всё в относительных координатах, т.е с помощью функций ScaleX(x), ScaleY(y) + как выше написал Mailchik, для картинок нужно изменить Stretch на True.
2. Писать всё в абсолютных координатах, т.е все координаты без функций ScaleX(x), ScaleY(y).
Во втором случае еще придется размер шрифта заменить на высоту (TFont.Size -> TFont.Height).

В первом случае инсталл будет увеличиваться, во втором при любом увеличении - будет сохранять оригинальный размер.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху