Width e Height

Delphi

22/06/2006

Quando maximizo o form ele muda o Width e Height, mas eu queria saber o Width e o Height do form em estado normal tem como saber quando o form está no estado de maximizado??


Rudá

Rudá

Curtidas 0

Respostas

Steve_narancic

Steve_narancic

22/06/2006

voce pode criar duas variaiveis e no on create do form grava o Width e Height nestas variaveis


GOSTEI 0
Rudá

Rudá

22/06/2006

E se a pessoa redireciona o form como é que vai saber!


GOSTEI 0
Marco Salles

Marco Salles

22/06/2006

E se a pessoa redireciona o form como é que vai saber!


evento OnResize

procedure TForm1.FormResize(Sender: TObject);
begin
h:=form1.Height;
W:=form1Width;
end;



GOSTEI 0
Rudá

Rudá

22/06/2006

Obrigado, funcionou!

Agora mais uma dúvida, eu to querendo fazer o seguinte:

É gravado no registro o tamanho do form e o WindowState, para que quando ele entrar de novo no form se for fechado o programa ficar do mesmo tamanho e WindowState. Só que achei esse problema do tamanho do form, se ele sair do programa com o form maximizado, então quando ele entrar de novo vai tar maximizado só que se ele restaurar para o normal ele tem que tar do mesmo tamanho que o cara colocou antes de fechar o programa!

Exemplo é o programa do msn se vc deixa maximizado e fecha ele quando abrir de novo ele vai tar maximizado, se vc deixa normal com um determinado tamanho, quando fechar e abrir vai tar do mesmo modo, eu estou querendo fazer isso pode me ajudar??


GOSTEI 0
Marco Salles

Marco Salles

22/06/2006

Exemplo é o programa do msn se vc deixa maximizado e fecha ele quando abrir de novo ele vai tar maximizado, se vc deixa normal com um determinado tamanho, [b:fd3d67d78c]quando fechar e abrir vai tar do mesmo modo, eu estou querendo fazer isso pode me ajudar[/b:fd3d67d78c]??


eu nun entendi a dificuldade.... se voce mesmo diz que usa os registros do windows

É gravado no registro o tamanho do form e o WindowState


, porque não ao fechar o form voce grava os valores e ao abrir o form voce usa esses valores..


GOSTEI 0
Rudá

Rudá

22/06/2006

Se eu coloco o OnResize quando maximizo ele muda tb o tamanho, ai não tem como saber o tamanho do form no estado normal!

fiz tb assim mas não funcionou!
if(WindowState = wsNormal) then
Tamanho.Text:= IntToStr(Width) + ´ x ´ + IntToStr(Height);


Pode me ajudar??


GOSTEI 0
Marco Salles

Marco Salles

22/06/2006

Se eu coloco o OnResize quando maximizo ele muda tb o tamanho, ai não tem como saber o tamanho do form no estado normal!


é porque as coisas acontecem depois do evento onResize

uma solução para istop é enviar uma mensagem para o windows e depois captura-la

tente aplicar esses conceitos abiaxo em seu programa

private
    procedure Wmuser(var msg:Tmessage);message wm_user;
    { Private declarations }
  public
    { Public declarations }
  end;


procedure TForm1.FormResize(Sender: TObject);
begin
postmessage(handle,wm_user,0,0);
end;


procedure TForm1.Wmuser(var msg: Tmessage);
begin
//aqui voce vai testar o estado "futuro" do form..isto é logo 
//apos ele ser alterado....
if form1.WindowState = wsMaximized then
  showmessage(´maximizado´)
else
 showmessage(´alterou´);
end;



GOSTEI 0
Rudá

Rudá

22/06/2006

Valeu pela ajuda pessoal mas consegui uma coisa mais simples!


var
Pl: TWindowPlacement;
R: TRect;
begin
Pl.Length:= SizeOf(TWindowPlacement);
GetWindowPlacement(Form.Handle,@Pl);
R:= Pl.rcNormalPosition;
// Width:= R.Right-R.Left;
// Height:= R.Bottom-R.Top;
// Left:= R.Left;
// Top:= R.Top;


Esse código mostra o tamanho do form no seu estado normal!


GOSTEI 0
POSTAR