Listbox für Anfänger

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

CaptainCannabis
**
Beiträge: 37
Registriert: Mo, 30.03.2009 13:17

Listbox für Anfänger

Beitrag von CaptainCannabis »

Code: Alles auswählen

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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Listbox für Anfänger

Beitrag von komma4 »

... weil CSVFormat nicht gesetzt wurde!

Code: Alles auswählen

CVSFormat = ListoxDialog.getByName( "CSVName" ) 

Hilft das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
CaptainCannabis
**
Beiträge: 37
Registriert: Mo, 30.03.2009 13:17

Re: Listbox für Anfänger

Beitrag von CaptainCannabis »

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.

Code: Alles auswählen

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
CaptainCannabis
**
Beiträge: 37
Registriert: Mo, 30.03.2009 13:17

Re: Listbox für Anfänger

Beitrag von CaptainCannabis »

Code: Alles auswählen

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. :lol:

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
CaptainCannabis
**
Beiträge: 37
Registriert: Mo, 30.03.2009 13:17

Re: Listbox für Anfänger

Beitrag von CaptainCannabis »

Code: Alles auswählen

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

Code: Alles auswählen

Wahl = liste.SelectedItem()
Frage 2:

Code: Alles auswählen

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
Nina
Beiträge: 5
Registriert: Do, 16.07.2009 16:50
Wohnort: Austria

Re: Listbox für Anfänger

Beitrag von Nina »

hast du mitlerweile herausgefunden, wie das mit dem SelectedItem geht???

Code: Alles auswählen

liste.SelectedItem()
funktioniert bei mir nicht. Oder liegt bei mir das Problem wo anders???
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Listbox für Anfänger

Beitrag von komma4 »

Keine Ahnung...

Folgender Code funktioniert (dokumenten-spezifischer Dialog, eine Listbox mit drei Einträgen):

Code: Alles auswählen

GlobalScope.BasicLibraries.loadLibrary( "Tools" )

oDialog = loadDialog( "Standard" , "Dialog1" , ThisComponent.DialogLibraries ) 

oListbox = oDialog.getControl( "ListBox1" ) 

oListbox.selectItemPos( 2 , TRUE  ) 

oDialog.execute()

print oListbox.selectedItem()


Bei der Anzeige ist der 3. Eintrag (Index: 2) markiert, nach der Anzeige wird der Text des gewählten Eintrags ausgegeben.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Listbox für Anfänger

Beitrag von keksi1970 »

hi,

ungetestet würde ich sagen, die reihenfolge der commands sind falsch.

Logische Überlegung :

was macht das Makro ?

Code: Alles auswählen

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.

also

Code: Alles auswählen

myListbox = myDlg.getControl("Listbox1")
myDlg.execute()
End Sub

Sub Anzeigen
If myListbox.selectedItem = "" then 
 exit sub
else
 msgbox myListbox.selectedItem
End If
End Sub
LG
Andreas
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Listbox für Anfänger

Beitrag von keksi1970 »

gast1 hat geschrieben:SelectedItems(0)
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
LG
Andreas

edit sagt :

1. der Autor der vorgenannten Zeilen ist ykcim
2. Besuche für mehrwissen doch meine Lieblingsseite zum nachschlagen :
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig110
Antworten