Seite 1 von 1

[gelöst] Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 27.08.2012 18:54
von sven-my
Hallo Experten,

diesen Dialog möchte ich etwas "vernünftiger" gestalten.
der Dialog und das Makro, aus dem der Dialog aufgerufen wird, sind in einem writer-Doc.
Dialog.jpg
Dialog.jpg (26.65 KiB) 4577 mal betrachtet
und zwar möchte ich die obersten beiden Textfelder (Versandart) gegen eine Combobox austauschen.

Trotz zweitägiger Suche (per Forumssuche-1.0.1.oxt) habe ich nicht herausgefunden, wie ich die "Vorgaben" in diese Combobox hinein bringe - egal, ob fest,
oder variabel vom Makro aus.

Vorgaben meint: einmal die Vorgabe, die aus der Adressdatei kommt (weil einige Adressen schon vorbelegt sind) plus die 7 anderen Möglichkeiten.

Variabel wäre die bessere Version.

Ach ja. wie auswerten ? Geht es so ?

Code: Alles auswählen

	ctl_Vart = oDialog1.getControl("Combobox1")
		
	Vart = ctl_Vart.Text
Bitte einen Tip für`n Dummie

gruß
sven-my

Re: Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 27.08.2012 21:37
von F3K Total
Hallo Sven,
wenn Du dein Kombinationsfeld angesprochen hast, gibt es den Befehl

Code: Alles auswählen

.additem ("Mein Text in der Zeile", Zeilennummer)
um eine Zeile hinzuzufügen.
Ein vollständiges Beispiel für ein "Befüllmakro" hast Du hier:

Code: Alles auswählen

dim odlg as object
dim oComboBox1 as object

Sub S_Dialog_with_Combobox
    DialogLibraries.loadLibrary( "Standard" )
    oForm = DialogLibraries.Standard.dlg_fill_Combobox
    odlg = CreateUnoDialog( oForm )
    oComboBox1 = odlg.GetControl("ComboBox1")
    dim zeilen(5) as string
    zeilen (0) = "dies ist Zeile 0"
    zeilen (1) = "dies ist Zeile 1"
    zeilen (2) = "dies ist Zeile 2"
    zeilen (3) = "dies ist Zeile 3"
    zeilen (4) = "dies ist Zeile 4"
    zeilen (5) = "dies ist Zeile 5"
   
    for i = 0 to 5
        if  i = 0 then oComboBox1.Text = zeilen (i) 'füllt das Kombinationsfeld mit dem ersten Listeneintrag
        oComboBox1.addItem (zeilen(i), i) 'hier werden die Zeilen befüllt
    next i
    odlg.execute
end sub
... und eine Beispieldatei ...


Viel Erfolg beim Nachbauen

Gruß R

EDIT: hast Du einen festen Listeninhalt, dann kannst du unter den Eigenschaften des Kontrollfeldes auf "Listen-Einträge" gehen und die Listeneinträge, einmalig von Hand eingeben, neue Zeile mit Shift+Enter. Speichern nicht vergessen

Re: Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 27.08.2012 22:13
von sven-my
Hallo F3k Total,

erstmal herzlichen Dank !

Die erste Combobox habe ich bereits erledigt (Bezug) der Rest wird Dank Deines Makros auch nicht schwerer sein.
Alles Mögliche habe ich versucht, um eine Combobox "per Hand" zu füllen, aber [Shift]+[Enter] war wohl nicht dabei.

In Deinem Makro

Code: Alles auswählen

    oComboBox1 = odlg.GetControl("ComboBox1")
    mri oComboBox1
    dim zeilen(5) as string
gibt es die bei "mri" eine Fehlermeldung : Sub- oder Funktionsprozedur nicht belegt, aber ohne diese Zeile funktionierts (hab sie einfach auskommentiert).

So kann ich diesen Dialog viel besser gestalten.

Ich möchte keinen neuen Thread aufmachen, daher hier noch eine Frage im Zusammenhang mit dem Basic-Dialog:

Wie kann ich 'tim' zu HH:MM machen ?

Code: Alles auswählen

	ctl_tim = oDialog1.getControl("TimeField1")
	
	Tim = ctl_tim.Time
gruß
sven-my

P.S.: die Übernahme von Teilen Deines Makros habe prima geklappt ! Nochmals vielen Dank!

Re: Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 27.08.2012 22:35
von F3K Total
sven-my hat geschrieben:Wie kann ich 'tim' zu HH:MM machen ?
Was willst Du damit machen?
Wenn Du die Zeit nur anzeigen lassen willst, geht dies:

Code: Alles auswählen

   ctl_tim = oDialog1.getControl("TimeField1")
   Tim = ctl_tim.Text
   msgbox format (Tim,"HH:MM")
Gruß R

Re: Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 27.08.2012 23:05
von sven-my
Hallo R,

das soll als Text an den Bezug; allerdings nur, wenn es sich um ein Telefonat, oder ein persönliches Gespräch gehandelt hat.

Ich habe in meiner "Brief"-Vorlage die Möglichkeit {Ihr Zeichen} {Ihre Nachricht} {meine Nachricht} einzugeben, und dann soll es bei

Ihre Nachricht z.B. so aussehen: tel. Gespr. am 27.08.12 / 13:45

nun liegt das, was ich da vom Zeitfeld zurück bekomme in dieser Form vor : hhmmss, ich hab schon versucht, das zu mit > Str(Time) < zu konvertieren, um dann den String zu zerlegen, bringt aber nur Fehlermeldung.

gruß
sven-my

Re: Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 27.08.2012 23:11
von F3K Total
Hi,
wenn Du mal genau hinschaust, lese ich .Text und nicht .Time aus.
Gruß R

Re: Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 27.08.2012 23:25
von sven-my
Hallo R,

entschuldige bitte, da habe ich mich nicht richtig ausgedrückt.

Ich war der Meinung, daß mein Hinweis, keinen neuen Thread aufmachen zu wollen reicht, daß ich nicht Dein Makro meinte.

Zwar ein Problem mit dem Basic-Dialog, aber nicht im Zusammenhang mit der ComboBox; sondern mit einem Zeitfeld.


gruß
sven-my

Re: Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 27.08.2012 23:32
von F3K Total
Müde?
F3K Total hat geschrieben:Wenn Du die Zeit nur anzeigen lassen willst, geht dies:

ctl_tim = oDialog1.getControl("TimeField1")
Tim = ctl_tim.Text
msgbox format (Tim,"HH:MM")

Gruß R

Re: Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 27.08.2012 23:41
von sven-my
Hallo R,

JA

- seit heut morgen um fünf schlag ich mich mit diesem Dialog rum --- Deine Hilfe war der letzte Puzzlestein.

Danke, dieses Format(time) habe ich heute schon mindestens dreimal benutzt, zwar innerhalb eines Makros (um Systemzeit umzuwandeln), aber auf das Naheliegende, dies auch beim Basic-Dialog zu machen kam ich nicht.
Na ja, das Alter.

gruß
sven-my

P.S.: Jetzt ist alles so, wie ich es mir vorgestellt habe.

Re: [gelöst] Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Di, 28.08.2012 22:26
von DPunch
Servus

Kleine Anmerkung noch hierzu:
Wenn man die Combobox per Makro befüllt, sollte man dies nicht per Schleife tun.
Selbst wenn die Werte nicht wie in diesem Fall schon in einem Array vorliegen, lohnt es sich, diese erstmal in einem Array unterzubringen und erst dann an die Combobox weiterzugeben.

Code: Alles auswählen

for i = 0 to 5
	if  i = 0 then oComboBox1.Text = zeilen (i) 'füllt das Kombinationsfeld mit dem ersten Listeneintrag
	oComboBox1.addItem (zeilen(i), i) 'hier werden die Zeilen befüllt
next i
ersetzt durch

Code: Alles auswählen

oComboBox1.Model.StringItemList = zeilen
oComboBox1.Text = zeilen(0)
erhöht nicht nur die Lesbarkeit und Wartbarkeit, sondern ist auch ~15-30 Mal so schnell.

Re: [gelöst] Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Do, 30.08.2012 21:12
von F3K Total
Hallo DPunch,
danke für den guten Tipp.
DPunch hat geschrieben:Kleine Anmerkung noch hierzu:
Wenn man die Combobox per Makro befüllt, sollte man dies nicht per Schleife tun.
Gruß Rik

Re: [gelöst] Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Mo, 03.09.2012 09:06
von hr.hartwig
Hallo
DPunch hat geschrieben:Servus
Kleine Anmerkung noch hierzu:
Wenn man die Combobox per Makro befüllt, sollte man dies nicht per Schleife tun.
Doch noch eine Frage:
Geht das auch mit einem Resultset?
Etwa in der Form:
oDlg.GetControl( "ListBox_Kurz" ).Model.StringItemList = oResultSet.getString(3)... ?
Das Resultset müsste doch auch das Array enthalten.

Ich mach das jetzt mit Schleife:

Code: Alles auswählen

Dim sResults() As String
I = 0
	While oResultSet.Next()
		ReDim Preserve sResults(I) As String
		sResults(I) = oResultSet.getString(oResultSet.findColumn("Name"))
		I = I + 1
	Wend

' Eintragen des Resultarrays in die Listbox
oDlg.GetControl( "ListBox_Kurz" ).Model.StringItemList = sResults
Gibt es dafür eine "richtigere" Lösung?
Danke und viele Grüße,
Hotti

Re: [gelöst] Wie Combobox vorbelegen in BASIC-Dialog ?

Verfasst: Do, 18.10.2012 19:38
von DPunch
Servus
hr.hartwig hat geschrieben:Gibt es dafür eine "richtigere" Lösung?
Nein, ein Resultset ist kein Array und kennt u.U. nichtmal seine eigene Zeilenzahl, daher ist Deine Lösung die "richtigste", die hier verwendet werden kann.