Access+VBA: Dialogfenster programmieren
Rouven
- programmiertechnik
0 King^Lully0 Rouven
Hello,
ich hänge gerade an der Programmierung eines Dialog-Fensters fest. Hintergrund ist folgendes:
Ein Modul soll die Steuerung durch einen Assistenten übernehmen, der aus mehreren nacheinander folgenden Fenstern besteht. Jedes Fenster erfragt ein oder mehrere Einstellungen vom Benutzer.
Am Ende der Sequenz sollen dem Modul alle getroffenen Einstellungen zur Verfügung stehen.
Mein erster Ansatz war die Definition eines eigenen Typs, in dem sämtliche dieser Einstellungen abgelegt werden. Das würde ja soweit auch alles funktionieren, wenn nur die Interaktion zwischen Modul und Formular besser funktionieren würde - zur Verdeutlichung:
Ich kann über die OpenArgs beim Aufruf zwar ein Argument an das Formular übergeben, aber dieses wird nach meinem Verständnis weder ByRef übergeben, noch mag es das Formular, wenn das ein user-defined type ist. Somit fällt die Möglichkeit jedem Formular das Speicherobjekt mitzugeben und verändern zu lassen flach.
Anders herum fällt mir auch keine befriedigende Lösung ein, die Einstellungen zurückzufüttern - ClosingArgs gibts nicht, wozu auch, das Formular ist ja nach dem Schließen weg.
Die quick-and-dirty Variante eines globalen Variant für solche Zwecke fällt auch flach, weil VBA auf User-Defined-Types kein Late-Binding unterstützt und somit folgendes nicht geht:
Global storage As Variant
storage = varOfUserDefinedType
Was ist also die saubere Lösung für den Datenaustausch? Soll ich meinem Steuerungsmodul eine öffentliche Variable vom passenden UDT verpassen?
MfG
Rouven
Global storage As Variant
storage = varOfUserDefinedType
Du hast Probleme. ;)
Erste Idee: ein globales variant-array.
Hello,
Erste Idee: ein globales variant-array.
ja, aber schön find ich das nun auch wieder nicht, zumal VBA meines Wissens keine assoziativen Arrays unterstützt, d.h. die Kontrolle ist gleich null.
Bin jetzt tatsächlich auf einem Hauch von Objektorientierung und habe dem Steuerungsmodul "Feedbackmethoden" eingebaut, die der Dialog aufruft und darüber seine Ergebnisse zurückfüttert. Aber schön find ich das nicht, weil irgendwie falsch herum.
MfG
Rouven
Erste Idee: ein globales variant-array.
ja, aber schön find ich das nun auch wieder nicht, zumal VBA meines Wissens keine assoziativen Arrays unterstützt, d.h. die Kontrolle ist gleich null.
Bin jetzt tatsächlich auf einem Hauch von Objektorientierung und habe dem Steuerungsmodul "Feedbackmethoden" eingebaut, die der Dialog aufruft und darüber seine Ergebnisse zurückfüttert. Aber schön find ich das nicht, weil irgendwie falsch herum.
Nun, das Programm hat eben einen Zustand (sitzungs- bzw. nutzerabhängig), diesen könntest Du natürlich auch schön persistieren und in Objekte auslagern. Wüsste nicht was daran unschön sein soll.