Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Странное поведение формы на Win10.  [new]
rgreat
Member

Откуда:
Сообщений: 4498
На XP/Vista/W7 все нормально.

На W10 форма увеличивается по ширине и высоте, но при том говорит что размеры и координаты не изменились!

Че за фигня?!

К сообщению приложен файл. Размер - 112Kb
3 ноя 18, 02:24    [21723125]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение формы на Win10.  [new]
rgreat
Member

Откуда:
Сообщений: 4498
Проект в аттаче.

procedure TForm4.Button1Click(Sender: TObject);
begin
  BorderStyle:=bsNone;
  FormResize(nil);
end;

procedure TForm4.Button2Click(Sender: TObject);
begin
  BorderStyle:=bsSizeable;
  FormResize(nil);
end;

procedure TForm4.FormResize(Sender: TObject);
begin
  ListBox1.Items.Text:='Left='+Left.ToString+
                 #13#10'Top='+Top.ToString+
                 #13#10'Width='+Width.ToString+
                 #13#10'Height='+Height.ToString+
                 #13#10'ClientWidth='+ClientWidth.ToString+
                 #13#10'ClientHeight='+ClientHeight.ToString;
end;


К сообщению приложен файл (Project.zip - 4Kb) cкачать
3 ноя 18, 02:26    [21723126]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение формы на Win10.  [new]
rgreat
Member

Откуда:
Сообщений: 4498
Еще странность.

Задвинутая в верхний левый угол десктопа форма выдает координаты:

Form.Left=-7
Form.Top=0

Кто в курсе что там поменяли в 10-ке?
3 ноя 18, 02:28    [21723127]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение формы на Win10.  [new]
Aniskin
Member

Откуда:
Сообщений: 303
Добавилась невидимая рамка. Реальные размеры окна без нее можно получить как-то так:

function GetRealWindowRect(AWnd: HWND; out ARect: TRect): Boolean;
var
  Enabled: BOOL;
begin
  Result := False;
  if Succeeded(DwmIsCompositionEnabled(Enabled)) and Enabled then
    Result := Succeeded(DwmGetWindowAttribute(AWnd, DWMWA_EXTENDED_FRAME_BOUNDS, @ARect, SizeOf(ARect)));
  if not Result then
    Result := GetWindowRect(AWnd, ARect);
end;
3 ноя 18, 03:12    [21723130]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение формы на Win10.  [new]
rgreat
Member

Откуда:
Сообщений: 4498
Походу надо делать хелпер для TForm.
3 ноя 18, 03:16    [21723132]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение формы на Win10.  [new]
rgreat
Member

Откуда:
Сообщений: 4498
В копилку

http://qaru.site/questions/455353/getwindowrect-returns-a-size-including-invisible-borders
3 ноя 18, 03:19    [21723133]     Ответить | Цитировать Сообщить модератору
 Re: Странное поведение формы на Win10.  [new]
Aniskin
Member

Откуда:
Сообщений: 303
rgreat
http://qaru.site/questions/455353/getwindowrect-returns-a-size-including-invisible-borders


qaru.site - это какой-то машинный переводчик с en на ru. Правильная ссылка:
https://stackoverflow.com/questions/34139450/getwindowrect-returns-a-size-including-invisible-borders
3 ноя 18, 03:24    [21723134]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить