Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi MainMenu - Prozeduren bei Items (https://www.delphipraxis.net/38742-mainmenu-prozeduren-bei-items.html)

freak4fun 23. Jan 2005 16:50


MainMenu - Prozeduren bei Items
 
Hallo,
Ich habe ein MainMenu, bei dem ich im FormCreate Items aus eine Ini-Datei erstelle.
Aber wie kann ich jetzt die entsprechenden Prozeduren dazu erstellen? Ich weiß nicht ob
ihr damit was anfangen könnt, deshalb noch etwas Quelltext.

Delphi-Quellcode:
Rohstoffe := TMenuItem.Create(MainMenu1);
MainMenu1.Items.Add(Rohstoffe);
Rohstoffe.Caption := 'Rohstoffe';
for i := 0 to Stringliste.Count - 1 do
    begin
      RohEintraege[i] := TMenuItem.Create(Rohstoffe);
      Rohstoffe. Add(RohEintraege[i]);
      RohEintraege[i].Caption := Stringliste[i];
    end;
Also wenn ich jetzt auf einen Eintrag clicke soll auch noch was passieren.

MfG
freak

BenjaminH 23. Jan 2005 16:55

Re: MainMenu - Prozeduren bei Items
 
Delphi-Quellcode:
Rohstoffe := TMenuItem.Create(MainMenu1);
Rohstoffe.OnClick:=Procedurename;
MainMenu1.Items.Add(Rohstoffe);
So müsste das klappen

freak4fun 23. Jan 2005 17:03

Re: MainMenu - Prozeduren bei Items
 
Tut mir leid, das hilft mir nicht weiter. Wie mache ich damit weiter? :gruebel:

MfG
freak

JasonDX 23. Jan 2005 17:08

Re: MainMenu - Prozeduren bei Items
 
Es kommt ganz darauf an, was du machen willst
Eine Prozedur zur Laufzeit erstellen ist nicht möglich.
Wenn du das ganze dynamisch haben willst, könntest du gegebenenfalls DLLs nehmen
Dieser Code
Delphi-Quellcode:
Rohstoffe.OnClick:=Procedurename;
bestimmt jedenfalls, dass wenn auf das MenuItem Rohstoffe geklickt wird, dass die prozedur Procedurename (oder wie du sie auch nennen willst) aufgerufen wird.
Dann musst du halt schauen, was du in der Prozedur tust.

freak4fun 23. Jan 2005 17:16

Re: MainMenu - Prozeduren bei Items
 
Also muss die Prozedur schon vorhanden sein, gut hab ich verstanden.
Also ich erstelle ja Unterpunkte zu "Rohstoffe". Nehmen wir mal in Stringliste Stehen Integerwerte.
Dann wird, wenn ich auf Rohsoffe klicke eine Liste mit Zahlen nach unten aufgeklappt.
Wenn ich jetzt auf die erste Zahl klicke soll eine Prozedur ausgeführt werden.
Diese Prozedur soll 1 heißen.

Delphi-Quellcode:
procedure eins;
begin
ShowMessage('Sie haben die 1. Option gewählt.');
end;
Dann muss der Aufruf so aussehen?:
Delphi-Quellcode:
RohEintraege[i].OnClick := eins;
Dann bekomm ich Folgenden Fehler:

Inkompatible Typen: Methodenzeiger und Reguläre Prozedur.

Was mache ich falsch?

MfG
freak

freak4fun 23. Jan 2005 18:25

Re: MainMenu - Prozeduren bei Items
 
Delphi-Quellcode:
Rohstoffe := TMenuItem.Create(MainMenu1);
MainMenu1.Items.Add(Rohstoffe);
Rohstoffe.Caption := 'Rohstoffe';
for i := 0 to Stringliste.Count - 1 do
    begin
      RohEintraege[i] := TMenuItem.Create(Rohstoffe);
      RohEintraege[i].OnClick := Form1.Holz1Click; //Die Zeile ist neu
      Rohstoffe. Add(RohEintraege[i]);
      RohEintraege[i].Caption := Stringliste[i];
    end;
Dann noch:
Delphi-Quellcode:
procedure TForm1.Holz1Click(Sender: TObject);
begin
   ShowMessage('Es klappt. *juhu*');
end;
und:
Delphi-Quellcode:
TForm1 = class(TForm)
  ...
  procedure Holz1Click(Sender: TObject);
Und das klappt. :gruebel:
Jetzt noch die Frage, wie man die Prozeduren dynamisch einfügt, also nicht alle Items auf die gleiche Prozedur zugreifen. :wall:

Kann mir da einer weiterhelfen?

MfG
freak

freak4fun 23. Jan 2005 19:29

Re: MainMenu - Prozeduren bei Items
 
Problem gelöst. :wink:

Danke für die Hife. :cheers:

MfG
freak


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.

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