Menüpunkte zur Laufzeit erstellen

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Fischi
Beiträge: 11
Registriert: Di 10. Jul 2007, 20:31

Menüpunkte zur Laufzeit erstellen

Beitrag von Fischi »

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;

Euklid
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:

Beitrag von Euklid »

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

Fischi
Beiträge: 11
Registriert: Di 10. Jul 2007, 20:31

Beitrag von Fischi »

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

Christian
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:

Beitrag von Christian »

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/

Fischi
Beiträge: 11
Registriert: Di 10. Jul 2007, 20:31

Beitrag von Fischi »

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

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

wenn du jeden einzelden eintrag visible := flase machst, verschinden sie.

Christian
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:

Beitrag von Christian »

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. :(
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/

Fischi
Beiträge: 11
Registriert: Di 10. Jul 2007, 20:31

Beitrag von Fischi »

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

Antworten