Announcement

Collapse
No announcement yet.

Für mehrer MenuItems eine Funktion...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Für mehrer MenuItems eine Funktion...

    Hallo,<br>
    ich habe in meinem Programm ein TMainMenu. Unter einem Item sind über 20 Unterpunkte, die alle eine ähnliche Funktion haben sollen.<br>
    Ich will einfach nur die Caption von dem jeweils geklickten MenuItem haben.<br>
    Meine Vorstellung war ja, dass ich für die einzelnen Items im OnClick-Event die selbe Funktion reinschreibe, aber wie muss die Funktion aussehen?<br>
    Wie finde ich denn raus, auf welchen Item geklickt wurde?<br>
    Ich hoffe, ich hab das hier einigermaßen verständlich beschrieben <br>
    Ich glaube, die Funktion ist gar nicht so schwer... ich komm nur nicht drauf <br>
    Danke schonmal!<br>
    Tschüss!<br>
    Rene<br>

  • #2
    Hallo Rene,<br>der Source zeigt Dir, wie man zur Laufzeit Menüpunkten einen OnClick Eventhandler hinzufügt.<br>
    <pre><font size="1" face="Verdana">
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    Menus;

    type
    TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Men11: TMenuItem;
    Men21: TMenuItem;
    Men31: TMenuItem;
    procedure FormCreate(Sender: TObject);
    private
    { Private-Deklarationen }
    procedure OnMenuItemClick(Sender : TObject);
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Men11.OnClick:=OnMenuItemClick;
    Men21.OnClick:=OnMenuItemClick;
    Men31.OnClick:=OnMenuItemClick;
    end;

    procedure TForm1.OnMenuItemClick(Sender: TObject);
    begin
    ShowMessage(TMenuItem(Sender).Caption);
    end;

    end.
    </font></pre>
    <br>Jens Schuman

    Comment


    • #3
      Hallo,
      ich möchte mal dieses Thema wieder aufwärmen.
      Das ist der Text:
      <pre>
      NewMenuItem := TMenuItem.Create(frmMain);
      NewMenuItem.Caption := UpperCase(copy(sr.Name,1,1))+
      copy(sr.Name,2,pos('.',sr.Name)-2);
      NewMenuItem.OnClick := OnSeitenClick;
      frmMain.Projekt1.Add(NewMenuItem);
      </pre>
      Und das ist die Fehlermeldung dazu:
      "Inkompatible Typen: Methodenzeiger und reguläre Prozedur"
      Wobei ich hinzufügen muß, daß diese Unit keine Form hat, sondern das Menü in der Mainform verändert.
      Warum?

      mfg Klaus-Peter

      Nachtrag:
      Das war auch der Grund. Nachdem ich OnSeitenClick in die frmMain aufgenommen hatte, war das Problem beseitigt

      Comment


      • #4
        Moin Klaus,<br>ein Blick in die Delphi-Hilfe mit dem Stichwort: Methodenzeiger könnte evt Licht ins Dunkel bringen.<br>;-) Jen

        Comment

        Working...
        X