sexta-feira, 28 de setembro de 2018

LAZARUS: Dica de janela sem bordas e maximizada

OBS: teste realizado apenas no Windows 10 64 bits. Cabe a vocês testarem no Linux e outras versões do Windows.


Olá pessoal, esta pode ser uma dica que irá ajudar muitas pessoas.

Estou num projeto, no Lazarus, utilizando janelas personalizadas. Neste caso janelas sem borda. 
O Form principal abre maximizado, porém ocorria um pequeno problema.

Quando utilizado o BorderStyle como bsNone ou bsDialog, a janela maximizada ocupava toda a tela, cobrindo assim a barra de tarefas.

Não era o que eu queria, porque quando utilizamos BorderStyle como bsSingle ou bsSizable, a janela é maximizada até o limite da barra de tarefas.

Procurei por códigos que pudessem ajudar neste sentido, e encontrei alguns, porém se alterasse o tamanho da barra de tarefas, ou se trocasse sua posição de lugar (afinal posso coloca-la nos lados ou em cima), o código já não servia.

Localizei em um fórum a resposta data por Welliton Klein Fokushima, para esta questão!

Neste caso, simplifiquei um pouco o código, o que já serviu ao seu propósito, então vamos a solução.

No evento OnShow do formulário principal, acrescentei o seguinte:

   Top := Screen.WorkAreaTop;
   Left := Screen.WorkAreaLeft;
   Height := Screen.WorkAreaHeight;
   Width := Screen.WorkAreaWidth;

Feito isto o Form não cobriu a barra de tarefas, e independente da posição, seja em cima, em baixo, ou dos lados, o mesmo foi aberto corretamente.

É isso pessoal, espero ter ajudado e 
Abraço a todos.