![]() |
Einem Erzeugtem MenuItem ein Onclick zuweißen.
Hi,
ich erstelle mit:
Delphi-Quellcode:
5 MenüItems! (Wie der Code aussieht intressiert jetzt keinen!)
Item1 := TMenuItem.Create(Self);
Item2 := TMenuItem.Create(Self); Item3 := TMenuItem.Create(Self); Item4 := TMenuItem.Create(Self); Item5 := TMenuItem.Create(Self); List := TStringList.Create; List.LoadFromFile(SettingPath + 'LastFiles.txt'); Item1.Caption := List.Strings[0]; Item2.Caption := List.Strings[1]; Item3.Caption := List.Strings[2]; Item4.Caption := List.Strings[3]; Item5.Caption := List.Strings[4]; Form1.MainMenu1.Items[0].Items[6].Add(Item1); Form1.MainMenu1.Items[0].Items[6].Add(Item2); Form1.MainMenu1.Items[0].Items[6].Add(Item3); Form1.MainMenu1.Items[0].Items[6].Add(Item4); Form1.MainMenu1.Items[0].Items[6].Add(Item5); Die Caption sind immer die zuletzt geöffneten Dateien. Wie kann ich diesen Items ein OnClick zuweißen damit mein Programm daraufhin die Datei lädt? |
Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
Hallo,
ein onClick Ereignis kannst du wiefolgt zur Laufzeit hinzufügen: Du erstellst ein Procedure nach dem folgenden Muster, welche du bei Type hinzufügst. procedure DateiLaden(Sender: TObject); Als nächstes musst du diese Procedure zur Laufzeit bei dem onClick Ereignis hinzufügen. Item5.onClick:=DateiLaden; Nach dem folgenden Muster hatte ich das selbe Problem gelöst. Hoffe das ich weiterhelfen konnte. |
Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
Danke, ich werd mal versuchen
|
Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
Das ganze sieht jetzt so aus:
Delphi-Quellcode:
aber denn kommt bei dem Pfeil:
procedure TForm1.DateiLaden(Sender: TObject; Was: String);
begin Application.CreateForm(TForm2, Form2); TForm2(ActiveMDIChild).Richedit1.Lines.LoadFromFile(Was); end; procedure TForm1.NewItem; var Item1, Item2, Item3, Item4, Item5 : TMenuItem; List : TStringList; begin Item1 := TMenuItem.Create(Self); Item2 := TMenuItem.Create(Self); Item3 := TMenuItem.Create(Self); Item4 := TMenuItem.Create(Self); Item5 := TMenuItem.Create(Self); List := TStringList.Create; List.LoadFromFile(SettingPath + 'LastFiles.txt'); Item1.Caption := List.Strings[0]; Item2.Caption := List.Strings[1]; Item3.Caption := List.Strings[2]; Item4.Caption := List.Strings[3]; Item5.Caption := List.Strings[4]; Form1.MainMenu1.Items[0].Items[6].Add(Item1); Form1.MainMenu1.Items[0].Items[6].Add(Item2); Form1.MainMenu1.Items[0].Items[6].Add(Item3); Form1.MainMenu1.Items[0].Items[6].Add(Item4); Form1.MainMenu1.Items[0].Items[6].Add(Item5); Item1.OnClick := DateiLaden(Sender, Item1.Caption); //<- List.Free; end; [Fehler] umain.pas(631): Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter' |
Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
versuche es doch einmal so:
Delphi-Quellcode:
procedure TForm1.DateiLaden(Sender: TObject);
begin Application.CreateForm(TForm2, Form2); TForm2(ActiveMDIChild).Richedit1.Lines.LoadFromFile(Item1.Caption); end; [..] //bekannt Item1.OnClick := DateiLaden(Sender); //<- List.Free; end; |
Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
Ich schaue mal.
Ich hatte damals keine Variablen mit übergeben gehabt. |
Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
MikeS sein Vorschlag ist ned schlecht :thuimb:
Allerdings kann glaub ich auf das (Sender) verzichtet werden. |
Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
ich denke schon das man (Sender) benötigt, denn irgendwo muss ja übergeben werden von
wem das ereignis ausgelöst wurde! wenn sender nicht dort stehen würde würde folgendes nicht funktionieren:
Delphi-Quellcode:
ist nur so ein beispiel! keine garantie habe es nicht überprüft!
procedure TForm1.onclick(Sender: TObject);
begin TMenuItem(Sender).visible := false; end; |
Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
Zitat:
Das ist keine gute Idee denn das was da geladen werden muss ist ja immer unterschiedlich. |
Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
Ich habs mal kurz umgeschrieben wie MikeS das sagte aber ich bekomm immer noch die gleiche Fehlermeldung!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz