

Beispiel:
Bearbeitung von Bilddateien mit einem speziellen Programm
Im Menü erscheint eine Liste der zuletzt bearbeiteten Bilder.

Kann man dazu die Klasse Settings nutzen?
Oder ein Array füllen und dann den Inhalt speichern?
Beim Programmstart den Inhalt des Array mit Daten aus der gespeicherten Datei füllen.
Wichtig ist dabei, wie man den allerersten Programmstart behandelt.

Array wird gefüllt. Jedes bearbeitete Bild - besser der Bild-Pfad - wird eingetragen, wenn es noch nicht! in der Liste steht.
Kommt ein neues Bild, dann muss das erste Element im Array gelöscht werden und alle rücken eins nach, so dass das neue Bild als letzter Eintrag im Array steht.

########################################################################################################################################################


Dynamisches Menü

Wenn man im Gambas-Projektfenster das Menü Datei und dann den Punkt Zuletzt geöffnet anwählt, erscheint ein Menü mit den Projekten, an denen man zuletzt gearbeitet hat. 
Aus offensichtlichen Gründen ist es nicht möglich, derartige Menüs schon zur Programmierzeit im Menüeditor zu erstellen, sondern sie müssen zur Laufzeit des Programms 
dynamisch erzeugt werden.

Dazu erzeugen wir im Menüeditor zunächst unterhalb des Öffnen...-Eintrags ein neues Untermenü mnuRecent mit der Beschriftung Zuletzt geöffnet. 
Dann ergänzen wir unser Programm noch um den folgenden Programmcode:

$aRecent AS NEW String[]

PUBLIC SUB Form_Open()
  'Beispieldaten
  $aRecent = ["Datei12","Datei34","Datei56","Datei78","Datei90"]
  
  'Menü erzeugen
  UpdateMenu
END

SUB UpdateMenu()
  DIM sFile AS String
  DIM hMenuItem AS Object
  
  'Die alten Einträge löschen
  mnuRecent.Children.Clear
  
  'Deaktivieren, falls keine Einträge vorhanden sind
  IF $aRecent.Length = 0 THEN mnuRecent.Enabled = FALSE
  
  'Die einzelnen Einträge erzeugen
  FOR EACH sFile IN $aRecent
    'neuer Eintrag
    hMenuItem = NEW Menu(mnuRecent) AS "mnuRecentFile"

    'Beschriftung
    hMenuItem.Text = sFile
  NEXT
END

PUBLIC SUB mnuRecentFile_Click()
  PRINT LAST.Text
END

Die von uns erzeugten Einträge haben dann alle den gleichen Namen mnuRecentFile. Damit wir innerhalb der Funktion mnuRecentFile_Click() unterscheiden können welcher der Einträge angeklickt wurde, verwenden wir das LAST-Objekt. LAST ist eine Referenz auf das letzte Objekt, welches ein Ereignis (hier das Click()-Ereignis) ausgelöst hat. Mit LAST.Text greifen wir also auf die Text-Eigenschaft des zuletzt angeklickten Eintrags zu.
