Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi durch popup menü label erstellen (https://www.delphipraxis.net/36101-durch-popup-menue-label-erstellen.html)

the_beginner 15. Dez 2004 20:32


durch popup menü label erstellen
 
juten abend an alle,

ich habe ne frage und über ne antwort währe ich sehr froh.

frage: besteht die möglichkeit, über ein popup menü (das ich schon habe) einen button an der stelle zu kreieren, auf die ich mit der rechten maustaste geklickt habe um das popup menü aufzumachen?

wenn ja, wie? das problem am popup menü ist, dass es keine x und y parameter mit sich trägt und man dem objekt dann nicht sagen kann wo es erstellt werden soll. die einzige lösung währe vielleicht wenn man dann die aktuelle mausposition - bzw + der größe des popup fensters rechnet und dann dort das label kreiert, wobei dann das problem auftritt, dass der findige benutzer die maus irgendwo anders parkt und mit der tastatur arbeitet ;)

also über hilfe währe ich sehr dankbar!
the_beginner
:dp:

DennyC 15. Dez 2004 21:31

Re: durch popup menü label erstellen
 
Hallo!

Vielleicht beschreibst Du mal noch, wo denn das Popup herkommt, auf welchem Element soll das Label entstehen?!

Denny

Udo 16. Dez 2004 08:37

Re: durch popup menü label erstellen
 
Hi

Kannst dir doch im OnMouseDown die Koordinaten merken.

Udo

the_beginner 16. Dez 2004 12:59

Re: durch popup menü label erstellen
 
also: das popup ist ein "PopUpMenu" aus dem Unitkasten "Menu" von Delphi 7. Das PopupMenü hat die Einträge:
- Label erstellen
- Label löschen
- Label verschieben.

Dadurch das das PopupMenü jedoch im Objektinspektor bei Form1 unter Ereignisse bei PopupMenü eingetragen ist, bekomme ich keinerlei X und Y Werte, wie es normalerweise ist, wenn ich eine Prozedur oder etwas Anderes bei "OnMouseDown" reinschreibe.

Die Labels die erstellt werden sollen, sollen aber da erstellt werden, wo man draufgeklickt hat um das PopUp Menu aufzumachen, bzw auch da gelöscht werden, falls dort ein Label existiert. Mein Problem ist halt nur, dass ich keinerlei Werte bekomme und somit nicht Checken kann obdort schon ein Objekt ist bzw wo ich das Objekt erstellen soll.

(Das Label soll auf Form1 erstellt werden)

Jelly 16. Dez 2004 13:03

Re: durch popup menü label erstellen
 
Du kannst dir doch im OnMouseDown-Ereignis deiner Form die Koordinaten merken.

BluesKid 16. Dez 2004 13:09

Re: durch popup menü label erstellen
 
Moin

Zitat:

Dadurch das das PopupMenü jedoch im Objektinspektor bei Form1 unter Ereignisse bei PopupMenü eingetragen ist..
Lass das doch einfach weg. (e.g Form1.PopupMenu := nil)

Im MouseDown des Forms prüfen, obs die rechte Maustaste ist, wenn ja, Koordinaten merken (globale Variablen.. :? ) und Popopemenu1.popup aufrufen.

Dabei kannst du dann auch gleich vorher prüfen, ob an dieser Stelle schon ein Control vorhanden ist und dein Popupmenu entsprechend anpassen.


schönen Gruß
Sam

the_beginner 16. Dez 2004 14:06

Re: durch popup menü label erstellen
 
Zitat:

Zitat von BluesKid
Moin

Zitat:

Dadurch das das PopupMenü jedoch im Objektinspektor bei Form1 unter Ereignisse bei PopupMenü eingetragen ist..
Lass das doch einfach weg. (e.g Form1.PopupMenu := nil)

Im MouseDown des Forms prüfen, obs die rechte Maustaste ist, wenn ja, Koordinaten merken (globale Variablen.. :? ) und Popopemenu1.popup aufrufen.

Dabei kannst du dann auch gleich vorher prüfen, ob an dieser Stelle schon ein Control vorhanden ist und dein Popupmenu entsprechend anpassen.


schönen Gruß
Sam

so ich hab das jetzt so gemacht wie du es gesagt hast, aber irgendwie popt das popup fenster etwa 50-100 pixel weiter oben und etwas rechts versetzt auf! woran liegt das?

hier der code:
Delphi-Quellcode:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  IF button=mbRight
   THEN popupmenu1.Popup(x,y);
end;

BluesKid 16. Dez 2004 14:16

Re: durch popup menü label erstellen
 
Delphi-Referenz durchsuchenClientToScreen()

the_beginner 17. Dez 2004 16:53

Re: durch popup menü label erstellen
 
Zitat:

Zitat von BluesKid

hä? was meisnt du damit? das ist so wie wenn ich einfach nur sage "Apfelbaum"! 0 Inhalt und keiner weiß um was es geht, wenn er den Befehl nicht kennt!

Treffnix 17. Dez 2004 16:58

Re: durch popup menü label erstellen
 
Zitat:

Zitat von the_beginner
Zitat:

Zitat von BluesKid

hä? was meisnt du damit? das ist so wie wenn ich einfach nur sage "Apfelbaum"! 0 Inhalt und keiner weiß um was es geht, wenn er den Befehl nicht kennt!

Wenn du den Mauszeiger über das bewegst, siehst du den Hint "Schau in die Delphi-Hilfe". Das wollte er dir damit sagen. Dein Problem ist, das du verschiedene X/Y-Koordinaten kombinierst. Einmal ist 0/0 die obere linke Ecke deines Formulars und einmal die des Bildschirms. Würdest du dein Formular in die linke obere Ecke schieben, müsste es passen. Mit ClientToScreen bzw. ScreenToClient kannst do genau diesen Unterschied umrechnen. Also tu, was der Hint dir sagt ;)

btw: Wenn man
Zitat:

den Befehl nicht kennt
ist es mit oder ohne immer eine gute Idee in der Hilfe nachzuschlagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:44 Uhr.
Seite 1 von 2  1 2      

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