Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - PopUp aus Button


Leathl - Do 27.03.03 22:31
Titel: PopUp aus Button
---


Christian S. - Do 27.03.03 22:41

Ist es das, was Du brauchst?


Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  PopUpmenu1.Popup(Button1.Left+Form1.Left,Button1.Top+Form1.Top);
end;


Wenn ich die Form verschiebe, ändert sich an der Position relativ zum Button nichts.

MfG,
Peter


wulfskin - Do 27.03.03 22:44

Leider, wenn ich mich recht erinnere, verlangt diese Prozedur die absoluten Bildschirmkoordinaten. Ich würde es deshalb so machen:

Quelltext
1:
2:
with Mouse.CursorPos do
  PopupMenu1.Popup(X, Y);
Gruß wulfskin!


Leathl - Do 27.03.03 22:57

---


Christian S. - Do 27.03.03 23:00

Ich dachte, das PopUp-Menu soll immer an derselben Stelle auftauchen. Aber ich kann unterschiedlichen Stellen des Buttons klicken und das Menü wird an unterschiedlichen Stellen erscheinen!


Tino - Fr 28.03.03 10:07

Versuch es mal so:

Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Button1Click(Sender: TObject);
begin
  With ClientToScreen (Point (Button1.Left, Button1.Top + Button1.Height)) Do
    PopupMenu1.Popup (x, y);
end;


Gruß
Tino


Delete - Fr 28.03.03 10:11

Öhm Tion: with und ClientToScreen? :shock: Überleg dir das noch mal bitte. Meines Wissens kennt ClientToScreen keine Methode oder Eigenschaft PopupMenu.


Tino - Fr 28.03.03 10:14

ClientToScreen gibt als Ergebnis ein Record vom Type tPoint zurück. Und darauf beziehe ich mich in dem darauffolgenden Aufruf von Popup. Warum sollte das nicht funktionieren?

Gruß
Tino


Delete - Fr 28.03.03 13:35

Das geht ja tatsächlich. Wieder was gelernt.


Leathl - Fr 28.03.03 16:10

---


Renegade - Sa 29.03.03 12:14

@Leathl

An Deiner Stelle würde ich die vorschläge, die hier gemacht werden zumindest mal ausprobieren. Man lernt ne Menge dabei. Einem Programmierer sollte es nicht egal sein, wie etwas funktioniert - er sollte wissen warum es funktioniert.