Seite 1 von 2
Teil-Text in Zeile einpassen [gelöst]
Verfasst: Do, 19.08.2010 10:59
von clag
Hallo Coders....
einen hab ich noch
wie kann ich/man per Basic erkennen ob in einem Teil-Absatz vor einem manuellen Zeilenumbruch ein automatisch eingefügter existiert ?
mein Ziel ist ein Makro welches so lange einen Teilabsatz in 1% Schritten verschmälert bis er in eine Zeile passt
sub machpassend
loop:
if "Text bis manueller Umbruch hat autoUmbruch) then
Breite =99
thisComponent.currentselection().getbyindex(0).CharScaleWidth = Breite
Breite Breite-1
go to loop
end if
print " passt "
End Sub
oder so ähnlich
vielleicht hat ja auch jemand so etwas schon mal in fertig gesehen
bin wie immer für Tipps und Anregungen dankbar
und lade alle "Vorschläger" ein, kommt zu meiner Dankbaar
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 13:21
von Karolus
Hallo
Etwa so:
Code: Alles auswählen
Sub absatzstauchen
odoc = thisComponent
'↓der sichtbare Cursor kennt die Methoden: goto[Start|End]ofLine
oviewCursor = odoc.currentController.viewCursor()
'↓ein Textcursor kennt die Methoden: goto[Start|End]ofParagraph
oTcursor = odoc.text.createTextcursor()
oTcursor.gotorange( oviewcursor, false ) 'geht dahin wo der Viewcursor ist
oTcursor.gotoStartofParagraph( false )
oTcursor.gotoEndofParagraph( true )
oviewcursor.gotoStartofline( false )
oviewcursor.gotoendofline( true )
scale = 100
while otcursor.string <> oviewcursor.string
oviewcursor.gotostartofline( false )
scale = scale -1
oTcursor.CharScaleWidth = scale
oviewcursor.gotoendofline( true )
wend
End Sub
Gruß Karo
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 13:54
von clag
Hallo Karolus,
da bin ich platt ja genau so meinte ich das
aber
ich trau mich gar nicht zu meckern
deswegen schreibe ich auch in einem ganz leisem grau 
leider hat das Makro noch eine kleinen Haken,
nämlich wenn in dem Absatz ein manueller Zeilenumbruch existiert (shift Enter)
dann erkennt es den leider nicht, sondern schiebt den ganzen Absatz zusammen
und verfängt sich dann in einer Schleife, so dass man ctrl+shift+Q braucht
wenn das Makro den manuellen Zeilenumbruch erkennen und als Wirkungsbereich-Ende akzeptieren würde
wäre es
perfekt !
trotzdem schon Daaaaanke
edit:
alternativ oder auch nur auf den zuvor markierten Text bearbeiten der logischerweise am Absatzanfang beginnt ?
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 14:10
von Karolus
Hallo
Zum Dank soll ich mir auch noch die Augen verderben

