Absatz verstecken

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Absatz verstecken

Beitrag von clag »

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
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Absatz verstecken

Beitrag von ykcim »

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:

Code: Alles auswählen

    
oDocument = ThisComponent
oDocSections = oDocument.TextSections
mysection=oDocSections.getbyname("Bereich1")
mysection.isvisible=true 'false
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.

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
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Absatz verstecken

Beitrag von clag »

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
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Absatz verstecken

Beitrag von Stephan »

ykcim hat geschrieben:man kann Absätze nicht direkt ausblenden.
Eigentlich schon, z.B.:

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
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Absatz verstecken

Beitrag von clag »

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 ?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Absatz verstecken

Beitrag von ykcim »

Hallo Stephan,
Eigentlich schon, z.B.:
Schon mal wirklich mit der Methode gearbeitet. Ich rate davon ab!

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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Absatz verstecken

Beitrag von Stephan »

Hallo Michael,
Schon mal wirklich mit der Methode gearbeitet.
Ja.
Jetzt schreib etwas an der Stelle. Es scheint keine Texteingabe zu erfolgen
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.
eigentlich nur in Texten oder Passagen in denen nicht mehr geschrieben werden soll.
Naja und das hatte ich hier automatisch, vielleicht ja unberechtigt, angenommen.
Dieses Charhidden ist mit größter Vorsicht zu verwenden,
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).

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
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Absatz verstecken

Beitrag von ykcim »

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
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Antworten