PDA

Vollständige Version anzeigen : Formularfelder entspeeren


quarx--;-))--
27.10.2003, 13:58
Hallo,

ich habe eine Frage. Ich habe ein Formular mit verschiedenen Textfeldern
die standardmäßig über die Eigenschaften gespeert sind, also nicht
editierbar. Das soll auch so sein. Dann gibt es einen Button mit dem man
die Felder editierbar machen kann. Bisher hab ich dann für jedes Feld
folgendes gemacht:

Me!Feld1.locked= false
Me!Feld2.locked= false
...

Gibts da nicht einen Befehl mit dem man direkt alle Felder entsperren kann?
Das würde mir viel Arbeit ersparen...

Gruß, ;)

Arne Dieckmann
27.10.2003, 14:04
Versehe alle zu sperrenden/entsperrenden Felder mit einer Marke (Eigenschaften/Andere - ganz unten). Und dann beim Ereignis des "Entriegel-Buttons":


Dim ctl as Control

For each ctl in me.Controls
'als Marke wird hier X verwendet (ohne Anführungszeichen!)
If ctl.Tag="X" then
me(ctl.Name).Locked=False
end if
Next

TommyK
27.10.2003, 14:05
Hallo,

ich mach es immer so.
Alle Felder die es betrifft werden mit der Eigenschaft-Marke versehen
z.B. "XY"

die folgende Funktion fragt die Eigenschaft ab und aktiviert oder deaktiviert die Controls.

Function tk_ControlsProperty(objF As Form, strMarke As String, fAktiviert As Boolean, fGesperrt As Boolean)
'*******************************************
'Name: tk_ControlsProperty (Function)
'Purpose: De- oder aktiviert bzw. ent- oder sperrt alle Controls im Form die die Marke enthalten
'Author: Thomas Keßler
'Date: Februar 20, 2003, 12:26:47
'Inputs: F = Formular, Marke = Tag der Controls im Form, Aktiviert und Gesperrt True oder False
'Output:
'Example: "tk_ControlsProperty Me, "XY", True, False" aktiviert und entsperrt alle Controls im aktuellen Form die den Tag "XY" haben
'*******************************************
On Error Resume Next
Dim intI As Integer, objC As Control, varX As Variant
For intI = 0 To objF.count - 1
Set objC = objF(intI)
If InStr(objC.Tag, strMarke) > 0 Then
objC.Enabled = fAktiviert
objC.Locked = fGesperrt
If TypeOf objC Is SubForm Then
varX = tk_ControlsProperty(objC.Form, strMarke, fAktiviert, fGesperrt)
End If
End If
Next intI
End Function

Der Aufruf:
tk_ControlsProperty Me, "XY", True, False

würde dann alle Felder die die Marke "XY" haben aktivieren und entsperren.

quarx--;-))--
27.10.2003, 14:10
Danke euch beiden. Ich habe jetzt einfach mal die Lösung von
Arne vorgezogen weil die etwas übersichtlicher ist. Trotzdem
Danke Tommy. Ich werde mir deine Lösung mal in ner ruhigen
Minute reinziehen...

Gruß, ;)