- ich hab leider dafür gerade keine Lösung parat, und auch keine Zeit danach zu suchen, ich muss mal ein paar Brötchen verdienen gehen.
Gruß Karo
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 18:15
von clag
Hallo Karolus oder auch andere Mitleser
ich habe eine ganze weile mit dem Code von dir herum experimentiert
und habe so glaube die Ursache für den Fehler mit der endlos Schleife erkannt
der eine String enhält den chr(10) der andere nicht
damit kommt es wenn das Zeichen vorhanden ist zu der Situation
das
immer zutrift !
und dann gibt's halt keine ende
nur habe ich leider noch überhaupt keinen Schimmer wie diese Textcusor reagieren und wie man das abstellen könnte
eine Möglichkeit wäre wohl direkt nach chr(10) abzufragen aber wie ?
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 20:18
von turtle47
Hi,
clag hat geschrieben:eine Möglichkeit wäre wohl direkt nach chr(10) abzufragen aber wie ?
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 21:42
von clag
Hallo Karo, Turtle
deine Zeile habe ich natürlich gleich ausprobiert, funktioniert auch und findet den chr(10)
jetzt müsste man entweder von gleich am Anfang verhindern das beim einlesen von "otcursor,string"
nicht über den chr(10) hinaus bis chr(13) eingelesen wird.
Oder wenn das nicht zu verhindern ist den "otcursor,string" vom Rest nach dem chr(10) befreien
also
Code: Alles auswählen
otcursor.string = RTrimStr(otcursor.string, CHR(10))
otcursor.string = RTrimStr(otcursor.string, CHR(10)&".*")
leider funktioniert das nicht
wie muss das richtig aussehen ?
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 21:57
von turtle47
clag hat geschrieben:jetzt müsste man entweder von gleich am Anfang verhindern das beim einlesen von "otcursor,string"
nicht über den chr(10) hinaus bis chr(13) eingelesen wird.
Oder wenn das nicht zu verhindern ist den "otcursor,string" vom Rest nach dem chr(10) befreien
Und was bringt Dir das dann?
Dann brauchst Du doch die Lauweite nicht mehr zu ändern wenn Du eine "reine" Zeile ohne Zeilenumbruch hast.
Also für mich bleiben da noch

Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 22:35
von clag
Hi,
die reine Zeile ist doch noch keine Garantie das sie in die Zeile hineinpasst !
das chr(10) wir manchmal dort eingefügt wo der Text so lang ist das ein zusammen schieben keinen Sinn macht und ein Teil per manuellem
ZeilenUmbruch in die nächste Zeile geschickt wird
TesttextTesttextTesttext CHR(10) braucht nicht gestaucht werden
TesttextTesttextTesttextTesttextTesttext CHR(10) muss gestaucht werden um 10%, macht das Makro auch
TesttextTesttextTesttextTesttextTesttext CHR(10)
TesttextTesttextTesttextTesttext CHR(13) soll auch um 10% gestaucht werden aber nur bis CHR(10)
daran hängt sich das Makro aber auf und schrumpft alles bis zu chr(13)
weil der alles String enthält
"otcursor.string" TesttextTesttextTesttextTesttextTesttext CHR(10)TesttextTesttextTesttextTesttext CHR(13)enthält
wenn man den String auf
"otcursor.string" TesttextTesttextTesttextTesttextTesttext CHR(10)
reduzieren könnte, sollte das Makro einwandfrei funktionieren
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 22:43
von turtle47
Dann hole Dir den Teil bis zum CHR(10) mit:
Code: Alles auswählen
.....
oTcursor.gotoEndofParagraph( true )
i = instr(otcursor.string, CHR(10))
otcursor.string = Left(otcursor.string,i)
print otcursor.string
.....
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 23:04
von clag
Hi turtle47,
da geht etwas schief wenn ich deinen Code einsetze wird damit der Text von der Seite entfernt
soooo hatte ich das Problem nicht lösen wollen
kannst du deinen Vorschlag vielleicht noch einmal überdenken ?
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 23:15
von turtle47
clag hat geschrieben:jetzt müsste man entweder von gleich am Anfang verhindern das beim einlesen von "otcursor,string"
nicht über den chr(10) hinaus bis chr(13) eingelesen wird.
Und das macht der obere Code mit berichtigter Zeile:
Aus:
Er hörte leise Schritte hinter sich. Das bedeutete nichts Gutes. Wer würde ihm schon folgen, spät in
CHR(10)der Nacht und dazu noch in dieser engen Gasse.
wird:
Er hörte leise Schritte hinter sich. Das bedeutete nichts Gutes. Wer würde ihm schon folgen, spät in
Re: automatischen Umbruch im Text finden
Verfasst: Do, 19.08.2010 23:37
von clag
Hi Turtle47,
habe extra nochmal alles gespeichert auf und zu gemacht den Code neu eingefügt aber es bleibt dabei,
mit dem aufpoppen des Print-Fenster ist der Text rechts von CHR(10) aus dem Dokument verschwunden
und wen kein CHR(10) im Text enhalten ist wird der gesamte Text entfernt
wie kann man erreichen das das nur auf die internen Variablen wirkt ?
Re: automatischen Umbruch im Text finden
Verfasst: Fr, 20.08.2010 06:44
von Karolus
Hallo
Tut das:
Code: Alles auswählen
Sub absatzstauchen
odoc = thisComponent
oviewCursor = odoc.currentController.viewCursor()
oTcursor = odoc.text.createTextcursor()
oTcursor.gotorange( oviewcursor, false )
oTcursor.gotoStartofParagraph( false )
oTcursor.gotoEndofParagraph( true )
oviewcursor.gotoStartofline( false )
oviewcursor.gotoendofline( true )
if Instr( otcursor.string, chr( 10 )) then
rbreak = Instr( otcursor.string, chr( 10 ))
oTcursor.collapsetoStart()
oTcursor.goright( rbreak - 1 , true )
end if
scale = 100
while otcursor.string <> oviewcursor.string
oviewcursor.gotostartofline( false )
scale = scale -1
oTcursor.CharScaleWidth = scale
oviewcursor.gotoendofline( true )
wend
End Sub
Gruß Karo
Re: automatischen Umbruch im Text finden
Verfasst: Fr, 20.08.2010 07:51
von clag
Hallo Karolus, Turtle47...........
ja genau so hatte ich mir das gewünscht
jetzt ist es perfekt !
klick und passt, super
der Button dafür ist schon in die Vorlage eingebaut bzw bekommt nen Hotkey
Danke für die Super Unterstützung !
Das birgt für euch aber die Gefahr, ich komme wieder .........
du und turtle ihr habt jetzt freien Eintritt in meiner Dankbar
