Absatz verstecken
Moderator: Moderatoren
Absatz verstecken
Hallo Leutz,
mein zweites Anliegen/Vorhaben für heute,
in einem Writer Dokument möchte ich einen Absatz (ggf auch mehrere) verstecken der auf ein Schlüsselwort folgt
leider habe ich da noch gar keinen StarBasic Ansatz wie ich das vorgehen könnte,
der Ablauf an sich ist völlig klar.
also zuerst den Absatz mit dem Schlüsselwort suchen zB "find (*.Details)"
hinter "Details" eine Benutzerdefinierte Variable einfügen "showdetails = "no""
den darauf folgenden Absatz verstecken mit der Bedingung "showdetails=="no""
nur wie muss das in manuell erzeugtem StarBasic aussehen ?
bin auch hier für jede Info oder Code-teile dankbar
mein zweites Anliegen/Vorhaben für heute,
in einem Writer Dokument möchte ich einen Absatz (ggf auch mehrere) verstecken der auf ein Schlüsselwort folgt
leider habe ich da noch gar keinen StarBasic Ansatz wie ich das vorgehen könnte,
der Ablauf an sich ist völlig klar.
also zuerst den Absatz mit dem Schlüsselwort suchen zB "find (*.Details)"
hinter "Details" eine Benutzerdefinierte Variable einfügen "showdetails = "no""
den darauf folgenden Absatz verstecken mit der Bedingung "showdetails=="no""
nur wie muss das in manuell erzeugtem StarBasic aussehen ?
bin auch hier für jede Info oder Code-teile dankbar
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Absatz verstecken
Hallo,
man kann Absätze nicht direkt ausblenden.
Um Text auszublenden muß dieser als Bereich festgesetzt werden Ein Bereich kann einen oder mehrere Absätze beinhalten.
Um dann einen Bereich mit Starbasic ein- oder auszublenden genügt:
Da Du dem Bereich einen Namen geben kannst, brauchst Du eigentlich kein Schlüsselwort mehr. Über den Bereichsnamen kannst auch den Schalter setzen.
Der Code blendet alle Bereich mit "-N" aus.
Ansonsten mußt Du den Schalter nur als Variable mit dem Bereichsnamen setzen ( Variable "Bereichsname" Werte "Ja" oder "Nein") und abfragen.
mfg
Michael
man kann Absätze nicht direkt ausblenden.
Um Text auszublenden muß dieser als Bereich festgesetzt werden Ein Bereich kann einen oder mehrere Absätze beinhalten.
Um dann einen Bereich mit Starbasic ein- oder auszublenden genügt:
Code: Alles auswählen
oDocument = ThisComponent
oDocSections = oDocument.TextSections
mysection=oDocSections.getbyname("Bereich1")
mysection.isvisible=true 'false
Der Code blendet alle Bereich mit "-N" aus.
Code: Alles auswählen
Sub Ausblenden
oDocument = ThisComponent
oDocSections = oDocument.TextSections
for i=0 to oDocSections.count-1
bereichsname=oDocSections.getbyindex(i).name
gefunden=InStr(bereichsname,"-N")
if gefunden<>0 then
mysection=oDocSections.getbyname(bereichsname)
mysection.isvisible=false
end if
next i
end sub
Ansonsten mußt Du den Schalter nur als Variable mit dem Bereichsnamen setzen ( Variable "Bereichsname" Werte "Ja" oder "Nein") und abfragen.
mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
FAQ zu Starbasic -> http://www.starbasicfaq.de
Re: Absatz verstecken
Hallo Michael,
erst einmal Danke für deine Hilfestellung
es scheint ich habe da etwas zu vage beschrieben was ich anstrebe
in dem Text gibt es Zeilen/Absätze in denen das Wort ".* Details" vorkommt
danach folgt jeweils ein umfangreichere Text/Absatz der ausgeblendet werden soll
so das nur noch die "Überschriften" mit dem Wort Details sichtbar sind
nun wollte ich diese Absätze verstecken und das an eine Variable knüpfen
damit man später per Button ein anderes Makro aufrufen kann
welches die Variable ändert und damit der Text ein und ausgeblendet wird.
in etwas so wie das hier angedacht ist
Also hier geht es jetzt darum diese Variable einzufügen
und die Absätze nach den Zeilen mit "Detail" aufzufinden und auszublenden.
dein Code ist aber sicher nicht vergebens ich muss aber erst noch die Sections verstehen .....
trotzdem Danke
erst einmal Danke für deine Hilfestellung
es scheint ich habe da etwas zu vage beschrieben was ich anstrebe
in dem Text gibt es Zeilen/Absätze in denen das Wort ".* Details" vorkommt
danach folgt jeweils ein umfangreichere Text/Absatz der ausgeblendet werden soll
so das nur noch die "Überschriften" mit dem Wort Details sichtbar sind
nun wollte ich diese Absätze verstecken und das an eine Variable knüpfen
damit man später per Button ein anderes Makro aufrufen kann
welches die Variable ändert und damit der Text ein und ausgeblendet wird.
in etwas so wie das hier angedacht ist
Also hier geht es jetzt darum diese Variable einzufügen
und die Absätze nach den Zeilen mit "Detail" aufzufinden und auszublenden.
dein Code ist aber sicher nicht vergebens ich muss aber erst noch die Sections verstehen .....
trotzdem Danke
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Absatz verstecken
Eigentlich schon, z.B.:ykcim hat geschrieben:man kann Absätze nicht direkt ausblenden.
Code: Alles auswählen
Sub Absaetze_verstecken()
tmp = ThisComponent.Text.createEnumeration
While tmp.hasMoreElements
teil = tmp.nextElement
If teil.supportsService("com.sun.star.text.Paragraph") Then
teil.CharHidden = True
End If
Wend
End Sub
Gruß
Stephan
Re: Absatz verstecken
Hallo Stephan,
ist das "CharHidden = True" die gleiche Funktion die man
über Menü > Einfügen > Feldbefehle > Funktionen > Versteckter Absatz] [Bedingung] erreicht?
wenn ja, wie kann man da die Bedingung übergeben ?
wenn nicht, wie müsste man das in Basic ausdrücken ?
ist das "CharHidden = True" die gleiche Funktion die man
über Menü > Einfügen > Feldbefehle > Funktionen > Versteckter Absatz] [Bedingung] erreicht?
wenn ja, wie kann man da die Bedingung übergeben ?
wenn nicht, wie müsste man das in Basic ausdrücken ?
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Absatz verstecken
Hallo Stephan,
Erstelle mal einen Textdokument mit beliebigen Text in mehreren Absätzen und lass dann Deine Routine drüberlaufen. Der Text ist weg! Jetzt schreib etwas an der Stelle. Es scheint keine Tetxeingabe zu erfolgen, weil keine Cursor da ist. Lasse Deine Routine mit charhidden=false wieder drüberlaufen und wundere Dich über das was dort jetzt steht: der von Dir neu getippte Text steht rückwärts im Absatz!
Wenn man zwischen zwei Absätzen einen auf diese Weise ausblendet und man schreibt danach im Text (im Bereich des ausgeblendeten Absatzes) und blendet den Absatz wieder ein, kommt alles mögliche raus, aber nicht was man eigentlich möchte. Wenn man Bereiche ausblendet passiert das nicht!
Dieses Charhidden ist mit größter Vorsicht zu verwenden, eigentlich nur in Texten oder Passagen in denen nicht mehr geschrieben werden soll.
Status gilt für 3.2.1 windows
mfg
Michael
Schon mal wirklich mit der Methode gearbeitet. Ich rate davon ab!Eigentlich schon, z.B.:
Erstelle mal einen Textdokument mit beliebigen Text in mehreren Absätzen und lass dann Deine Routine drüberlaufen. Der Text ist weg! Jetzt schreib etwas an der Stelle. Es scheint keine Tetxeingabe zu erfolgen, weil keine Cursor da ist. Lasse Deine Routine mit charhidden=false wieder drüberlaufen und wundere Dich über das was dort jetzt steht: der von Dir neu getippte Text steht rückwärts im Absatz!
Wenn man zwischen zwei Absätzen einen auf diese Weise ausblendet und man schreibt danach im Text (im Bereich des ausgeblendeten Absatzes) und blendet den Absatz wieder ein, kommt alles mögliche raus, aber nicht was man eigentlich möchte. Wenn man Bereiche ausblendet passiert das nicht!
Dieses Charhidden ist mit größter Vorsicht zu verwenden, eigentlich nur in Texten oder Passagen in denen nicht mehr geschrieben werden soll.
Status gilt für 3.2.1 windows
mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
FAQ zu Starbasic -> http://www.starbasicfaq.de
Re: Absatz verstecken
Hallo Michael,
Falls Du Dich dadurch belehrt fühlen solltest tut mir das leid, denn das lag nicht in meiner Absicht, aber vielleicht hätte ich wirklich nichts sagen sollen.
Aber lass uns doch Beide bitte vielleicht wechselseitig nachsichtig sein, so ich ja unumwunden zugebe, das ich bei meinem Kommentar auch auf jegliche Hinweise zu möglichen 'Nebenwirkungen' des Codes in bestimmten Situationen, verzichtet habe, was ich mir nunmehr nicht minder als Fehler anrechne als das was ich oben kritisiere.
Gruß
Stephan
Ja.Schon mal wirklich mit der Methode gearbeitet.
Ja, das ist mir auch bekannt, bloß genau weil keine Eingabe zu erscheinen scheint würde man vielleicht die Steuerzeichen einschalten und nicht blindlinks drauflos tippen.Jetzt schreib etwas an der Stelle. Es scheint keine Texteingabe zu erfolgen
Naja und das hatte ich hier automatisch, vielleicht ja unberechtigt, angenommen.eigentlich nur in Texten oder Passagen in denen nicht mehr geschrieben werden soll.
Dann wäre aber vielleicht trotzdem ein entsprechender Hinweis sinnvoll gewesen, denn jeder der hier sonst nachliest glaubt das Ganze wäre nur mittels Einfügen von Bereichen möglich - das war auch der Grund warum ich hier gepostet hatte, denn für mich schien Dein "nein" zu 'gründsätzlich' (auch weil das Ganze ja über die GUI geht, somit mancher Einsteiger leicht darauf stößt und sich dann fragt wozu der 'besondere' Code nötig ist - das zumindest ging mir durch den Kopf).Dieses Charhidden ist mit größter Vorsicht zu verwenden,
Falls Du Dich dadurch belehrt fühlen solltest tut mir das leid, denn das lag nicht in meiner Absicht, aber vielleicht hätte ich wirklich nichts sagen sollen.
Aber lass uns doch Beide bitte vielleicht wechselseitig nachsichtig sein, so ich ja unumwunden zugebe, das ich bei meinem Kommentar auch auf jegliche Hinweise zu möglichen 'Nebenwirkungen' des Codes in bestimmten Situationen, verzichtet habe, was ich mir nunmehr nicht minder als Fehler anrechne als das was ich oben kritisiere.
Gruß
Stephan
Re: Absatz verstecken
Hallo Stephan,
ich habe mich nicht belehrt gefühlt. Mach Dir keinen Kopf darüber.
Es ist nur so das die Funktion Absätze auf diesen Weg zu verstecken, über die GUI oder Starbasic, wegen der Nebenwirkung einfach Schrott ist!
Und ich hätte das vielleicht gleich in der ersten Antwort schreiben können, das es eigentlich geht aber nichts taugt. Ich bin aber manchmal schreibfaul.
mfg
Michael
ich habe mich nicht belehrt gefühlt. Mach Dir keinen Kopf darüber.
Es ist nur so das die Funktion Absätze auf diesen Weg zu verstecken, über die GUI oder Starbasic, wegen der Nebenwirkung einfach Schrott ist!
Und ich hätte das vielleicht gleich in der ersten Antwort schreiben können, das es eigentlich geht aber nichts taugt. Ich bin aber manchmal schreibfaul.
mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
FAQ zu Starbasic -> http://www.starbasicfaq.de