Fórum Barra de tarefas oculta parte do form #266293

21/01/2005

0

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!


Rabay

Rabay

Responder

Posts

21/01/2005

Massuda

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]


Responder

Gostei + 0

21/01/2005

Aroldo Zanela

Colega,

BorderStyle para bsNone


Responder

Gostei + 0

21/01/2005

Rabay

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!


Responder

Gostei + 0

21/01/2005

Rabay

[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!


Responder

Gostei + 0

21/01/2005

Rabay

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!


Responder

Gostei + 0

21/01/2005

Massuda

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:
1
SendMessage(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);


[*:5e1f0aa763]Inclua o seguinte no seu form:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
[/list:o:5e1f0aa763]


Responder

Gostei + 0

21/01/2005

Aroldo Zanela

[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.


Responder

Gostei + 0

28/01/2005

Rabay

[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.


Responder

Gostei + 0

28/01/2005

Rabay

[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!


Responder

Gostei + 0

28/01/2005

Massuda

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.


Responder

Gostei + 0

28/01/2005

Rodc

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


Responder

Gostei + 0

28/01/2005

Massuda

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.


Responder

Gostei + 0

28/01/2005

Rabay

[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!!!


Responder

Gostei + 0

09/01/2008

Lakhan

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...


Responder

Gostei + 0

25/02/2008

Rmarcelop

De acordo como o nosso amigo lakhan falou, é só fazer:

BorderIcons = [biSystemMenu, biMinimize, biMaximize]
BorderStyle = bsSingle
WindowState = wsNormal
Align = alClient

[]´s


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar