Seite 1 von 1

Textfeld durch Markierfeld ersetzen

Verfasst: Mo 25. Feb 2019, 11:24
von macwomble
Hallo,

Ich habe hunderte Textfelder durch Markierfelder zu ersetzen. Einzeln geht das ganz gut, jedoch ist es mühsam jedes einzelne Textfeld umzuwandeln. Gibt es eine einfachere Möglichkeit um alle Textfelder durch Markierfelder zu ersetzen?

Danke für eure Hilfe

Re: Textfeld durch Markierfeld ersetzen

Verfasst: Mo 25. Feb 2019, 14:07
von nikki
Hallo,

ich fürchte Nein, denn bei Mehrfachselektion wird die Option Ersetzen durch nicht angeboten.

Re: Textfeld durch Markierfeld ersetzen

Verfasst: Di 26. Feb 2019, 08:38
von macwomble
Danke - Ich habe es befürchtet.
Lässt sich da mit Makros etwas machen?
Oder eventuell mir externen Tools?

Hintergrund:
Ich habe vor einigen Jahren zahlreiche Dokumentenformulare erstellt. Leider funktionierte es damals (noch) nicht, wenn ich viele Markierfelder einsetzte.
Es kam immer zum Absturz von Writer. Ich habe deshalb statt Markierfeldern Textfelder mit einer Stelle, Passwortzeichen 'X' verwendet, was auch recht gut funktioniert. Nur gibt es dort immer Differenzen beim PDF-Export (* statt X oder Schrift zu groß). Außerdem ist es natürlich auch nicht wirklich schön die Textfelder hierfür zu missbrauchen und die Markierfelder sind ja dafür gemacht.

Re: Textfeld durch Markierfeld ersetzen

Verfasst: Di 26. Feb 2019, 11:17
von nikki
macwomble hat geschrieben:
Di 26. Feb 2019, 08:38
Lässt sich da mit Makros etwas machen?
Da kann ich Dir nicht weiterhelfen. Wende Dich an den Forumsbereich LibreOffice Programmierung. Allerdings dürfte das Makro sehr aufwendig sein.

Re: Textfeld durch Markierfeld ersetzen

Verfasst: Di 26. Feb 2019, 13:16
von musikai
Es gibt ja die Rechtsklick-Funktion "ersetze mit".

Folgendes Macro macht davon Gebrauch. Es selektiert nacheinander jedes Textfeld und fragt Dich, ob Du es ersetzen möchtest.
Dafür muss unbedingt der Formular-Entwurfsmodus eingeschaltet sein.

Code: Alles auswählen

sub replace_Textbox_with_Checkbox

oForm = ThisComponent.DrawPage.Forms.getByIndex(0)
for i=0 to oForm.count-1
goi = oForm.GetByindex(i)
if goi.ServiceName="stardiv.one.form.component.Edit" then 
ThisComponent.currentcontroller.select(goi)

		sVar3 = MsgBox("Ersetze mit Markierfeld?",259)

			If sVar3 = 2 then  'cancel
			Exit sub
			elseif sVar3=7 then 'no, proceed without unprotecting 
			else

			replacewithcheckbox
			
			End if

end if
next

end sub

sub replacewithcheckbox
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
 dispatcher.executeDispatch(document, ".uno:ConvertToCheckBox", "", 0, Array())

end sub

Re: Textfeld durch Markierfeld ersetzen

Verfasst: Di 26. Feb 2019, 14:10
von macwomble
Wow ! Danke !

Genau so etwas habe ich gesucht - Super-Klasse ! :D