ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
1605
1605
EMPFEHLEN
-
22.10.05 14:33 #1
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
Softwareentwickler
Sehr gute Kenntnisse: Delphi, Java
Gute Kenntnisse: PHP, ADA
Grundkenntnisse: C/C++, C#, JavaScript
-
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.
-
23.10.05 17:44 #3
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?Softwareentwickler
Sehr gute Kenntnisse: Delphi, Java
Gute Kenntnisse: PHP, ADA
Grundkenntnisse: C/C++, C#, JavaScript
-
Hallo,
name.OnClick := ........
-
Du kannst zur Laufzeit ein Onclick-Ergeignis zuweisen
Zitat von Alex Duschek
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
-
Du kannst zur Laufzeit ein Onclick-Ergeignis zuweisen
Zitat von Alex Duschek
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?
vopGeändert von vop (24.10.05 um 08:44 Uhr) Grund: Doppelte Antwort - Fehler in meinem Browser.
-
24.10.05 22:26 #7
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?Softwareentwickler
Sehr gute Kenntnisse: Delphi, Java
Gute Kenntnisse: PHP, ADA
Grundkenntnisse: C/C++, C#, JavaScript
-
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 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
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.
-
25.10.05 15:23 #9
Hm, ich habs eigentlich gemacht wie du mir sagst,jedoch ist noch der gleiche Fehler vorhanden...
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
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"
Softwareentwickler
Sehr gute Kenntnisse: Delphi, Java
Gute Kenntnisse: PHP, ADA
Grundkenntnisse: C/C++, C#, JavaScript
-
26.10.05 12:44 #10
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
Softwareentwickler
Sehr gute Kenntnisse: Delphi, Java
Gute Kenntnisse: PHP, ADA
Grundkenntnisse: C/C++, C#, JavaScript
-
Hi Alex
Da die Prozedur PopupMenuItemsClick in unit1 nicht Bestandteil von Form1 ist, mußt Du es in unit2 (Form2) so machen
Item.OnClick := unit1.PopupMenuItemsClick;
Das sollte dann gehen
vop
-
29.10.05 19:39 #12
Nachdem dieser Tipp leider (warum auch immer) dieselbe Fehlermeldung produziert hatte,hab ich nun einfach die Prozedur in Form2 verschoben,jedoch lautet die neue Fehlermeldung wie folgt:
[Fehler] Unit2.pas(112): Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur'
Hat das was damit zu tun,dass die Prozedur ...
... heißt und ich sie per ...Code :1
procedure PopupMenuItemsClick(Sender: TObject);
aufrufe? (Also Namensunterschied?)Code :1
Item.OnClick := PopupMenuItemsClick;
Wobei es bei identischen Namen leider auch ne Fehlermeldung gibt...
__________________________________________________________________________
Edit: Vergesst das alles,ich habs vermutlich hinbekommen
Zuerst hab ich die Prozedur in Form2 unter "type" reingeschrieben,dort wo Dephi selber Prozeduren deklariert. Dann hab ich der Bezeichnung meiner Prozedur ein "TForm2." vorangestellt und den Aufruf mit "Item.OnClick := PopupMenuItemsClick" so wie er war gelassen. Nun meldet der Compiler nichts mehr und der Menueintrag wird auch erstellt und läuft.
Danke euch für eure Hilfe,eventuell meld ich mich nochmals
Geändert von Alex Duschek (29.10.05 um 19:48 Uhr)
Softwareentwickler
Sehr gute Kenntnisse: Delphi, Java
Gute Kenntnisse: PHP, ADA
Grundkenntnisse: C/C++, C#, JavaScript
Ähnliche Themen
-
XML Einträge hinzufügen und ändern
Von Klinge19 im Forum .NET DatenverwaltungAntworten: 6Letzter Beitrag: 11.12.09, 09:37 -
[SimpleXML] Fehler beim Hinzufügen eines neuen Nodes
Von Thomas D im Forum PHPAntworten: 10Letzter Beitrag: 17.03.08, 16:16 -
Fehler beim hinzufügen eines Datensatzes in Datenbank
Von davidxxx im Forum PHPAntworten: 4Letzter Beitrag: 10.03.05, 12:24 -
Hilfe bei Inhaltsplazierung eines popups
Von soldo im Forum HTML & XHTMLAntworten: 2Letzter Beitrag: 01.07.03, 14:54 -
Name eines Popups bestimmen
Von Dodekaeder im Forum Javascript & AjaxAntworten: 14Letzter Beitrag: 19.01.03, 12:10





Zitieren
Login





