Seite 1 von 1
Daten aus Array nach Zwischenablage entladen
Verfasst: So, 03.11.2019 21:48
von Postbyme
Hallo,
habe einige Textzeilen in einem eindimensionalen Array und möchte diese Daten nun in einer Schleife in die Zwischenablage entladen (als Sätze untereinander).
In der A00-Dokumentation habe ich diesen Weg als Service nicht beschrieben gefunden. Kann mir da jemand weiter helfen?
Oder muss ich die Daten erst in einen Tabellenbereich entladen um sie dann mit
go_doc = thisComponent
go_t2 = go_doc.sheets(1)
oDispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")
oFrame1 = go_doc.CurrentController.Frame
'Die Zellen A1:B2 werden über den Controller ausgewählt.
oSheet = go_doc.Sheets(1)
oRng = oSheet.getCellRangeByName("A33:A35")
go_doc.CurrentController.select(oRng)
'Mit einem Dispatch-Befehl wird in die Zwischenablage kopiert.
oDispatcher.executeDispatch(oFrame1, ".uno:Copy", "", 0, Array())
in die Zwischenablage zu bringen?
Vielen Dank
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: So, 03.11.2019 22:02
von Stephan
z.B.:
Code: Alles auswählen
Global sTxtCString As String
Sub Start()
x = Array("aa","bb","cc")
For i = 0 To Ubound(x())
k = k & x(i) & CHR(13) & CHR(10)
Next i
CopyToClipBoard(k)
End Sub
Sub CopyToClipBoard( sText )
Dim oClip, oTR
' create SystemClipboard instance
oClip = CreateUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
oTR = createUnoListener("Tr_", "com.sun.star.datatransfer.XTransferable")
' set data
oClip.setContents( oTR,Null )
sTxtCString = sText
'oClip.flushClipboard() ' does not work
End Sub
Function Tr_getTransferData(aFlavor as com.sun.star.datatransfer.DataFlavor)
If (aFlavor.MimeType = "text/plain;charset=utf-16") Then
Tr_getTransferData() = sTxtCString
End If
End Function
Function Tr_getTransferDataFlavors()
Dim aFlavor As new com.sun.star.datatransfer.DataFlavor
aFlavor.MimeType = "text/plain;charset=utf-16"
aFlavor.HumanPresentableName = "Unicode-Text"
Tr_getTransferDataFlavors() = array( aFlavor )
End Function
Function Tr_isDataFlavorSupported(aFlavor as com.sun.star.datatransfer.DataFlavor ) as Boolean
If aFlavor.MimeType = "text/plain;charset=utf-16" Then
Tr_isDataFlavorSupported = true
Else
Tr_isDataFlavorSupported = false
End If
End Function
aus:
https://forum.openoffice.org/en/forum/v ... rd#p355824
Gruß
Stephan
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Mo, 04.11.2019 08:15
von Postbyme
Hallo Stephan,
oh das werde ich heute abend einmal studieren und ausprobieren.
Vielen Dank
Winni
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Mo, 04.11.2019 21:11
von Postbyme
Funktioniert leider nicht in A00 bei mir unter Windows 10.
Wenn ich den Code durchlaufe dann springt er plötzlich komisch und AOO hängt sich auf.
Schade!
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Di, 05.11.2019 09:11
von Stephan
Dann mache es über ein Dokument:
Code: Alles auswählen
Sub Main()
Dim arg(0) as New com.sun.star.beans.PropertyValue
arg(0).Name = "Hidden"
arg(0).Value = True
x = Array("aa","bb","cc")
For i = 0 To Ubound(x())
k = k & x(i) & CHR(13)
Next i
x = StarDesktop.loadComponentFromURL ("private:factory/swriter","_blank", 0, arg())
x.Text.String = LEFT(k, LEN(k)-1)
ccf = x.CurrentController.Frame
With createUnoService("com.sun.star.frame.DispatchHelper")
.executeDispatch(ccf, ".uno:SelectAll", "", 0, Array())
.executeDispatch(ccf, ".uno:Copy", "", 0, Array())
End With
x.close(true)
End Sub
Gruß
Stephan
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Do, 07.11.2019 13:30
von Postbyme
ja, so klappt es. Super!
Danke
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Sa, 09.11.2019 09:25
von Postbyme
Hallo Stephan,
würde dem Text gleich eine nichtproportionale Schriftart mitgeben wollen (z.B. DejaVu Sans Mono). Wie würde das funktionieren?
Mein Problem:
VBA-Code:
Code: Alles auswählen
la_ab(li_abzeile) = " | Rechnungsbetrag " & string(42," ") & "| " & ls_repr & " |"
Mein Problem ist, das er beim reinkopieren dieses Zwischenablagetextets in unterschiedliche Tools (Notepad, Thunderbird, hier in Forumbeitrag) die string(42," ") weglässt. CHR$(32) geht auch nicht. Nach Notepad klappts!
Werde noch zum "Hirsch"
Danke
Gruß
Winni
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Sa, 09.11.2019 12:49
von Stephan
Wie würde das funktionieren?
z.B.:
Code: Alles auswählen
Sub Main()
Dim arg(0) as New com.sun.star.beans.PropertyValue
arg(0).Name = "Hidden"
arg(0).Value = True
dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = "CharFontName.StyleName"
args2(0).Value = ""
args2(1).Name = "CharFontName.Pitch"
args2(1).Value = 0
args2(2).Name = "CharFontName.CharSet"
args2(2).Value = -1
args2(3).Name = "CharFontName.Family"
args2(3).Value = 5
args2(4).Name = "CharFontName.FamilyName"
args2(4).Value = "DejaVu Sans Mono"
x = Array("aa","bb","cc")
For i = 0 To Ubound(x())
k = k & x(i) & CHR(13)
Next i
x = StarDesktop.loadComponentFromURL ("private:factory/swriter","_blank", 0, arg())
x.Text.String = LEFT(k, LEN(k)-1)
ccf = x.CurrentController.Frame
With createUnoService("com.sun.star.frame.DispatchHelper")
.executeDispatch(ccf, ".uno:SelectAll", "", 0, Array())
.executeDispatch(ccf, ".uno:CharFontName", "", 0, args2())
.executeDispatch(ccf, ".uno:Copy", "", 0, Array())
End With
x.close(true)
End Sub
Mein Problem:
VBA-Code:
Code: Alles auswählen
la_ab(li_abzeile) = " | Rechnungsbetrag " & string(42," ") & "| " & ls_repr & " |"
Mein Problem ist, das er beim reinkopieren dieses Zwischenablagetextets in unterschiedliche Tools (Notepad, Thunderbird, hier in Forumbeitrag) die string(42," ") weglässt. CHR$(32) geht auch nicht. Nach Notepad klappts!
Ich habe keine Ahnung was Du damit meinst.
Gruß
Stephan
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Sa, 09.11.2019 21:41
von Postbyme
Hi,
a) ein Array wird mit unterschiedlichen Textzeilen gefüllt um eine Auftragsbestätigung für Thunderbird zusammenzubauen
Alle Textzeilen werden schön formatiert damit letztendlich alle Zeilen zu den Überschriften passen. Deshalb auch eine nichtproportionale Schriftart.
Eine Textzeile davon wäre z.B.
Code: Alles auswählen
x(li_abzeile) = " | Rechnungsbetrag " & string(42," ") & "| " & ls_repr & " |"
b) dann wird das Array in die Zwischenablage entladen (mithilfe deiner Lösungen)
c) dann wird mit Strg+V dieser Text in eine Thunderbirdmail eingefügt und sieht dann so aus:
| Rechnungsbetrag | 25,49 EUR | (aber Mist die 42 Blanks fehlen nach dem Wort Rechnungsbetrag)
mache ich STRG+V in Notepad dann funktioniert das dagegen korrekt so:
| Rechnungsbetrag ……………………………………….. | 25,49 EUR |
Hatte gedacht, wenn ich den Text schon als nicht proportional in der Zwischenablage habe (deine 2. Lösung) dann ist der Fehler behoben aber ich glaube das ist kein Problem von LO sondern hier muss ich in Thunderbird suchen. Auf jeden Fall vielen Dank für deine Lösungen, habe jetzt auch verstanden wie das mit den Texteigenschaften funktioniert.
Gruß
Wini
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Sa, 09.11.2019 22:26
von Stephan
aber ich glaube das ist kein Problem von LO sondern hier muss ich in Thunderbird suchen
Hier ist ein Hinweis auf den Bug:
https://www.thunderbird-mail.de/forum/t ... -verloren/
mir ist allerdings der Status der dortigen Bugmeldung nicht ganz klar:
https://bugzilla.mozilla.org/show_bug.cgi?id=1174452
mir scheint der Bug wurde gefixt, aber es gibt dort den Hinweis auf einen Regressionsbug:
https://bugzilla.mozilla.org/show_bug.cgi?id=1568313
Bei Letzterem ist mir nur nicht klar warum der als REgressionsbug gilt, denn die FEhlerbeschreibung ist inhaltlich, meine Meinung nach, eine Andere.
Gruß
Stephan
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Sa, 09.11.2019 22:29
von Postbyme
Hallo,
nach einem schnellen Test mit Tabulator würde ich sagen "nein".
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: Sa, 09.11.2019 22:34
von Postbyme
Ja, das wäre der Bug, oje. Werde die Sache auch einmal nachverfolgen.
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: So, 10.11.2019 12:15
von Postbyme
Hallo,
nein, mit Tabulator klappt auch nicht.
Parallel habe ich mein Problem in einem Thunderbird-Forum aufgemacht und da schon eine Lösung bekommen. Mit Shift+Verfassen
wird eine Mail als html oder Reintext (noch Fragen offen) eröffnet und das reinkopieren erfolgt dann schön "mit Blanks".
Gruß
Winni
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: So, 10.11.2019 15:32
von Postbyme
Ich werde jetzt wahrscheinlich die Auftragsbestätigung ohne Tabelle aufbauen. Habe gegoogelt und viele Kommentare warnen vor einer unkorrekten / verschobenen Darstellung beim Empfänger.
Ggf. werde ich noch später ein PDF dazu hängen - hier aus LO generiert
.
Re: Daten aus Array nach Zwischenablage entladen
Verfasst: So, 10.11.2019 20:36
von Postbyme
Hallo Stephan,
a)wenn ich entsprechend deinem Programmbaustein ein Arrayelement als bold machen wollte dann müsste ich wie vorgehen?
Geht das als Eigenschaft von CharFontName oder muss ich da .executeDispatch(ccf,".uno:Bold","",0,args3()) machen.
Wie lauten dann die Einträge für .Name und .Value?
Natürlich muss ich die fetten und nicht fetten Arrayelement getrennt behandeln und zum Schluss wieder zusammensetzen.
b) Gibt es tiefergehende Informationen zu den folgenden Uno-"Dingsbums oder Services????" und wie Name und value belegt werden können?
.uno:CharFontName
.uno:FontHeight
.uno:Grow
.uno:Shrink
.uno:Bold
.uno:Italic
.uno:Underline
.uno:Strikeout
.uno:SuperScript
.uno:SubScript
.uno:Color
.uno:BackColor
.uno:LeftPara
.uno:CenterPara
.uno:RightPara
.uno:JustifyPara
.uno:LineSpacing
.uno:Spacing
.uno:ParaspaceIncrease
.uno:ParaspaceDecrease
.uno:IncrementIndent
.uno:DecrementIndent
Danke
Gruß
Winni