Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Popupmenu öffnet sich nicht an angegebener Stelle (https://www.delphipraxis.net/71067-popupmenu-oeffnet-sich-nicht-angegebener-stelle.html)

Andreas L. 8. Jun 2006 11:24


Popupmenu öffnet sich nicht an angegebener Stelle
 
Liste der Anhänge anzeigen (Anzahl: 3)
Hi,
ich bin gerade dabei mir einen Objekt-Inspector zu bauen. Jetzt wollte ich das ein PopUpmenu sind ähnlich wie eine Combobox öffnet. hierzu habe ich einen Button und 1 Label. Das Menü soll also am linken unteren Eck vom Label öffnen. Ich habe folgenden Code benutzt:

Delphi-Quellcode:
var
 cursors: TPoint;
begin
 cursors:=Clienttoscreen(Point(button2.left - 84, button2.top + button2.height));
 PopUpMenu2.popup(cursors.x,cursors.y);
Leider geht es nicht da auf wo ich möchte. Siehe Screenshot.

Was läuft da falsch?

KrasserChecker 8. Jun 2006 11:45

Re: Popupmenu öffnet sich nicht an angegebener Stelle
 
Eigentlich willst Du das Menü ja relativ zur Position des Buttons bestimmen. Probiere doch mal folgendes:
Delphi-Quellcode:
var
cursors: TPoint;
begin
cursors:=Button2.Clienttoscreen(Point(-84, button2.height));
PopUpMenu2.popup(cursors.x,cursors.y);

marabu 8. Jun 2006 12:23

Re: Popupmenu öffnet sich nicht an angegebener Stelle
 
Hallo Andreas,

Zitat:

Zitat von onlinehome
hierzu habe ich einen Button und 1 Label. Das Menü soll also am linken unteren Eck vom Label öffnen.

dann besser so:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  p: TPoint;
begin
  with TheLabel do
  begin
    p.X := Left;
    p.Y := Top + Height;
    p := Parent.ClientToScreen(p);
    ContextMenu.Popup(p.X, p.Y);
  end;
end;
Grüße vom marabu

Andreas L. 8. Jun 2006 12:29

Re: Popupmenu öffnet sich nicht an angegebener Stelle
 
Zitat:

Zitat von marabu
Hallo Andreas,

Zitat:

Zitat von onlinehome
hierzu habe ich einen Button und 1 Label. Das Menü soll also am linken unteren Eck vom Label öffnen.

dann besser so:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  p: TPoint;
begin
  with TheLabel do
  begin
    p.X := Left;
    p.Y := Top + Height;
    p := Parent.ClientToScreen(p);
    ContextMenu.Popup(p.X, p.Y);
  end;
end;
Grüße vom marabu

Juhu, funktioniert. Danke ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz