Markierfelder im Text finden
Moderator: Moderatoren
Markierfelder im Text finden
Hallo, liebe OpenOffice-Gemeinde,
ich habe einen Text, in dem vor einigen Textstellen Markierfelder im Text eingefügt sind (als Zeichen verankert). Wenn ich den Text jetzt Textportion für Textportion durchgehe, bekomme ich eine Textportion an der Stelle, an der das Markierfeld ist - ich kann aus dieser Textportion nicht das Control auslesen, und dementsprechend auch nicht, ob das Markierfeld gesetzt ist oder nicht.
Oder gibt es einen anderen Ansatz?
Ziel ist es, den angehakten Text in ein zweites Dokument zu kopieren und hier nur noch den Text zur Verfügung zu haben. (Textbausteine eignen sich für diesen Zweck nur bedingt.)
Tante Google hat mir bisher nicht weiterhelfen können.
Vielen Dank
Colster
ich habe einen Text, in dem vor einigen Textstellen Markierfelder im Text eingefügt sind (als Zeichen verankert). Wenn ich den Text jetzt Textportion für Textportion durchgehe, bekomme ich eine Textportion an der Stelle, an der das Markierfeld ist - ich kann aus dieser Textportion nicht das Control auslesen, und dementsprechend auch nicht, ob das Markierfeld gesetzt ist oder nicht.
Oder gibt es einen anderen Ansatz?
Ziel ist es, den angehakten Text in ein zweites Dokument zu kopieren und hier nur noch den Text zur Verfügung zu haben. (Textbausteine eignen sich für diesen Zweck nur bedingt.)
Tante Google hat mir bisher nicht weiterhelfen können.
Vielen Dank
Colster
Im Ganzen liegt der Nutzen mehr im Gebrauch als im Eigentum! (Aristoteles)
Re: Markierfelder im Text finden
Hi,
versuche es umgekehrt, durchsuche die Drawpagenach den Markierfeldshapes und bestimme den zugehörigen Anchor.
Gruß R
versuche es umgekehrt, durchsuche die Drawpage
Code: Alles auswählen
ThisComponent.drawpage.getbyindex()
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Markierfelder im Text finden
Hallo F3K,
vielen Dank für Deine Antwort.
Noch eine Frage: Wie komme ich vom Anchor dann zum Text?
Mit Gruß
colster
vielen Dank für Deine Antwort.
Noch eine Frage: Wie komme ich vom Anchor dann zum Text?
Mit Gruß
colster
Im Ganzen liegt der Nutzen mehr im Gebrauch als im Eigentum! (Aristoteles)
Re: Markierfelder im Text finden
Mein letzter Beitrag war ungenau:
Wie ich zum Text vom Anchor komme, ist nicht so schwierig.-> oShape.anchor.getText()
Aber wie finde ich den Text zwischen aufeinanderfolgenden Shapes?
Mit Gruß
Colster
Wie ich zum Text vom Anchor komme, ist nicht so schwierig.-> oShape.anchor.getText()
Aber wie finde ich den Text zwischen aufeinanderfolgenden Shapes?
Mit Gruß
Colster
Im Ganzen liegt der Nutzen mehr im Gebrauch als im Eigentum! (Aristoteles)
Re: Markierfelder im Text finden
Hi,
ich empfehle Dir die Verwendung eines Introspection-Tools wie MRI oder Xray
Damit kannst Du alle OOo-Dokumente hinsichtlich ihres Aufbaues durchleuchten.
Dann wirst du vermutlich, jetzt aus dem Kopf, finden.
Gruß R
ich empfehle Dir die Verwendung eines Introspection-Tools wie MRI oder Xray
Damit kannst Du alle OOo-Dokumente hinsichtlich ihres Aufbaues durchleuchten.
Dann wirst du vermutlich, jetzt aus dem Kopf,
Code: Alles auswählen
Anchor.string
Gruß R
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Markierfelder im Text finden
Vielen Dank für die Antworten, auch mit MRI habe ich keine Möglichkeit gefunden im Fließtext nur den Text zwischen den Markierfeldern zu identizieren. Ich habe es jetzt so gelöst, dass ich den Text in Frames gesteckt habe, im Frame ist jeweils ein Checkfeld - und über das Shape komme ich zum Control (oShape.Control.State gibt den Wert des Markierfeldes aus) und zum Frame (oShape.AnchorFrame() gibt den Frame an).
Nicht ganz so wie ich es wollte, geht aber auch.
Mit Gruß
Colster
Nicht ganz so wie ich es wollte, geht aber auch.
Mit Gruß
Colster
Im Ganzen liegt der Nutzen mehr im Gebrauch als im Eigentum! (Aristoteles)
Re: Markierfelder im Text finden
Hi,
Gruß R
habe geforscht, hier das Ergebnis, funktioniert bei mir:Colster hat geschrieben:keine Möglichkeit gefunden
Code: Alles auswählen
Sub getchkText
dim oRanges(1,0) as Variant
ncounter = 0
oText = thisComponent.text
oTextEnumeration = oText.createEnumeration
While oTextEnumeration.hasmoreelements
oPara = oTextEnumeration.nextelement
oparaEnumeration = oPara.createEnumeration
While oparaEnumeration.hasmoreelements
oPortion = oparaEnumeration.nextelement
oPortionContentEnumeration = oPortion.createContentEnumeration("com.sun.star.drawing.ControlShape")
While oPortionContentEnumeration.hasmoreelements
oShape = oPortionContentEnumeration.nextelement
if oShape.Control.ServiceName = "stardiv.one.form.component.CheckBox" then
redim preserve oRanges(1,nCounter)
oRanges(0,nCounter) = oShape.Control.State
oRanges(1,nCounter) = oPara.Anchor
nCounter = nCounter + 1
endif
wend
wend
wend
oCursor = oText.CreateTextCursor
for i = 0 to uBound(oRanges,2)-1
if oRanges(0,i) = 1 then
oAnchorStart = oRanges(1,i)
oAnchorEnd = oRanges(1,i+1)
oCursor.gotorange(oAnchorEnd,false)
oCursor.gotoPreviousParagraph(false)
oCursor.gotorange(oAnchorStart,true)
if oCursor.CharColor = -1 then
oCursor.CharColor = RGB(0,255,0)
else
oCursor.CharColor = -1
endif
endif
next i
if oRanges(0,uBound(oRanges,2)) = 1 then
oAnchorStart = oRanges(1,uBound(oRanges,2))
oCursor.gotoEnd(false)
oCursor.gotorange(oAnchorStart, true)
if oCursor.CharColor = -1 then
oCursor.CharColor = RGB(0,255,0)
else
oCursor.CharColor = -1
endif
endif
End Sub
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Markierfelder im Text finden
gut gemacht, die Markierfelder werden so gefunden.habe geforscht, hier das Ergebnis, funktioniert bei mir:
Bei mir ist das Problem das die innere Schleife:
Code: Alles auswählen
While oPortionContentEnumeration.hasmoreelements
'...
Wend
Auch ist mir die Logik der Grünmarkierung des Textes nicht ganz klar, aber ich habe momentan nicht weiuter nachgedacht.
Was ich getan habe ist: ich habe ein Dokument mit mehrere Absätzen und 2 Checkboxen (in unterschiedlichen Absätzen) und markiere entweder nichts, oder Gesamttext oder mehrere einzelne Absätze. Das Makro macht dann immer den Absatz vor dem ersten Absatz mit Checkbox grün (wobei ich merke das wärend des Makrodurchlaufs zwioschenzeitlich auch andere Textteilke grün werdcen.
Wie auch immer, der wichtige Kern des Makros, finden der Checkboxen, funktioniert.
Gruß
Stephan
Re: Markierfelder im Text finden
Hi,
es muss wohl zum Dokument passen, die Checkboxen am Absatzanfang als Zeichen verankert.
Der Fokus muss vor Ausführung des Makros von der gerade umgeschalteten Checkbox weg, damit der Status stimmt, anbei ein Beispiel.
Gruß R
es muss wohl zum Dokument passen, die Checkboxen am Absatzanfang als Zeichen verankert.
Der Fokus muss vor Ausführung des Makros von der gerade umgeschalteten Checkbox weg, damit der Status stimmt, anbei ein Beispiel.
Gruß R
- Dateianhänge
-
- chkText_CreateContent_Enumeration.odt
- (16.04 KiB) 103-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Markierfelder im Text finden
Vielen Dank für Deine Forschungsarbeit, F3K, damit kann ich jetzt mein Tool noch mal erheblich eleganter gestalten. (Die Frames zu positionieren war frickelig, Fließtext ist bestimmt besser).
Vielen Dank
Colster
Vielen Dank
Colster
Im Ganzen liegt der Nutzen mehr im Gebrauch als im Eigentum! (Aristoteles)