Form´s estilo Delphi
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
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
Curtidas 0
Respostas
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
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.
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
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?
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
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
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.
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
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:
Na implementação:
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