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 !
