[gelöst] mehrere Formularfelder per Makro ansprechen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Theophilus
Beiträge: 92
Registriert: Di 27. Sep 2011, 12:30

[gelöst] mehrere Formularfelder per Makro ansprechen

Beitrag von Theophilus » Sa 2. Mär 2019, 19:07

Moin, moin,
ich habe in einem Formular 12 Felder, die aus Sicherheitsgründen auf readonly gesetzt sind.
Nun möchte ich mittels eines Buttons "editieren" den Schreibschutz temporär aufheben.
Das geht problemlos mit zb

Code: Alles auswählen

objForm.fld_Name.readonly=false
Meine Frage: muss ich jedes Feld einzeln per Name aufrufen oder gibt es eine Lösung mit einer for...next Schleife odgl?
Zuletzt geändert von Theophilus am Mo 4. Mär 2019, 15:50, insgesamt 1-mal geändert.
Herzliche Grüße aus dem Hohen Norden!

LO 6.0.6.2 unter Xubuntu 18.04

RobertG
Beiträge: 1933
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: mehrere Formularfelder per Makro ansprechen

Beitrag von RobertG » Sa 2. Mär 2019, 19:22

Hallo Theophilus,

Du kannst natürlich die Formularfelder auch über den Index ansprechen. Nur weißt Du nicht genau, welches der Felder dahinter steckt. Ich habe so etwas (für das Handbuch) einmal konstruiert, indem ich bestimmte Zeichen in den "Zusatzinformationen" der betreffenden Felder abgespeichert habe. Dann lasse ich beim Makro einfach alle Formularfelder durchgehen und wo die entsprechende Info drin steht lasse ich das Ding auf "readonly" schalten.

Ich weiß nicht, ab welcher Handbuchversion das dabei ist. Gegebenenfalls musst Du auf meiner Homepage die neueste Version (Handbuch für 6.2, noch nicht erschienen) herunterladen und im Makrokapitel nach "Eingabekontrolle bei Formularen" suchen.

Gruß

Robert

Theophilus
Beiträge: 92
Registriert: Di 27. Sep 2011, 12:30

Re: mehrere Formularfelder per Makro ansprechen

Beitrag von Theophilus » So 3. Mär 2019, 21:38

Hallo Robert, danke, das funktioniert:

Code: Alles auswählen

sub Schreibschutz_entfernen
objDoc=ThisComponent
objForm=objDoc.drawpage.forms(0)

For n=0 to objForm.count-1
objElement= objForm.getByIndex(n)
strName=objElement.name
iPos=instr(strName,"fld_")
if iPos > 0 then
strText= objElement.Tag
	if instr(strText,"Schreibschutz") > 0 then
	objElement.readonly = false
	end if
end if
next 
end sub
die Namen der Eingabefelder fangen alle mit "fld_" an. Die, deren Schreibschutz verändert werden soll, haben "*Schreibschutz*" in den "Zusatzinformationen".
Herzliche Grüße aus dem Hohen Norden!

LO 6.0.6.2 unter Xubuntu 18.04

Antworten