Menüpunkte zur Laufzeit erstellen
Menüpunkte zur Laufzeit erstellen
Hallo,
ich lese mit untenstehenden Code aus dem Verzeichnis "./karten" die Dateinamen (*.png) aus und möchte diese in der Menuleise unter dem Punkt "Karten" als einzelne Einträge zur Laufzeit ergänzen. Leider finde ich keinen Weg die Strings "KarteGebiet" zu dem Menupunkt Karte hinzuzufügen. In der Listbox stehen diese nur testweise, bis dahin funkioniert es demnach. Kann mir da wer helfen?
Danke Fischi
Der Code (hoffentlich kommt er lesbar rüber):
//Erstelle Kartenmenue und schreib es in ListBox1##
procedure TForm1.MenuKarteClick(Sender: TObject);
var KartenPfad: string;
begin
KartenPfad:='./karten';
ListBox1.Items.clear;
if Kartenpfad[length(Kartenpfad)]<>'/'
then Kartenpfad:= Kartenpfad + '/';
getAllFiles(Kartenpfad + '*.png'); // Suchmuster
end;
procedure TForm1.GetAllFiles(mask:string);
var Datei: TSearchrec;
verz: string;
KarteGebiet: string;
KarteListe: TStringList;
begin
KarteListe:= TStringList.Create;
verz := ExtractFilepath(mask);
if verz[length(verz)]<>'/'
then verz:= verz + '/';
if FindFirst(mask, $23, Datei)= 0
then repeat
begin
KarteGebiet:= copy(Datei.Name, 1, Pos('.', Datei.Name)-1);
//???
KarteListe.Add(KarteGebiet);
Form1.ListBox1.Items.Add(KarteGebiet);
end;
until FindNext(Datei)<>0;
end;
ich lese mit untenstehenden Code aus dem Verzeichnis "./karten" die Dateinamen (*.png) aus und möchte diese in der Menuleise unter dem Punkt "Karten" als einzelne Einträge zur Laufzeit ergänzen. Leider finde ich keinen Weg die Strings "KarteGebiet" zu dem Menupunkt Karte hinzuzufügen. In der Listbox stehen diese nur testweise, bis dahin funkioniert es demnach. Kann mir da wer helfen?
Danke Fischi
Der Code (hoffentlich kommt er lesbar rüber):
//Erstelle Kartenmenue und schreib es in ListBox1##
procedure TForm1.MenuKarteClick(Sender: TObject);
var KartenPfad: string;
begin
KartenPfad:='./karten';
ListBox1.Items.clear;
if Kartenpfad[length(Kartenpfad)]<>'/'
then Kartenpfad:= Kartenpfad + '/';
getAllFiles(Kartenpfad + '*.png'); // Suchmuster
end;
procedure TForm1.GetAllFiles(mask:string);
var Datei: TSearchrec;
verz: string;
KarteGebiet: string;
KarteListe: TStringList;
begin
KarteListe:= TStringList.Create;
verz := ExtractFilepath(mask);
if verz[length(verz)]<>'/'
then verz:= verz + '/';
if FindFirst(mask, $23, Datei)= 0
then repeat
begin
KarteGebiet:= copy(Datei.Name, 1, Pos('.', Datei.Name)-1);
//???
KarteListe.Add(KarteGebiet);
Form1.ListBox1.Items.Add(KarteGebiet);
end;
until FindNext(Datei)<>0;
end;
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Hallo und willkommen im Forum!
Du willst also während der Laufzeites ein MainMenu abändern, bzw. Einträge hinzufügen, habe ich dich richtig verstanden? Oder anders gefragt: Ist MenuKarte vom Typ MainMenu?
Dann noch eine kurze Bitte: Dein Code wird übersichtlicher, wenn du den highlighter verwendest. Dazu hast du im Menü-Schreiben-Dialog oben die Lazarus-Code-Icons.
Viele Grüße, Euklid
Du willst also während der Laufzeites ein MainMenu abändern, bzw. Einträge hinzufügen, habe ich dich richtig verstanden? Oder anders gefragt: Ist MenuKarte vom Typ MainMenu?
Dann noch eine kurze Bitte: Dein Code wird übersichtlicher, wenn du den highlighter verwendest. Dazu hast du im Menü-Schreiben-Dialog oben die Lazarus-Code-Icons.
Viele Grüße, Euklid
Hallo,
den Eintrag (Menupunkt) Karte gibt es schon in meinem MainMenu. Nun sollen unterhalb dieses Punktes die Einträge hinzu gefügt / erstellt werden. Zur Designzeit ist der Menuepunkt leer. Oder anders - Du hast das Menue "Bearbeiten" und möchtest die Einträge "Rückgängig", "Kopieren" usw zur Laufzeit anlegen.
Grüße Fischi
den Eintrag (Menupunkt) Karte gibt es schon in meinem MainMenu. Nun sollen unterhalb dieses Punktes die Einträge hinzu gefügt / erstellt werden. Zur Designzeit ist der Menuepunkt leer. Oder anders - Du hast das Menue "Bearbeiten" und möchtest die Einträge "Rückgängig", "Kopieren" usw zur Laufzeit anlegen.
Grüße Fischi
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Code: Alles auswählen
var
Neu: TMenuItem;
begin
Neu := TMenuItem.Create;
Neu.Caption := 'n menueeintrag';
MainMenu1.Items.Add(Neu);
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Danke, das ist ein guter Tipp. Ichhatte immer versucht eine komlette Liste anzuhängen. Aber einzeln und in einer Schleife geht es viel besser.
Noch einkleine Problemchen habe ich aber. Die Menueleiste (also auch die statischen Einträge)soll zum "Zeitpunkt x" komplett ausgeblendet werden. Nu hat aber MainMenu kein Visible Eigenschaft. Wie kann ich das anstellen?
Danke Fischi
Noch einkleine Problemchen habe ich aber. Die Menueleiste (also auch die statischen Einträge)soll zum "Zeitpunkt x" komplett ausgeblendet werden. Nu hat aber MainMenu kein Visible Eigenschaft. Wie kann ich das anstellen?
Danke Fischi
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Nein sie verschwinden nicht sie werden versteckt wie der name der Eigenschaft schon vermuten lässt, was hat das mit der Frage zu tun ?
Oh, jetzt erst gesehn das da ja doch noch die Frage war.
Oh, jetzt erst gesehn das da ja doch noch die Frage war.

Zuletzt geändert von Christian am Do 12. Jul 2007, 12:33, insgesamt 1-mal geändert.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
Danke an Euch. Das mit den einzelnen Menupunkten abschalten ist mir auch bekann. Ich dachte aber das ich alle mit einem Rutsch verschwinden oder verstecken kann. Ist meiner Meinung nach auch egal, nur der User darf sie zum Zeitpunkt x nicht erreichen. Muß da natürlich einmal ausprobieren, ob es mit der Tastenkombination alt+.. nicht doch noch geht.
Danke
Fischi
Danke
Fischi