2017-01-24 3 views
2

В настройках Delphi WindowState формы до wsMaximized должны отображаться как максимально развернутое окно.Неправильное изменение MainForm

В исходном коде я вижу, что эффект выполняется с помощью вызова WinAPI ShowWindow(HWND, SW_SHOWMAXIMIZED).

Окно показано максимально на самом деле.

Единственная проблема в Windows 10: форма пытается занять весь экран, а не всю рабочую область. Это отложило нижнюю часть, если форма скрыта от пользователя на панели задач. В Windows 7 это работает правильно.

Есть ли возможный обходной путь для решения этой проблемы?

+0

вы используете стили VCL? –

+0

Да, я использую стили VCL. –

+0

Итак, есть проблема. Ошибка стилей VCL. Prob rodrigos utils исправляет его –

ответ

-1

В качестве временного решения вы можете добавить этот код в форму в вопросе:

procedure TfrmMain.FormResize(Sender: TObject); 
var 
    R: TRect; 
    B: TPoint; 
begin 
    R := BoundsRect; 
    if (R.Top <= 0) and (R.Bottom >= Screen.DesktopHeight) then begin 
    R := Screen.WorkAreaRect; 
    B.X := GetSystemMetrics(SM_CXSIZEFRAME ) - 1; 
    B.Y := GetSystemMetrics(SM_CYSIZEFRAME ) - 1; 
    SetBounds(R.Left - B.X, R.Top - B.Y, R.Right - R.Left + B.X * 2, R.Bottom - R.Top + B.Y * 2); 
    end; 
end; 
+0

Это нехорошо. Не соблюдает сценарии нескольких мониторов. –

Смежные вопросы