Seite 1 von 1
Re: auf Kombinationsfeld zugreifen
Verfasst: Di, 19.05.2015 08:44
von komma4
In welcher Sprache?
aufgezeichnet mit MRI, in StarBasic, Kommentare durch mich:
Code: Alles auswählen
Sub Snippet
Dim oDrawPages As Variant
Dim oObj1 As Variant
Dim oObj2 As Variant
Dim oControl As Variant
Dim oAllItems As Variant
oDrawPages = ThisComponent.getDrawPages()
oObj1 = oDrawPages.getByIndex(0)
oObj2 = oObj1.getByIndex(0)
oControl = oObj2.getControl()
' aktueller Inhalt
oAllItems = oControl.getAllItems()
' setzen Text an Index 0
oControl.setItemText(0, "Beispiel")
End Sub
Hilft das weiter?
Re: auf Kombinationsfeld zugreifen
Verfasst: Di, 19.05.2015 08:53
von Stephan
Mein Problem, wie greife ich auf das Kombinationsfeld zu,
Siehe letzte Beispieldatei in:
viewtopic.php?f=18&t=1553
Gruß
Stephan
Re: auf Kombinationsfeld zugreifen
Verfasst: Di, 19.05.2015 10:58
von komma4
mit BASIC kannst Du nur den
dispatcher zum Zugriff auf die Zwischenablage verwenden
Folgendes Schnipsel mit Ereignis "Maustaste losgelassen" verbinden
Code: Alles auswählen
' code zum Identifizieren der Combobox noch hinzufügen!
'...
sCurrentValue = oComboBox.getCurrentValue()
oDispatchHelper = createUnoService( "com.sun.star.frame.DispatchHelper" )
oDispatchHelper.executeDispatch( sCurrentValue , ".uno:Copy", "", 0, Array() )
Das sollte es tun (ungetestet!)
Re: auf Kombinationsfeld zugreifen
Verfasst: Di, 19.05.2015 13:00
von Karolus
..code zum Identifizieren der Combobox noch hinzufügen!
wie immer bei ereignis-getriggerten Makros
daraus ergibt sich dann:
Code: Alles auswählen
Sub Main(event)
msgbox event.Source.Model.CurrentValue
End Sub
Re: auf Kombinationsfeld zugreifen
Verfasst: Mi, 20.05.2015 06:29
von Stephan
Es wäre gut wenn komma4 bitte seine codezeile:
Code: Alles auswählen
oDispatchHelper.executeDispatch( sCurrentValue , ".uno:Copy", "", 0, Array() )
prüft und feststellt was falsch ist, mir sagt diese Zeile nichts und ich bekomme sie nicht zum Laufen.
Vorerst nimm:
Code: Alles auswählen
sub data_combobox_copy(event)
Dim dispatcher as object
Dim sCurrentValue as Variant
Msgbox event.source.Model.CurrentValue 'dbg_properties
sCurrentValue = event.Source.Model.getCurrentValue()
dispatcher = createUnoService( "com.sun.star.frame.DispatchHelper" )
document = ThisComponent.CurrentController.Frame
dispatcher.executeDispatch( document, ".uno:Copy", "", 0, Array() )
End Sub
dass sollte es tun, da im Moment des Auswählens eigentlich kein Risiko besteht das der Text im KOmbinationsfeld nicht fokussiert ist.
Gruß
Stephan
Re: auf Kombinationsfeld zugreifen
Verfasst: Mi, 20.05.2015 08:38
von komma4
komma4 hat geschrieben:Das sollte es tun (ungetestet!)
und wie es sich heraus stellte: leider falsch!
Im Nachhinein überlegt auch völlig klar: der Befehl "
uno:copy" entspricht der Tastenkombination
STRG+C in der Oberfläche - und die weiss natürlich nichts von einer Basic-Variablen.
Lösungsweg: die Combobox mit einer Zelle verbinden, worin die Auswahl automatisch geschrieben wird, mit Code diese Zelle selektieren und dann per
dispatcher kopieren.
Re: auf Kombinationsfeld zugreifen
Verfasst: Do, 21.05.2015 07:29
von Stephan
und wie es sich heraus stellte: leider falsch!
Im Nachhinein überlegt auch völlig klar: der Befehl "uno:copy" entspricht der Tastenkombination STRG+C in der Oberfläche - und die weiss natürlich nichts von einer Basic-Variablen.
Es war natürlich nicht meine Absicht mit meiner Nachfrage/Bitte Deinen Irrtum in den Fokus zu rücken, sondern ich hatte gehofft das "uno:copy" vielleicht doch einem Parameter akzeptiert der das ermöglicht was Dir vorschwebte.
Für ganz ausgeschlossen hielt ich das schon deshalb nicht weil mir bei OO über die Jahre etliche undokumentierte Dinge begegnet sind.
Gruß
Stephan