Fórum Form´s estilo Delphi #323944

21/06/2006

0

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

Responder

Posts

21/06/2006

Adriano Santos

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.


Responder

Gostei + 0

21/06/2006

Rodc

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;



Responder

Gostei + 0

21/06/2006

Rodrigo Vaccari

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?


Responder

Gostei + 0

21/06/2006

Adriano Santos

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.


Responder

Gostei + 0

21/06/2006

Rodc

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


Responder

Gostei + 0

21/06/2006

Rodc

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;



Responder

Gostei + 0

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

Aceitar