Einträge beim Untermenu eines Popups hinzufügen

Hallo zusammen ;)

Ich versuche gerade,Einträge zu einem Popup-Menu hinzuzufügen,wenn ich auf einen Button klicke. Jedoch weiß ich nicht, wie ich das Popup-Menu ansprechen muss, damit ich ein Unterverzeichnis erweitern kann. Wenn ich es per "Form1.PopupMenu1.Items.Add..." mache, wird ja das Hauptmenu ergänzt und kein Untermenu...

Ich erbitte Hilfe :)
 
Hallo,
in Delphi (und verm. auch Kylix) kannst du alle "Elemente" über ihren Namen (fast) jederzeit erreichen.
Wenn du auf das 7. Untermenu eines Popupmenus zugreifen willst, nimm einfach den Namen des 7. Untermenus und füge mit name.add(...) deinen Eintrag hinzu.
Wo findest du den Namen:
- Menu-Designer des Popup-Menus öffnen
- gewünschten Eintrag auswählen
- im Objektinspektor steht in Name der Name

Ich hoffe, ich hab dein Problem richtig verstanden, irgendwie habe ich das Gefühl, was ich da geschrieben habe weiß doch ohnehin jeder.
 
Danke,du hast mein Problem richtig verstanden ;)

Ich hatte diese Möglichkeit bereits versucht, jedoch hab ich jedes Mal "Form1.PopupMenu1.name.items.add..." getippt, was leider nicht ging, doch jetzt weiß ich, wie ich das machen kann.

Nächste Frage:
Wie kann ich dem erstellten Item nun noch ein OnClick-Ereignis hinzufügen?
 
Alex Duschek hat gesagt.:
Nächste Frage:
Wie kann ich dem erstellten Item nun noch ein OnClick-Ereignis hinzufügen?

Du kannst zur Laufzeit ein Onclick-Ergeignis zuweisen

Element.OnClick = ProzedurName;

Wobei ProzedurName der Name einer entsprechenden Prozedur ist, die den selben Aufbau wie eine zum Ereignis gehörende Prozedur eben hat.

Wenn das OnClick-Ereignis bereits für andere Items existiert ist es ganz einfach.
NeuesItem.OnClick = NameDerOnClickProzedurDesAltenItems;

Alles klar?

vop
 
Alex Duschek hat gesagt.:
Nächste Frage:
Wie kann ich dem erstellten Item nun noch ein OnClick-Ereignis hinzufügen?

Du kannst zur Laufzeit ein Onclick-Ergeignis zuweisen

Element.OnClick := ProzedurName;

Wobei ProzedurName der Name einer entsprechenden Prozedur ist, die den selben Aufbau wie eine zum Ereignis gehörende Prozedur eben hat.

Wenn das OnClick-Ereignis bereits für andere Items existiert ist es ganz einfach.
NeuesItem.OnClick := NameDerOnClickProzedurDesAltenItems;

Alles klar?


vop
 
Zuletzt bearbeitet:
Habs teilweise kapiert ^^

Also ich hab meine Prozedur,auf welche ich verlinken möchte, in Form1 stehen, jedoch wird der Menueintrag für das Popup per Buttonklick in Form2 gemacht.

Wenn ich dort nun "Item.OnClick := PopupMenuItemsClick(Sender: TObject);" eingebe,kommt jedoch die Meldung "Unbekannter Bezeichner". Wenn ich vor den Namen ein "Form1." hänge, gehts leider auch ned. Wie krieg ich das nun geregelt?
 
Hallo,
dass deine Procedure von Delphi nicht gefunden wird, liegt verm. daran, dass du in Form2 die Form1 nicht im uses-Abschnitt eingetragen hast.
Aber Achtung: Verm. ist Form2 in Form1 im Uses-Abschnitt angeführt. In diesem Fall musst du die Form1 in Form2 im Implementations-Abschnitt useen.
Hier ein allg. Beispiel, wie das aussehen kann:
Code:
unit Unit1;
interface
uses ...., Unit2;  // in Unit1 wird Unit2 im Interfaceabschnitt eingebunden
type
  ......
implementation

.......

end.

unit Unit2;
interface
uses ....;
type 
  ......
implementation
uses Unit1;     // in Unit2 muss Unit1 im Implementation-Abschnitt eingebunden werden
......
end.
 
Hm, ich habs eigentlich gemacht wie du mir sagst,jedoch ist noch der gleiche Fehler vorhanden...

Code:
unit1

interface

uses ...unit2;
.
.
.
procedure PopupMenuItemsClick(Sender: TObject);
begin
...
end;

------------------------------------------------------------------------------
unit2

interface

uses...
.
.
.
implementation

uses unit1;
.
.
.
procedure TForm2.Button2Click(Sender: TObject);
begin
...
  Item.OnClick := PopupMenuItemsClick;
...
end;

---> "Undefinierter Bezeichner: "PopupMenuItemsClick"

:confused: :confused: :confused:
 
Ich häng mal das Programm dran, die betreffenden Stellen sind auskommentiert, sucht einfach nach dem Stichwort "www.tutorials.de" in Form1 und Form2, dann findet ihr die Stellen.

Ich hoff mal,es ist nicht nötig,den kompletten Programmablauf zu erläutern ^^
 

Anhänge

Neue Beiträge

Zurück