Jeg har et problem med at gemme controls fra en form til registry - PÆNT -
altså på en ikke hackeragtig måde!
Ikke noget med On Error Resume Next o.s.v.!!
****************************************************
PROBLEM:
Jeg vil gerne gemme controls, med et navn hvor deres eventuelle "index"
indgår!
Men jeg kan ikke teste Controls fra Forms.Control for om de er arrays eller
ikke!..
f.eks:
Dim Opt as OptionButton
Dim OptArray(2) as OptionButton
Dim ControlName As String
ControlName = OptArray.name & CStr(OptArray.index)
...
det går fint. men..
ControlName = Opt.name & CStr(Opt.index)
går ikke fint, da Index ikke er defineret (det er jo ikke et array).
derfor kan man benytte:
if IsArray(Opt) then
ControlName = Opt.name & CStr(Opt.index)
Else
ControlName = Opt.name & "0"
End if
MEN!
IsArray virker ikke på Object eller på Control typen (tilsyneladende)
********************************************
Her er lidt mere kode der forklarer sammenhængen:
Public Sub GetFormControls(frm As Form)
Dim c As Control
Dim name As String
For Each c In frm.Controls
If c.Tag <> "X" Then ' Use tag to indicate that the control should not
be saved
' Virker IKKE
**************
If Not IsEmpty(c.Index) Then
name = c.name & c.Index
Else
name = c.name
End If
' Virker heller IKKE
******************
If IsArray(c) Then
name = c.name & c.Index
Else
name = c.name
End If
Debug.Print "Get:" & name
If TypeOf c Is OptionButton Then
c.Value = GetSetting(App.Title, frm.name, name, c.Value)
End If
If TypeOf c Is CheckBox Then
c.Value = GetSetting(App.Title, frm.name, name, c.Value)
End If
'.
' og så videre
'.
End If
Next c
End Sub
|