Posição dos componentes em relação a tela inteira

Delphi

27/07/2007

Alguém sabe como pegar a posição e altura do componente em relação a tela inteira e não só ao componente pai ou form restrito a ele? eu queria colocar um form embaixo de um componente certinho, só q esse componente está dentro de muitos componentes, e fica ruim ficar pegando as posições dos componentes e somando-as, pq o número de componentes pai pode mudar. se alguém souber de um método nativo no delphi, por favor. senão, eu me viro mesmo.


Yakazuma1

Yakazuma1

Curtidas 0

Respostas

Marco Salles

Marco Salles

27/07/2007

se alguém souber de um método nativo no delphi, por favor. senão, eu me viro mesmo.


acho que voce pode usar a Api GetWindowsRect

var pRect:TRect; begin GetWindowRect(Seucomponente.Handle,pRect); pRect.left-->>>posicao em relação a esquerda em relação a tela pRect.top-->>>posicao em relação ao Top end;



GOSTEI 0
Adriano Santos

Adriano Santos

27/07/2007

Dá uma olhada nisso.
Tenho dois forms aqui. O primeiro form tem um button e um checkbox. Se marcar o checkbox o form é alinhado pela esquerda do componente button, do contrário é alinha a direita. Veja se ajuda pra você ter uma idéia.
procedure TForm1.Button1Click(Sender: TObject);
var
  Pt: TPoint;
  Topo: Integer;
  Eval: Integer;
begin
  GetCursorPos(Pt);
  Form2 := TForm2.Create(Application);
  if CheckBox1.Checked then
  begin
    Form2.Left := Form1.Left + TButton(Sender).Left + 5;
    Form2.Top := Form1.Top + TButton(Sender).Top + 55;// Form1.Top + Self.Top + Self.Height + 30;
  end
  else
  begin
    Form2.Left := Form1.Left + TButton(Sender).Left + 5 - Form2.Width + TButton(Sender).Width;
    Form2.Top := Form1.Top + TButton(Sender).Top + 55;// Form1.Top + Self.Top + Self.Height + 30;
  end;
  Form2.ShowModal;
  Form2.Free;
end;



GOSTEI 0
Junior Zanca

Junior Zanca

27/07/2007

se alguém souber de um método nativo no delphi, por favor. senão, eu me viro mesmo.


acho que voce pode usar a Api GetWindowsRect

var pRect:TRect; begin GetWindowRect(Seucomponente.Handle,pRect); pRect.left-->>>posicao em relação a esquerda em relação a tela pRect.top-->>>posicao em relação ao Top end;




Boa Dica
GOSTEI 0
POSTAR