Como evitar que a barra de tarefas oculte parte do form maximizado?
Do fórum ClubeDelphi:
Quando deixo o meu form principal com a propriedade WindowState com o valor wsMaximized, a parte inferior do form fica oculta pela barra de tarefas. O form não respeita o espaço livre da tela.
Como o problema não pode ser reproduzido, ao longo da discussão apareceu o causador do problema:
S[e] não me engano vc não pode desabilitar os botões de maximizar do form principal. Tenta lá... na opção BorderIcons deixa True para biMaximize.
Puxa... não ter o botão Maximizar e iniciar com o form maximizado causa o problema... Testei o tratamento da mensagem WM_GETMINMAXINFO e isso resolve o problema:
1 type 2 TSeuForm = class(... 3 private 4 procedure WMGetMinmaxInfo(var Msg: TWMGetMinmaxInfo); message WM_GETMINMAXINFO; 5 ... 6 7 procedure TSeuForm.WMGetMinmaxInfo(var Msg: TWMGetMinmaxInfo); 8 var 9 R: TRect; 10 begin 11 inherited; 12 13 // Obtem o retangulo com a area livre do desktop 14 SystemParametersInfo(SPI_GETWORKAREA, SizeOf(R), @R, 0); 15 16 Msg.MinMaxInfo^.ptMaxPosition := R.TopLeft; 17 OffsetRect(R, -R.Left, -R.Top); 18 Msg.MinMaxInfo^.ptMaxSize := R.BottomRight; 19 end;