Sub Main
DialogLibraries.LoadLibrary("CSVImport")
dim ListboxDialog As Object
ListboxDialog = CreateUnoDialog(DialogLibraries.CSVImport.CSVFormat)
'ListboxDialog.Title = "CSV Herkunft wählen"
dim liste As Object
liste = CSVFormat.getControl("CSVName")
'liste.
ListboxDialog.Execute()
End Sub
Was mache ich hier falsch? Dialog "CSVFormat" ist unter "Meine Makros" - "CSVImport" angelegt und die Listbox hat den Namen "CSVName". Dennoch bekomme ich in der Zeile "liste = CSVFormat.getControl("CSVName")" eine Fehler von wegen unbekannter Objektvariable?
WIN XP 32BIT SP3 / WIN 7 64 BIT mit OO V3.1.1
AMD Athlon X2 5000+
Geforce 8800 GT 1024MB
2GB RAM + 1TB Platte
Ne war quasi doppelt gemoppelt. Habs hingekriegt. Ist jetzt erstmal ein einfachs Dialog Fenster mit einem Drop Down Feld. Jetzt mach ich mich mal an die Eigenschaften.
Sub Main
dim CSVWahlDialog As Object
DialogLibraries.LoadLibrary("CSVImport")
CSVWahlDialog = CreateUnoDialog(DialogLibraries.CSVImport.CSVFormat)
CSVWahlDialog.Title = "CSV Herkunft wählen"
dim liste As Object
liste = CSVWahlDialog.getControl("CSVName")
'inhalt = oDialog1.GetControl("ListBox1")
'liste.
CSVWahlDialog.Execute()
End Sub
WIN XP 32BIT SP3 / WIN 7 64 BIT mit OO V3.1.1
AMD Athlon X2 5000+
Geforce 8800 GT 1024MB
2GB RAM + 1TB Platte
Sub Main
DialogLibraries.LoadLibrary("CSVImport") 'Dialog Datenbank laden
dim CSVWahlDialog As Object 'Dialog-Objekt erstellen
CSVWahlDialog = CreateUnoDialog(DialogLibraries.CSVImport.CSVFormat) 'Pfad zum CSVWahlDialog
CSVWahlDialog.Title = "CSV Herkunft wählen" 'Titelleiste des Dialogs
dim liste As Object 'Listenfeld-Objekt erstellen
liste = CSVWahlDialog.getControl("CSVNamen") 'Zugriff auf Eigenschaften des Listenfelds
dim Alternativen(1) 'Array mit Listenfeldinhalt erstellen
Alternativen(0)="Volksbank" 'Feld 1
Alternativen(1)="Sparkasse" 'Feld 2
liste.addItems(Alternativen(),1) 'Array dem Listenfeld zufügen
CSVWahlDialog.Execute() 'Dialog ausführen
'If liste.SelectedItemPos > -1 then stellt fest, ob tatsächlich ein Eintrag ausgewählt wurde.
End SubSub Main
DialogLibraries.LoadLibrary("CSVImport") 'Dialog Datenbank laden
dim CSVWahlDialog As Object 'Dialog-Objekt erstellen
CSVWahlDialog = CreateUnoDialog(DialogLibraries.CSVImport.CSVFormat) 'Pfad zum CSVWahlDialog
CSVWahlDialog.Title = "CSV Herkunft wählen" 'Titelleiste des Dialogs
dim liste As Object 'Listenfeld-Objekt erstellen
liste = CSVWahlDialog.getControl("CSVNamen") 'Zugriff auf Eigenschaften des Listenfelds
dim Alternativen(1) 'Array mit Listenfeldinhalt erstellen
Alternativen(0)="Volksbank" 'Feld 1
Alternativen(1)="Sparkasse" 'Feld 2
liste.addItems(Alternativen(),1) 'Array dem Listenfeld zufügen
CSVWahlDialog.Execute() 'Dialog ausführen
'If liste.SelectedItemPos > -1 then stellt fest, ob tatsächlich ein Eintrag ausgewählt wurde.
End Sub
Hier der aktuelle Stand. Wieder viel gelernt Soweit funkioniert es jedoch krieg ich das Listenfeld nur inaktiv. Also ausgegraut?!?
EDIT:
Tadaaa - Nur lesen auf nein gestellt - klappt.
Hab dan Code auch mal kommentiert ud ordentlich strukturiert - vielleicht hifts ja jemand weiter.
WIN XP 32BIT SP3 / WIN 7 64 BIT mit OO V3.1.1
AMD Athlon X2 5000+
Geforce 8800 GT 1024MB
2GB RAM + 1TB Platte
public Wahl as String
Sub Main
CSVAuswahl()
msgBox Wahl
End Sub
Function CSVAuswahl
DialogLibraries.LoadLibrary("CSVImport") 'Dialog Datenbank laden
dim CSVWahlDialog As Object 'Dialog-Objekt erstellen
CSVWahlDialog = CreateUnoDialog(DialogLibraries.CSVImport.CSVFormat)'Pfad zum CSVWahlDialog
CSVWahlDialog.Title = "CSV Herkunft wählen" 'Titelleiste des Dialogs
dim liste As Object 'Listenfeld-Objekt erstellen
liste = CSVWahlDialog.getControl("CSVNamen") 'Zugriff auf Eigenschaften des Listenfelds
dim Alternativen(1) 'Array mit Listenfeldinhalt erstellen
Alternativen(0)="Volksbank" 'Feld 1
Alternativen(1)="Sparkasse" 'Feld 2
liste.addItems(Alternativen(),1) 'Array dem Listenfeld zufügen
dim buttonzugriff As Object 'Listenfeld-Objekt erstellen
buttonzugriff = CSVWahlDialog.getControl("ButtonWahl")
'buttonzugriff.model.State(0)
While liste.SelectedItemPos > -1 'stellt fest, ob tatsächlich ein Eintrag ausgewählt wurde.
buttonzugriff.State(false)
wend
Wahl = liste.SelectedItem()
CSVWahlDialog.Execute() 'Dialog ausführen
End Function
So ein wenig weitergefummelt aber ich steh erneut vor Problemen.
Frage 1: Wieso zeigt mir die MsgBox nichts an? Irgendwie übergebe ich da wohl nichts mit meinem
While liste.SelectedItemPos > -1
buttonzugriff.State(false) wend
Soll eine Schleife werden die den Button der den Dialog beendet sperrt oder ausblendet bis ein Wert aus dem Listenfeld ausgesucht wurde. Wie macht man das am elegantesten? das "‣State(false) scheint nicht zu funzen
WIN XP 32BIT SP3 / WIN 7 64 BIT mit OO V3.1.1
AMD Athlon X2 5000+
Geforce 8800 GT 1024MB
2GB RAM + 1TB Platte
While liste.SelectedItemPos > -1 'stellt fest, ob tatsächlich ein Eintrag ausgewählt wurde.
buttonzugriff.State(false)
wend
Durchlaufe die Schleife, bis ein Listeneintrag ausgewählt wurde !
danach speichere die Auswahl in der variablen "WAHL"
danach führe den Dialog aus
ohne Dialog keine Auswahl ?
Versuche es andersrum :
Fülle die Listbox
Führe den Dialog aus
Ordne deiner ListBox bei geänderten WErten ein Makro zu, welches dir in einer MSGBOX den ausgewählten Wert anzeigt.
myListbox = myDlg.getControl("Listbox1")
myDlg.execute()
End Sub
Sub Anzeigen
If myListbox.selectedItem = "" then
exit sub
else
msgbox myListbox.selectedItem
End If
End Sub
nur bei mehrfachauswahl :
Übergibt, bei aktiver Mehrfachselektion, die ausgewählten Werte als ein Array von Strings. Ausgelesen werden können die Strings mit der Ubound-Funktion.
Dim Ergebnis()
Ergebnis = myCtrl.selecteditems
for i=0 to ubound(Ergebnis())
msgbox Ergebnis(i)
next i