tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
11
ZUGRIFFE
1605
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Alex Duschek
    Alex Duschek Alex Duschek ist offline I AM AWESOME
    Registriert seit
    Apr 2004
    Ort
    Bartholomä (Baden-Württemberg)
    Beiträge
    514
    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

  2. #2
    WieGehts WieGehts ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    130
    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.
     

  3. #3
    Avatar von Alex Duschek
    Alex Duschek Alex Duschek ist offline I AM AWESOME
    Registriert seit
    Apr 2004
    Ort
    Bartholomä (Baden-Württemberg)
    Beiträge
    514
    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

  4. #4
    WieGehts WieGehts ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    130
    Hallo,
    name.OnClick := ........
     

  5. #5
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Zitat Zitat von Alex Duschek
    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
     

  6. #6
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    Zitat Zitat von Alex Duschek
    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
    Geändert von vop (24.10.05 um 08:44 Uhr) Grund: Doppelte Antwort - Fehler in meinem Browser.
     

  7. #7
    Avatar von Alex Duschek
    Alex Duschek Alex Duschek ist offline I AM AWESOME
    Registriert seit
    Apr 2004
    Ort
    Bartholomä (Baden-Württemberg)
    Beiträge
    514
    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

  8. #8
    WieGehts WieGehts ist offline Mitglied Gold
    Registriert seit
    Oct 2003
    Beiträge
    130
    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.
     

  9. #9
    Avatar von Alex Duschek
    Alex Duschek Alex Duschek ist offline I AM AWESOME
    Registriert seit
    Apr 2004
    Ort
    Bartholomä (Baden-Württemberg)
    Beiträge
    514
    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

  10. #10
    Avatar von Alex Duschek
    Alex Duschek Alex Duschek ist offline I AM AWESOME
    Registriert seit
    Apr 2004
    Ort
    Bartholomä (Baden-Württemberg)
    Beiträge
    514
    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
    Angehängte Dateien Angehängte Dateien
     
    Softwareentwickler

    Sehr gute Kenntnisse: Delphi, Java
    Gute Kenntnisse: PHP, ADA
    Grundkenntnisse: C/C++, C#, JavaScript

  11. #11
    vop vop ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Beiträge
    676
    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
     

  12. #12
    Avatar von Alex Duschek
    Alex Duschek Alex Duschek ist offline I AM AWESOME
    Registriert seit
    Apr 2004
    Ort
    Bartholomä (Baden-Württemberg)
    Beiträge
    514
    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 ...
    Code :
    1
    
    procedure PopupMenuItemsClick(Sender: TObject);
    ... heißt und ich sie per ...
    Code :
    1
    
    Item.OnClick := PopupMenuItemsClick;
    aufrufe? (Also Namensunterschied?)

    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

  1. XML Einträge hinzufügen und ändern
    Von Klinge19 im Forum .NET Datenverwaltung
    Antworten: 6
    Letzter Beitrag: 11.12.09, 09:37
  2. Antworten: 10
    Letzter Beitrag: 17.03.08, 16:16
  3. Antworten: 4
    Letzter Beitrag: 10.03.05, 12:24
  4. Hilfe bei Inhaltsplazierung eines popups
    Von soldo im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 01.07.03, 14:54
  5. Name eines Popups bestimmen
    Von Dodekaeder im Forum Javascript & Ajax
    Antworten: 14
    Letzter Beitrag: 19.01.03, 12:10