Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Einem Erzeugtem MenuItem ein Onclick zuweißen. (https://www.delphipraxis.net/16587-einem-erzeugtem-menuitem-ein-onclick-zuweissen.html)

Die Muhkuh 19. Feb 2004 16:50


Einem Erzeugtem MenuItem ein Onclick zuweißen.
 
Hi,

ich erstelle mit:
Delphi-Quellcode:
  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);
5 MenüItems! (Wie der Code aussieht intressiert jetzt keinen!)

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?

Markus K. 19. Feb 2004 16:56

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.

Die Muhkuh 19. Feb 2004 16:57

Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
 
Danke, ich werd mal versuchen

Die Muhkuh 19. Feb 2004 17:04

Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
 
Das ganze sieht jetzt so aus:

Delphi-Quellcode:
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;
aber denn kommt bei dem Pfeil:

[Fehler] umain.pas(631): Inkompatible Typen: 'TNotifyEvent' und 'procedure, untyped pointer or untyped parameter'

MikeS 19. Feb 2004 17:11

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;

Markus K. 19. Feb 2004 17:11

Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
 
Ich schaue mal.
Ich hatte damals keine Variablen mit übergeben gehabt.

Markus K. 19. Feb 2004 17:14

Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
 
MikeS sein Vorschlag ist ned schlecht :thuimb:
Allerdings kann glaub ich auf das (Sender) verzichtet werden.

MikeS 19. Feb 2004 17:24

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:
procedure TForm1.onclick(Sender: TObject);
begin
    TMenuItem(Sender).visible := false;
end;
ist nur so ein beispiel! keine garantie habe es nicht überprüft!

Die Muhkuh 20. Feb 2004 12:44

Re: Einem Erzeugtem MenuItem ein Onclick zuweißen.
 
Zitat:

Zitat von MikeS
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;


Das ist keine gute Idee denn das was da geladen werden muss ist ja immer unterschiedlich.

Die Muhkuh 20. Feb 2004 12:46

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 21:40 Uhr.
Seite 1 von 2  1 2      

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