Barra de tarefas oculta parte do form
Olá pessoal! Estou com uma dúvida...
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. Tentei algumas soluções mas sem suceso! Alguém sabe como posso fazer pra resolver isso?
Obrigado!
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. Tentei algumas soluções mas sem suceso! Alguém sabe como posso fazer pra resolver isso?
Obrigado!

Rabay
Curtidas 0
Respostas

Massuda
21/01/2005
Usando um projeto novo, não consigo reproduzir seu problema.[list:e647672c2d][*:e647672c2d]Qual a versão do seu Delphi?[*:e647672c2d]Qual versão do Windows está dando problema?[*:e647672c2d]Qual o valor do BorderStyle, FormStyle e Position do seu form?[*:e647672c2d]Você alterou o Constraints do form?[*:e647672c2d]Você faz algum processamento especial da mensagem WM_GETMINMAXINFO?[/list:u:e647672c2d]
GOSTEI 0

Aroldo Zanela
21/01/2005
Colega,
BorderStyle para bsNone
BorderStyle para bsNone
GOSTEI 0

Rabay
21/01/2005
Seguem maiores informações:
[*]Qual a versão do seu Delphi?
Delphi 7 Enterprise
[*]Qual versão do Windows está dando problema?
Windows 2000 Professional
[*]Qual o valor do BorderStyle, FormStyle e Position do seu form?
BorderStyle =
FormStyle =
Position =
[*]Você alterou o Constraints do form?
Não (não sei o que é isso! :-))
[*]Você faz algum processamento especial da mensagem WM_GETMINMAXINFO?
Não (Também não sei o que é!)
Espero ter ficado mais claro o problema!
[*]Qual a versão do seu Delphi?
Delphi 7 Enterprise
[*]Qual versão do Windows está dando problema?
Windows 2000 Professional
[*]Qual o valor do BorderStyle, FormStyle e Position do seu form?
BorderStyle =
FormStyle =
Position =
[*]Você alterou o Constraints do form?
Não (não sei o que é isso! :-))
[*]Você faz algum processamento especial da mensagem WM_GETMINMAXINFO?
Não (Também não sei o que é!)
Espero ter ficado mais claro o problema!
GOSTEI 0

Rabay
21/01/2005
[quote:48c6284b52=´Aroldo Zanela´]Colega,
BorderStyle para bsNone[/quote:48c6284b52]
Olá Aroldo!
Fiz o que você disse, mas neste caso a borda some! E o programa ocupa a tela toda, ocultando até a barra de tarefas. O que eu gostaria que acontecesse é o programa ocupar toda a tela útil, deixando visível apenas a barra de tarefas! :-)
Obrigado!
BorderStyle para bsNone[/quote:48c6284b52]
Olá Aroldo!
Fiz o que você disse, mas neste caso a borda some! E o programa ocupa a tela toda, ocultando até a barra de tarefas. O que eu gostaria que acontecesse é o programa ocupar toda a tela útil, deixando visível apenas a barra de tarefas! :-)
Obrigado!
GOSTEI 0

Rabay
21/01/2005
Corrigindo o post anterior... :-)
Seguem maiores informações:
[*]Qual a versão do seu Delphi?
Delphi 7 Enterprise
[*]Qual versão do Windows está dando problema?
Windows 2000 Professional
[*]Qual o valor do BorderStyle, FormStyle e Position do seu form?
BorderStyle = bsSizeable
FormStyle = fsNormal
Position = poDesktopCenter
[*]Você alterou o Constraints do form?
Não (não sei o que é isso! )
[*]Você faz algum processamento especial da mensagem WM_GETMINMAXINFO?
Não (Também não sei o que é!)
Espero ter ficado mais claro o problema!
Seguem maiores informações:
[*]Qual a versão do seu Delphi?
Delphi 7 Enterprise
[*]Qual versão do Windows está dando problema?
Windows 2000 Professional
[*]Qual o valor do BorderStyle, FormStyle e Position do seu form?
BorderStyle = bsSizeable
FormStyle = fsNormal
Position = poDesktopCenter
[*]Você alterou o Constraints do form?
Não (não sei o que é isso! )
[*]Você faz algum processamento especial da mensagem WM_GETMINMAXINFO?
Não (Também não sei o que é!)
Espero ter ficado mais claro o problema!
GOSTEI 0

Massuda
21/01/2005
Seguem maiores informações: [...]
Não consigo reproduzir seu problema (uso D5 + Win XP/SP2).
Algumas sugestões:[list=1:5e1f0aa763][*:5e1f0aa763]Deixe o WindowState do seu form em wsNormal (via Object Inspector) e mude o WindowState no evento OnCreate do seu form
[*:5e1f0aa763]Deixe o WindowState do seu form em wsNormal (via Object Inspector) e no evento OnCreate do seu form inclua o seguinte:
SendMessage(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
[*:5e1f0aa763]Inclua o seguinte no seu form:
type TSeuForm = class(... private procedure WMGetMinmaxInfo(var Msg: TWMGetMinmaxInfo); message WM_GETMINMAXINFO; // ... procedure TSeuForm.WMGetMinmaxInfo(var Msg: TWMGetMinmaxInfo); var R: TRect; begin inherited; // Obtem o retangulo com a area livre do desktop SystemParametersInfo(SPI_GETWORKAREA, SizeOf(R), @R, 0); Msg.MinMaxInfo^.ptMaxPosition := R.TopLeft; OffsetRect(R, -R.Left, -R.Top); Msg.MinMaxInfo^.ptMaxSize := R.BottomRight; end;
GOSTEI 0

Aroldo Zanela
21/01/2005
[quote:34c8476e1c=´Aroldo Zanela´]Colega,
BorderStyle para bsNone
Olá Aroldo!
Fiz o que você disse, mas neste caso a borda some! E o programa ocupa a tela toda, ocultando até a barra de tarefas. O que eu gostaria que acontecesse é o programa [b:34c8476e1c]ocupar toda a tela útil, deixando visível apenas a barra de tarefas[/b:34c8476e1c]! :-)
Obrigado![/quote:34c8476e1c]
Colega,
Basta então, alterar a propriedade WindowState para wsMaximized.
GOSTEI 0

Rabay
21/01/2005
[quote:900ac57e71=´Aroldo Zanela´]Colega,
Basta então, alterar a propriedade WindowState para wsMaximized.[/quote:900ac57e71]
Exatamente, só que o problema está acontecendo justamente por causa disto! Eu seto esta propriedade e a janela fica maior que a área disponível na tela.
Basta então, alterar a propriedade WindowState para wsMaximized.[/quote:900ac57e71]
Exatamente, só que o problema está acontecendo justamente por causa disto! Eu seto esta propriedade e a janela fica maior que a área disponível na tela.
GOSTEI 0

Rabay
21/01/2005
[quote:adf767cd9f=´rabay´]Seguem maiores informações: [...]
Não consigo reproduzir seu problema (uso D5 + Win XP/SP2).
Algumas sugestões...
[/quote:adf767cd9f]
Massuda, a dica três é complementar a dica dois ou cada uma é independente? Se sim, como faço para utilixar a procedure da dica três?
Grato!
GOSTEI 0

Massuda
21/01/2005
a dica três é complementar a dica dois ou cada uma é independente?
É independente.como faço para utilixar a procedure da dica três?
Você não precisa fazer nada além de adicionar a procedure na classe do seu form.Essa procedure irá tratar a mensagem do Windows que pede o tamanho e a posição do seu form quando maximizado/minimizado; a idéia é dizer ao Windows para usar a área correspondente ao desktop.
GOSTEI 0

Rodc
21/01/2005
hehe... já tive este problema tb. S 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.
Rodrigo Cesar
Tenta lá... na opção BorderIcons deixa True para biMaximize.
Rodrigo Cesar
GOSTEI 0

Massuda
21/01/2005
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 dá o problema... Testei o tratamento da mensagem WM_GETMINMAXINFO como sugeri e isso parece resolver o problema neste caso.GOSTEI 0

Rabay
21/01/2005
[quote:b491a1cd12=´rodc´]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 dá o problema... Testei o tratamento da mensagem WM_GETMINMAXINFO como sugeri e isso parece resolver o problema neste caso.[/quote:b491a1cd12]Realmente o tratamento da mensagem resolveu o problema!!!
Deixei como Maximized e o botão de maximizar desabilitado e inclui o código que você passou. Funcionou direitinho!
Muito obrigado a todos pela ajuda!!!
GOSTEI 0

Lakhan
21/01/2005
Galera, tive o mesmo problema e resolví o problema de outra forma...
Percebí que esse problema só ocorria quando a propriedade Align está configurada como AlNone.
Definindo como AlClient o form ficará automaticamente com o tamanho adequado, pegando o desktop todo sem cobrir a barra de tarefas...
Comigo deu certo com todas variações de estilo de borda e form que testei...
Percebí que esse problema só ocorria quando a propriedade Align está configurada como AlNone.
Definindo como AlClient o form ficará automaticamente com o tamanho adequado, pegando o desktop todo sem cobrir a barra de tarefas...
Comigo deu certo com todas variações de estilo de borda e form que testei...
GOSTEI 0

Rmarcelop
21/01/2005
De acordo como o nosso amigo lakhan falou, é só fazer:
BorderIcons = [biSystemMenu, biMinimize, biMaximize]
BorderStyle = bsSingle
WindowState = wsNormal
Align = alClient
[]´s
BorderIcons = [biSystemMenu, biMinimize, biMaximize]
BorderStyle = bsSingle
WindowState = wsNormal
Align = alClient
[]´s
GOSTEI 0

Anderson Oliveira
21/01/2005
Alguém já conseguiu fazer o MDI Filho não obedecer a limitação do MDI PAI? Ou seja, extrapolando os limites do form principal...
GOSTEI 0

Claudio Poletto
21/01/2005
Galera, consegui resolver, a tela do form principal fica maximizada acima da barra de tarefas do windows, fiz muitas tentativas até descobrir, vou deixar aqui o que fiz caso alguém esteja com mesmo problema....
BorderIcons=
*biSystenMenu:=False
*biMinimized:=True
*biMaximized=True
*biHelp=False
BorderStyle=bsSingle
Valeu... grande abraço...
BorderIcons=
*biSystenMenu:=False
*biMinimized:=True
*biMaximized=True
*biHelp=False
BorderStyle=bsSingle
Valeu... grande abraço...
GOSTEI 0