per Macro in die Zwischenablage kopieren

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

Moderator: Moderatoren

Noebian
****
Beiträge: 158
Registriert: Sa, 03.10.2009 18:00

per Macro in die Zwischenablage kopieren

Beitrag von Noebian »

Moin, ich bräuchte mal einen Tipp.
Ich baue zzt an einer Datenbank mit OOBase / MySQL die unter anderem Adressfelder enthält.
Es wäre praktisch, per Knopfdruck den kompletten Adresssatz in die Zwischenablage zu kopieren, um auf die Schnelle einen einzelnen Brief verfassen zu können ohne über die Serienbrieffunktion zu gehen, oder auch zum Weitergeben der Adresse per eMail etc.
Meine Idee wäre, die entsprechenden Felder per Makro auszulesen, zu einem String zusammenzubasteln und den dann an die Zwischenablage zu übergeben.
Wie aber schreibe ich etwas in die Zwischenablage?
In der API findet sich unter :: com :: sun :: star :: datatransfer :: eine Clipboardfunktion, aber ich habe nicht den leisesten Plan wie ich die einsetzen kann . Für ein paar Zeilen Beispielcode wäre ich dankbar!
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40

herzliche Grüße aus Deutschlands Norden
Shirkan
***
Beiträge: 62
Registriert: Di, 21.06.2011 10:34

Re: per Macro in die Zwischenablage kopieren

Beitrag von Shirkan »

Hallo,
ich kürzlich eine Sache bei der ich die Zwischenablage auslese. Das Makro müsste zum Beschreiben nur umgestricke werden. Vieleicht ist Dir damit schon geholfen.
Gruß M.

Code: Alles auswählen

Function ZwischenablageAuslesen()

  'Author: Andrew Pitonyak
  Dim oClip
  Dim oClipContents
  Dim oTypes
  Dim oConverter
  Dim convertedString$
  Dim i%
  Dim iPlainLoc%
  Dim sClipService As String

  iPlainLoc = -1
  sClipService = "com.sun.star.datatransfer.clipboard.SystemClipboard"
  oClip = createUnoService(sClipService)
  oConverter = createUnoService("com.sun.star.script.Converter")

  'Print "Clipboard name = " & oClip.getName()
  'Print "Implemantation name = " & oClip.getImplementationName()
  oClipContents = oClip.getContents()
  oTypes = oClipContents.getTransferDataFlavors()

  Dim msg$
  Dim iLoc%
  Dim outS

  msg = ""
  iLoc = -1
  For i=LBound(oTypes) To UBound(oTypes)
    If oTypes(i).MimeType = "text/plain;charset=utf-16" Then
      iPlainLoc = i
      Exit For
    End If
  Next
  If (iPlainLoc >= 0) Then
    Dim oData
    oData = oClipContents.getTransferData(oTypes(iPlainLoc))
    convertedString = oConverter.convertToSimpleType(oData, com.sun.star.uno.TypeClass.STRING)
    ZwischenablageAuslesen = convertedString
  End If
End Function
Noebian
****
Beiträge: 158
Registriert: Sa, 03.10.2009 18:00

Re: per Macro in die Zwischenablage kopieren

Beitrag von Noebian »

Hallo, vielen Dank für dein Hinweis. Ich bin der Spur nachgegangen und hier
http://openoffice.2283327.n4.nabble.com ... 68930.html
fündig geworden.
Leider bringt mich das aber nicht dorthin, wo ich hinwill, da ich ein Adressfeld mit Zeilenumbrüchen ins Clipboard übernehmen will. Hier aber streikt der Code: es werden nur die Felder vor dem Umbruch übernommen.
Nach vielen vergeblichen Versuchen wähle ich nun einen anderen Weg: Ich lasse mir den zusammengestellten Adress-Satz in einem Dialog anzeigen und hole es mir von dort per copy & paste.
Wenn einer eine bessere Lösung hat...
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40

herzliche Grüße aus Deutschlands Norden
Antworten