Ich möchte die Position eines Controls in einer Form an eine andere Form weitergeben um diese analog eines Popups anzeigen zu können.
Solange die Positionsermittlung (Top,Left) innerhalb der aufrufenden Form erfolgt funktioniert auch die Anzeige des aufzurufenden Form.
Übergebe ich stattdessen das Control an eine Unit (Wrapper) bekomme ich falsche Koordinaten des Controls. Die Anzeige des Forms ist immer nach unten rechts verschoben.
Folgendes OnClick für beliebige Controls funktioniert, da in der Form defeniert:
Code: Alles auswählen
procedure TForm1.ControlClick(Sender: TObject);
var
p :tPoint;
begin
p := ClientToScreen(Point((Sender as TControl).Left,(Sender as TControl).Top));
TLWH.Top := P.y;
TLWH.Left := P.x;
TLWH.Width := (Sender as TControl).Width;
TLWH.Height:= (Sender as TControl).HelpContext;
FrmMyHelp.Show;
end;
Code: Alles auswählen
procedure TForm1.ControlClickDirekt(Sender: TObject);
begin
ShowMyForm((Sender as TControl));
end;
//Wrapper in UNIT
procedure ShowMyForm(myCont: TControl);
var
CP : TPoint;
mP : string;
begin
//mP := myCont.Parent.Name;
CP := myCont.ClientToScreen(Point(myCont.Left,myCont.Top));
TLWH.Top := CP.y;
TLWH.Left := CP.x;
TLWH.Width := myCont.Width;
TLWH.Height:= myCont.HelpContext;
FrmMyHelp.Show;
end;
Wo hab ich denn diesmal meinen Denkfehler
