powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Масштабирование компонент на динамической форме
10 сообщений из 35, страница 2 из 2
Масштабирование компонент на динамической форме
    #39744179
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

Так и есть. Динамическая форма создается с dpi - 120. Из dfm - 96. Что делать?
...
Рейтинг: 0 / 0
Масштабирование компонент на динамической форме
    #39744187
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После присвоения контролу родителя я делаю следующее:
Код: pascal
1.
ed.ScaleForPPI(Screen.PixelsPerInch);


Вроде помогло. Правильно?
исходники
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure CreateComp(AOwner: TForm);
  procedure CreateLb(ALeft, ATop: Integer; ACapt: string);
  var
    lb: TLabel;
  begin
    lb := TLabel.Create(AOwner);
    lb.Left := ALeft;
    lb.Top := ATop;
    lb.Caption := ACapt;
    lb.Parent := AOwner;
    lb.ScaleForPPI(Screen.PixelsPerInch);
  end;
  procedure CreateEd(ALeft, ATop, AWidth: Integer; AText: string);
  var
    ed: TEdit;
  begin
    ed := TEdit.Create(AOwner);
    ed.Left := ALeft;
    ed.Top := ATop;
    ed.Width := AWidth;
    ed.Text := AText;
    ed.Parent := AOwner;
    ed.ScaleForPPI(Screen.PixelsPerInch);
  end;
begin
  CreateLb(8, 11, 'Label1');
  CreateLb(8, 33, 'Label2');
  CreateEd(45, 8, 100, 'Edit1');
  CreateEd(45, 30, 100, 'Edit2');
end;

procedure TForm1.FormShow(Sender: TObject);
var
  fm: TForm;
begin
  Caption := 'Form1';
  CreateComp(Self);
  // Вторая форма
  fm := TForm.Create(Self);
  fm.Caption := 'Form2';
  CreateComp(fm);
  fm.Show;
end;

end.

...
Рейтинг: 0 / 0
Масштабирование компонент на динамической форме
    #39744189
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно динамической форме DPI сменить на 96?
...
Рейтинг: 0 / 0
Масштабирование компонент на динамической форме
    #39744496
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shmelina,

вообще любую форму можно воссоздать из сгенерированного текстового dfm'а. там можно прописать всё как нужно.
искать по ключевикам ObjectTextToBinary, ReadComponent. например:
http://delphimaster.net/view/1-59143
...
Рейтинг: 0 / 0
Масштабирование компонент на динамической форме
    #39744506
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

хотелось бы использовать стандартные механизмы создания объектов (формы в т.ч.). Если делаю что-то не так, то надо разобраться.
...
Рейтинг: 0 / 0
Масштабирование компонент на динамической форме
    #39744561
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shmelinaПосле присвоения контролу родителя я делаю следующее:
Код: pascal
1.
ed.ScaleForPPI(Screen.PixelsPerInch);


Вроде помогло. Правильно?а какой Screen если форма ещё не показана?

скорее всего до, нужно делать
Код: pascal
1.
ed.ScaleForPPI(FCurrentPPI);


но вообще странно, при установке родителя должен вызываться ScaleForPPI для компонента
...
Рейтинг: 0 / 0
Масштабирование компонент на динамической форме
    #39746527
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

согласен, странно. Масштабируется только шрифт. Остальное масштабируется, если после присвоения родителя вызвать ScaleForPPI.
...
Рейтинг: 0 / 0
Масштабирование компонент на динамической форме
    #39746543
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shmelina,

это в 10.3 такие выкрутасы?
...
Рейтинг: 0 / 0
Масштабирование компонент на динамической форме
    #39746545
shmelina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
10.2.3.
...
Рейтинг: 0 / 0
Масштабирование компонент на динамической форме
    #39746549
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shmelina,

похоже с 10.2.1 мы долго не слезем
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Масштабирование компонент на динамической форме
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]