von uroveits » So, 31.10.2010 11:24
Hallo Jürgen,
vielen Dank für Deine Hinweise.
Ich habe diese jetzt umgesetzt und es funktioniert im Prinzip. Das Problem, das jetzt noch auftritt ist folgendes:
Der Autotexteintrag besteht auf einer formatierten Tabelle. Ich habe ein Makro ("QMHinweisEinfuegen") geschrieben, mit dem diese Tabelle korrekt eingefügt wird (s. folgenden Code):
Dieser Code ist etwas länger, da ich die Leerzeile über und unter Tabelle automatisch entfernen lasse. Wahrscheinlich bekommst Du gerade einen Lachanfall wegen der umständlichen Programmierung. Aber es funktioniert.
Code: Alles auswählen
sub QMHinweisEinfuegen
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Group"
args1(0).Value = "SchiffersAutoText*1"
dispatcher.executeDispatch(document, ".uno:SetActGlossaryGroup", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Group"
args2(0).Value = "SchiffersAutoText*1"
dispatcher.executeDispatch(document, ".uno:SetActGlossaryGroup", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Group"
args3(0).Value = "SchiffersAutoText*1"
dispatcher.executeDispatch(document, ".uno:SetActGlossaryGroup", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Group"
args4(0).Value = "SchiffersAutoText*1"
args4(1).Name = "ShortName"
args4(1).Value = "Q"
dispatcher.executeDispatch(document, ".uno:InsertGlossary", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Count"
args5(0).Value = 1
args5(1).Name = "Select"
args5(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DelToEndOfSentence", "", 0, Array())
rem ----------------------------------------------------------------------
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Count"
args6(0).Value = 1
args6(1).Name = "Select"
args6(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args5())
rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Count"
args7(0).Value = 1
args7(1).Name = "Select"
args7(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args6())
rem ----------------------------------------------------------------------
dim args8(1) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Count"
args8(0).Value = 1
args8(1).Name = "Select"
args8(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args7())
rem ----------------------------------------------------------------------
dim args9(1) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Count"
args9(0).Value = 1
args9(1).Name = "Select"
args9(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args8())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
end sub
Nun zu meinem Problem:
Mit Deinem Code-Vorschlag kann ich zwar den Autotext einfügen, aber die Formatierung wird nicht übernommnen. Aus meiner Sicht gibt es zwei Lösungsansätze, die ich aber beide bisher noch nicht umsetzen konnte. Vielleicht hast Du einen Tipp für mich:
Lösungsansatz1: Einfügen des Autotextes in dem gewünschten und im "AutoText" abgespeicherten Format
Lösungsansatz2: "FrameCursor = Frame.createTextCursor()" und "FrameCursor.String = " steuern wohl die Fokusübernahme und die AutoText-Ausführung innerhalb des "Rahmens". Gibt es eine Möglichkeit, das o.g. Makro ("QMHinweisEinfuegen") hier einzufügen bzw. ausführen zu lassen.
Gruß
Jochen
Hallo Jürgen,
vielen Dank für Deine Hinweise.
Ich habe diese jetzt umgesetzt und es funktioniert im Prinzip. Das Problem, das jetzt noch auftritt ist folgendes:
Der Autotexteintrag besteht auf einer formatierten Tabelle. Ich habe ein Makro ("QMHinweisEinfuegen") geschrieben, mit dem diese Tabelle korrekt eingefügt wird (s. folgenden Code):
Dieser Code ist etwas länger, da ich die Leerzeile über und unter Tabelle automatisch entfernen lasse. Wahrscheinlich bekommst Du gerade einen Lachanfall wegen der umständlichen Programmierung. Aber es funktioniert.
[code]
sub QMHinweisEinfuegen
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Group"
args1(0).Value = "SchiffersAutoText*1"
dispatcher.executeDispatch(document, ".uno:SetActGlossaryGroup", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Group"
args2(0).Value = "SchiffersAutoText*1"
dispatcher.executeDispatch(document, ".uno:SetActGlossaryGroup", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Group"
args3(0).Value = "SchiffersAutoText*1"
dispatcher.executeDispatch(document, ".uno:SetActGlossaryGroup", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Group"
args4(0).Value = "SchiffersAutoText*1"
args4(1).Name = "ShortName"
args4(1).Value = "Q"
dispatcher.executeDispatch(document, ".uno:InsertGlossary", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Count"
args5(0).Value = 1
args5(1).Name = "Select"
args5(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:DelToEndOfSentence", "", 0, Array())
rem ----------------------------------------------------------------------
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Count"
args6(0).Value = 1
args6(1).Name = "Select"
args6(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args5())
rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Count"
args7(0).Value = 1
args7(1).Name = "Select"
args7(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args6())
rem ----------------------------------------------------------------------
dim args8(1) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Count"
args8(0).Value = 1
args8(1).Name = "Select"
args8(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args7())
rem ----------------------------------------------------------------------
dim args9(1) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Count"
args9(0).Value = 1
args9(1).Name = "Select"
args9(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args8())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())
end sub
[/code]
Nun zu meinem Problem:
Mit Deinem Code-Vorschlag kann ich zwar den Autotext einfügen, aber die Formatierung wird nicht übernommnen. Aus meiner Sicht gibt es zwei Lösungsansätze, die ich aber beide bisher noch nicht umsetzen konnte. Vielleicht hast Du einen Tipp für mich:
Lösungsansatz1: Einfügen des Autotextes in dem gewünschten und im "AutoText" abgespeicherten Format
Lösungsansatz2: "FrameCursor = Frame.createTextCursor()" und "FrameCursor.String = " steuern wohl die Fokusübernahme und die AutoText-Ausführung innerhalb des "Rahmens". Gibt es eine Möglichkeit, das o.g. Makro ("QMHinweisEinfuegen") hier einzufügen bzw. ausführen zu lassen.
Gruß
Jochen