von skraszewski » Mo, 31.10.2005 17:54
Hallo.
den ganzen Tag als Laie rumgebastelt und habe nach vielem Herumstöbern folgendes gebastelt:
Code: Alles auswählen
rem variablen
Sub Schlangentext
Dim Dok as Object
Dim Cursor as Object
Dim x As Integer
Dim zm As Integer
Dim I As Long
Dim Replace As Object
Dim zeichen(6) As String
Dim nichts(6) As String
Dok = StarDesktop.CurrentComponent
Cursor = Dok.Text.createTextCursor()
Cursor.goToStartOfParagraph(False)
rem die Zahl der Zeichen in der Zeile auf 60 begrenzen
Cursor.goRight(60,False)
Dok.Text.insertControlCharacter(Cursor, _
com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
rem Text formatieren
Cursor.goToEndOfParagraph(True)
Cursor.CharFontName = "Arial"
Cursor.goToStart(Fals)
Cursor.goToEnd(True)
Cursor.CharHeight = 20
Cursor.goToStart(Fals)
Cursor.goToEnd(True)
rem hier geht es aber nicht, wollte es horizontal zentrieren
Cursor.ParaAdjust="Center"
Cursor.goToStart(Fals)
rem unerwünschte Zeichen ersetzen
zeichen() = Array(".", ",", "?", "!", _
":", ";", " ")
nichts() = Array("", "", "", "", "", "", "")
Replace = Dok.createReplaceDescriptor
For I = 0 To 6
Replace.SearchString = zeichen(I)
Replace.ReplaceString = nichts(I)
Dok.replaceAll(Replace)
Next I
rem Zeichenhöhe verändern
x = -100
do
cursor.goRight(1,True)
cursor.CharEscapement = x
cursor.goRight(1,False)
cursor.goLeft(1,False)
if x = -100 then
zm = 10
end if
if x = -90 then
zm = 10
end if
if x = -80 then
zm = 40
end if
if x = -40 then
zm = 60
end if
if x = 20 then
zm = 30
end if
if x = 50 then
zm = 25
end if
if x = 75 then
zm = 25
end if
if x = 100 then
zm = -24
end if
if x = 76 then
zm = -24
end if
if x = 52 then
zm = -33
end if
if x = 19 then
zm = -60
end if
if x = -41 then
zm = -40
end if
if x = -81 then
zm = -10
end if
if x = -91 then
zm = -9
end if
x = x + zm
Loop
rem Hier will es aber nicht zu Ende gehen, sondern es arbeitet weiter
End Sub
Abgesehen von den Fehlern auf die ich im Code hinweise, möchte ich noch
- dass die Zeichen als gesperrt und weiter voneinander entfern stehen, als bei den Standardeinstellungen, weiß aber nicht, wo man dass einstellen kann
- dass sich all die Automatisierungen nur auf den mit der Maus markierten Text beziehen, wurde zuvor kein Textabschnitt markiert, sollte ein Hinweis diesbezüglich erfolgen.
- diese Beschrenkung der Zeichenzahl pro Zeile sollte auf den gesammten markierten Text erfolgen, hier habe ich noch keine Ahnung
Wie auch immer, heute habe ich das Ding zum ersten mal gesehen und schon was gemacht. Ist bestimmt kein Meisterstück, aber es fängt schon an, wie gewünscht zu funktionieren.
Wenn du mal Zeit hättest kurz in den Code reinzuschauen, wäre ich für jeden Hinweis dankbar.
Und natürlich herzlichen Dank für die bisherige Hilfe
s.kraszewski
Hallo.
den ganzen Tag als Laie rumgebastelt und habe nach vielem Herumstöbern folgendes gebastelt:
[code]
rem variablen
Sub Schlangentext
Dim Dok as Object
Dim Cursor as Object
Dim x As Integer
Dim zm As Integer
Dim I As Long
Dim Replace As Object
Dim zeichen(6) As String
Dim nichts(6) As String
Dok = StarDesktop.CurrentComponent
Cursor = Dok.Text.createTextCursor()
Cursor.goToStartOfParagraph(False)
rem die Zahl der Zeichen in der Zeile auf 60 begrenzen
Cursor.goRight(60,False)
Dok.Text.insertControlCharacter(Cursor, _
com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
rem Text formatieren
Cursor.goToEndOfParagraph(True)
Cursor.CharFontName = "Arial"
Cursor.goToStart(Fals)
Cursor.goToEnd(True)
Cursor.CharHeight = 20
Cursor.goToStart(Fals)
Cursor.goToEnd(True)
rem hier geht es aber nicht, wollte es horizontal zentrieren
Cursor.ParaAdjust="Center"
Cursor.goToStart(Fals)
rem unerwünschte Zeichen ersetzen
zeichen() = Array(".", ",", "?", "!", _
":", ";", " ")
nichts() = Array("", "", "", "", "", "", "")
Replace = Dok.createReplaceDescriptor
For I = 0 To 6
Replace.SearchString = zeichen(I)
Replace.ReplaceString = nichts(I)
Dok.replaceAll(Replace)
Next I
rem Zeichenhöhe verändern
x = -100
do
cursor.goRight(1,True)
cursor.CharEscapement = x
cursor.goRight(1,False)
cursor.goLeft(1,False)
if x = -100 then
zm = 10
end if
if x = -90 then
zm = 10
end if
if x = -80 then
zm = 40
end if
if x = -40 then
zm = 60
end if
if x = 20 then
zm = 30
end if
if x = 50 then
zm = 25
end if
if x = 75 then
zm = 25
end if
if x = 100 then
zm = -24
end if
if x = 76 then
zm = -24
end if
if x = 52 then
zm = -33
end if
if x = 19 then
zm = -60
end if
if x = -41 then
zm = -40
end if
if x = -81 then
zm = -10
end if
if x = -91 then
zm = -9
end if
x = x + zm
Loop
rem Hier will es aber nicht zu Ende gehen, sondern es arbeitet weiter
End Sub[/code]
Abgesehen von den Fehlern auf die ich im Code hinweise, möchte ich noch
- dass die Zeichen als gesperrt und weiter voneinander entfern stehen, als bei den Standardeinstellungen, weiß aber nicht, wo man dass einstellen kann :-(
- dass sich all die Automatisierungen nur auf den mit der Maus markierten Text beziehen, wurde zuvor kein Textabschnitt markiert, sollte ein Hinweis diesbezüglich erfolgen.
- diese Beschrenkung der Zeichenzahl pro Zeile sollte auf den gesammten markierten Text erfolgen, hier habe ich noch keine Ahnung
Wie auch immer, heute habe ich das Ding zum ersten mal gesehen und schon was gemacht. Ist bestimmt kein Meisterstück, aber es fängt schon an, wie gewünscht zu funktionieren.
Wenn du mal Zeit hättest kurz in den Code reinzuschauen, wäre ich für jeden Hinweis dankbar.
Und natürlich herzlichen Dank für die bisherige Hilfe
s.kraszewski