Posicionar um form conf. posição de um Edit
Ola pessoal
Estou utilizando o Delphi com o Windows XP. Para posicionar uma nova janela numa determinada posição da tela, ao lado de um TEdit por exemplo, altero as propriedades do novo form (top e left) utilizando as informações desse TEdit e seus ascendentes, porém não estou obtendo o resultado esperado. Talvez falte aí somar a altura da barra de título do TForm onde está esse TEdit. Se for isso, como faço para obter esse valor? Utilizo a função abaixo que traz o valor top e left esperado.
function PosObj(Sender: TObject): TPoint;
var
Obj: TControl;
Pos: TPoint;
begin
Obj := TControl(Sender);
Pos.X := Obj.Top;
Pos.Y := Obj.Left;
while not (Obj.Parent = nil) do
begin
Obj := Obj.Parent;
Inc(Pos.X, Obj.Top);
Inc(Pos.Y, Obj.Left);
end;
Result := Pos;
end;
Estou utilizando o Delphi com o Windows XP. Para posicionar uma nova janela numa determinada posição da tela, ao lado de um TEdit por exemplo, altero as propriedades do novo form (top e left) utilizando as informações desse TEdit e seus ascendentes, porém não estou obtendo o resultado esperado. Talvez falte aí somar a altura da barra de título do TForm onde está esse TEdit. Se for isso, como faço para obter esse valor? Utilizo a função abaixo que traz o valor top e left esperado.
function PosObj(Sender: TObject): TPoint;
var
Obj: TControl;
Pos: TPoint;
begin
Obj := TControl(Sender);
Pos.X := Obj.Top;
Pos.Y := Obj.Left;
while not (Obj.Parent = nil) do
begin
Obj := Obj.Parent;
Inc(Pos.X, Obj.Top);
Inc(Pos.Y, Obj.Left);
end;
Result := Pos;
end;
Helderjr
Curtidas 0
Respostas
Massuda
09/08/2005
Dentro do form que contem o Edit, faça algo assim:
var P: TPoint; F: TSeuForm; ... // calcula a posição na tela do edit P := ClientToScreen(Point(Edit.Left, Edit.Top)); // posiciona o form abaixo do edit F.Left := P.X; F.Top := P.Y + Edit.Height + 1; // posiciona o form à direita do edit F.Left := P.X + Edit.Width + 1; F.Top := P.Y; ...
GOSTEI 0