Maximizando um form no windows XP

Delphi

13/11/2004

Olá, pessoal!

Quando uso a propriedade WindowsState = wsMaximized do Form tanto em tempo de projeto quanto em tempo de execusao, o form aparece maximizado mas nao na posicao correta da tela... tipo aparece alguns pixels abaixo do topo da tela, mas apenas no Windows XP com o esquema padrão.

[URL=http://img122.exs.cx/my.php?loc=img122&image=maxXP.png][img:2b14d4858b]http://img122.exs.cx/img122/1576/maxXP.th.png[/img:2b14d4858b][/URL]

Observem o topo da tela como fica. Isso acontece em todas as maquinas com XP no esquema padrao do XP. (testei em 4 maquinas com XPSP1 e 2)

Inclusive, até na instalacao dos componentes Jedi 3.0 acontece a mesma coisa :D

Qd rodo o programa no windows 98, funciona perfeito. E qd uso o XP com o esquema Classico (com aparencia de windows 98), a tela aparece corretamente!!! :shock:

Alguem ja passou por isso, ou tem alguma dica?

Agradeço...


Silvio Ribeiro

Silvio Ribeiro

Curtidas 0

Respostas

Michael

Michael

13/11/2004

Olá Silvio!

Você pode tentar posicionar o formulário no topo e na esquerda da tela antes de maximizá-lo com a propriedade WindowState:

Top := 0;
Left := 0;


Se mesmo assim não funcionar, tente executar este código depois de maximizar a janela. Não testei, por isso não posso afirmar se funciona.

Abraços!


GOSTEI 0
Silvio Ribeiro

Silvio Ribeiro

13/11/2004

Ae Michael...

Valeu a dica... mas algo me dizia q nao era so isso.. e realmente nao foi. mas me ajudou a resolver o problema. quado fiz o form1.top := 0 e form1.left := 0, coloquei antes um showmessage mostrando os valores atuals do top e left do form, que por sinal eram -4 nos dois.

Mas ai vi q no momento do showmessage, logo apos o form.windowstate:=wsMaximized, a tela ficava maximizada sem ter aquela diferenca no topo... mas logo em seguida do showmessage, era como se ela fizesse um repaint ou algo assim q dava aquela diferença em cima.

Pra resolver, eu fiz assim:

frmMain.windowState := wsMaximized;
frmMain.windowState := wsMinimized;
frmMain.windowState := wsMaximized;

ehheh parece idiota, mas resolveu... valeu pela dica Michael!


GOSTEI 0
Marcosrocha

Marcosrocha

13/11/2004

Isso realmente funciona dessa maneira, mas existe uma maneira correta!! Qualquer coisa eu posto aqui no fórum!!!


GOSTEI 0
Marcosrocha

Marcosrocha

13/11/2004

Isso realmente funciona dessa maneira, mas existe uma maneira correta!! Qualquer coisa eu posto aqui no fórum!!!

Aqui eu fiz assim!!!

Setei a propriedade inicial do WindowState como wsNormal e no FormShow do programa: frmMain.WindowState := wsMaximized;

100¬ de certeza que funciona!!! Testado e aprovado pelo XP!!
xD


GOSTEI 0
POSTAR