Form´s estilo Delphi

Delphi

21/06/2006

Olá pessoALL

Tenho um form principal que fica no topo do desktop, com uma altura de 200. Agora preciso que meu form2 ao ser criado, fique abaixo do form principal, ou seja, que a área que ele possa utilizar inicie abaixo do form principal. De forma semelhante ao Delphi, ou seja, no delphi possuimos a barra de ferramentas o object inspector e a tela de código, o maximizarmos a tela de código, ela não sobrepõe a barra de ferramentas.
Alguém tem alguma dica?

{}´s
Jaca


Rodrigo Vaccari

Rodrigo Vaccari

Curtidas 0

Respostas

Adriano Santos

Adriano Santos

21/06/2006

Olá pessoALL Tenho um form principal que fica no topo do desktop, com uma altura de 200. Agora preciso que meu form2 ao ser criado, fique abaixo do form principal, ou seja, que a área que ele possa utilizar inicie abaixo do form principal. De forma semelhante ao Delphi, ou seja, no delphi possuimos a barra de ferramentas o object inspector e a tela de código, o maximizarmos a tela de código, ela não sobrepõe a barra de ferramentas. Alguém tem alguma dica? {}´s Jaca


Vc pode fazer uma conta, exemplo:

procedure TForm1.Button1Click(Sender: TObject);
begin
  FormDialogo.Top := (Screen.Heigth div 2) - (FormDialogo.Heigth div 2);
  FormDialogo.Left := (Screen.Width div 2) - (FormDialogo.Width div 2);
end;


Isso centraliza o FormDialogo na tela em relação ao Screen, ou seja, ele se adapta a resolução de tela.


GOSTEI 0
Rodc

Rodc

21/06/2006

Você pode pegar o evento WM_MAXIMIZE e não permitir que a o form2 sobreponha o primeiro form.
O exemplo abaixo eu usei no evento OnCanResize() do form2, apenas para testar.
    NewHeight := Screen.Height - (Form1.Top + Form1.Height);
    Form2.Top := Form1.Top + Form1.Height;



GOSTEI 0
Rodrigo Vaccari

Rodrigo Vaccari

21/06/2006

Interessante a sua sugestão rodc

Dei uma aprimorada nela:

procedure TForm2.FormCreate(Sender: TObject);
begin
Form2.Height := Screen.WorkAreaHeight - (Form1.Top + Form1.Height);
Form2.Width := screen.DesktopWidth;
Form2.Left := 0;
Form2.Top := Form1.Top + Form1.Height;
end;

Gostaria de inserir essa função quando o usuário maximiza o form2, onde faço isso?


GOSTEI 0
Adriano Santos

Adriano Santos

21/06/2006

Interessante a sua sugestão rodc Dei uma aprimorada nela: procedure TForm2.FormCreate(Sender: TObject); begin Form2.Height := Screen.WorkAreaHeight - (Form1.Top + Form1.Height); Form2.Width := screen.DesktopWidth; Form2.Left := 0; Form2.Top := Form1.Top + Form1.Height; end; Gostaria de inserir essa função quando o usuário maximiza o form2, onde faço isso?



No OnResize já funciona.


GOSTEI 0
Rodc

Rodc

21/06/2006

[quote:858bbed0b3=´Adriano Santos´]No OnResize já funciona.[/quote:858bbed0b3]
Eis a questão, se colocar no OnResize o Form2 ficaria sempre fixo abaixo do form1, e não é assim que funciona, por exemplo, no Delphi. O form 2 tem de estar fixo apenas quando estiver maximizado.

Tem um código que pega o evento de OnMaximize. Vou ver e depois posto aqui.


GOSTEI 0
Rodc

Rodc

21/06/2006

Não consegui testar pois aqui tenho o BCB e C++ é horrível para trabalhar com mensagens do Windows.
Mas vai ser algo como o código abaixo.

Na declaração:
procedure WMSize(var Message: TWMSize); message WM_SIZE;

Na implementação:
procedure TForm2.WMSize(var Message: TWMSize); message WM_SIZE;
begin
    if (Message.Msg = SIZE_MAXIMIZED) then
    // Seu código de ajuste
end;



GOSTEI 0
POSTAR