auf Kombinationsfeld zugreifen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: auf Kombinationsfeld zugreifen

Re: auf Kombinationsfeld zugreifen

von Stephan » Do, 21.05.2015 07:29

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

Re: auf Kombinationsfeld zugreifen

von komma4 » Mi, 20.05.2015 08:38

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

von Stephan » Mi, 20.05.2015 06:29

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

von Karolus » Di, 19.05.2015 13:00

..code zum Identifizieren der Combobox noch hinzufügen!
wie immer bei ereignis-getriggerten Makros

Code: Alles auswählen

Sub Main(event)
mri(event)
End Sub
daraus ergibt sich dann:

Code: Alles auswählen

Sub Main(event)
msgbox event.Source.Model.CurrentValue
End Sub

Re: auf Kombinationsfeld zugreifen

von komma4 » Di, 19.05.2015 10:58

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

von Stephan » Di, 19.05.2015 08:53

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

von komma4 » Di, 19.05.2015 08:44

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?

Nach oben