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 einträge automatisch erstellen lassn (https://www.delphipraxis.net/15825-mainmenu-eintraege-automatisch-erstellen-lassn.html)

Master_BB 4. Feb 2004 16:46


MainMenu einträge automatisch erstellen lassn
 
Hy,
ich kriegs nicht so ganz hin das er MainMenu einträge automatisch während der laufzeit erstellt.
Dabei sollen Datensätze aus einer Typisiertendatei die Caption der neuen einträge sein.
Einträge sollen soviele wie Datensätze vorhanden sind erstellt werden.
Bisher siehts so aus:

Delphi-Quellcode:
 filename := ExtractFilePath(Application.ExeName)+genresfilename;
 assignfile(genrefile,filename);
 if fileexists(filename) then reset(genrefile) else rewrite(genrefile);
 for i := 1 to filesize(genrefile) do begin
  read(genrefile,genres[i]);
  Mainmenu1.Items.Items[3].Items[0].Add(Item.Tmenuitem);
 end;
 closefile(genrefile);
die erstellten Einträge sollen untereinträge von dem Items[0] sein.
Wenn mir jemand weiter helfen könnte wäre das sehr schön.

Greetz
Master_BB

CTV 5. Feb 2004 09:48

Re: MainMenu einträge automatisch erstellen lassn
 
ich hab das für dich gefunden:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    label1: TLabel;
    MainMenu1: TMainMenu;
    Fonts1: TMenuItem;
    procedure Fonts1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations } 
  public
    { Public declarations } 
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm} 

procedure TForm1.Fonts1Click(Sender: TObject);
begin
  if Sender Fonts1 then
    label1.Caption := (Sender as TMenuItem).Caption;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  NewItem: TMenuItem;
  i: Integer;
begin
  for i := 0 to Screen.Fonts.Count - 1 do
  begin
    // Create a new Menu Item
    // Neuen Menüpunkt erzeugen
    NewItem := TMenuItem.Create(Self);
    // Take the Font name as Caption
    // Den Schriftnamen als Caption festlegen
    NewItem.Caption := Screen.Fonts.Strings[i];
    // Assign a OnClick-Event
    // Ein OnClick-Ereignis zuweisen
    NewItem.OnClick := Fonts1Click;
    // Add the new menu
    // Den neuen Menüpunkt hinzufügen
    Fonts1.Add(NewItem);
  end;
end;
Greetz Cyrus

Master_BB 5. Feb 2004 13:45

Re: MainMenu einträge automatisch erstellen lassn
 
geil nen bissle umgeändert hauts hin THX
jedoch gibts jetzt nen neues Problem mit den Proceduren der OnClickereignisse.

Delphi-Quellcode:
 for i := 1 to filesize(genrefile) do begin
  read(genrefile,genres[i]);
  NewItem := TMenuItem.Create(self);
  NewItem.Caption := genres[i].name;
  NewItem.OnClick := genre21Click;
  Mainmenu1.Items.Items[3].Items[1].Add(NewItem);
 end;
Und zwar kann ich beim OnClick Event der automatisch erstellten Items, kein bezug zu einer Filterfunktion herstellen. Wenn ich sie dort aufrufen lasse mit Parameterübergabe funktioniert es nicht. Also hatte ich die "genre21Click" procedure erstellt die leider kein parameter hat (mit würde sie auch nicht gehen). So nun weiß ich nicht wie ich es anstelle das je nach dem welches automatisch erstelltes item geklickt wird ein anderer Parameter an meine Filterfunktion geht.
Einen ItemIndex hat MainMenu anscheinend nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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