Mehrsprachigkeit
- Man erstellst eine Funktion, die beim "Öffnen" des Formulars aufgerufen wird, als Parameter wird die "Referenz" auf das Formular übergeben.
Private Sub Form_Open(Cancel As Integer)
SetLang Me
End Sub
- In dieser Funktion "schleift" man mit "For Each" durch jedes Steuerelement...
- Bei jedem Steuerelement wird die "ControlType"-Eigenschaft geprüft.
- Je nach Typ verfährst du weiter:
z.B. ist es ein "Label", dann kannst du die Sprache ermitteln und setzen.
Ist es aber ein "Unterformular", rufst du dieselbe Funktion rekursiv auf; mit der Referenz auf das Formular, welches dem Unterformular zugrunde liegt ( SetLang ctr.Form ).
Public Function SetLang(ByVal myForm As Form) As Integer
Dim res As Integer
res = 0
Dim ctr As Control
For Each ctr In myForm
Debug.Print ctr.Name & ": " & ctr.ControlType
Select Case ctr.ControlType
Case 100 '*Label
ctr.Caption = Translate(myForm.Name & "." & ctr.Name)
Case 112 '*Unterformular
SetLang ctr.Form
End Select
Next
SetLang = res
End Function
Public Function Translate(ByVal key As String) As String
Dim res As String
res = key
'***** eigenen Code zur Übersetzung implementieren ***
res = "to be translated"
'* übersetzten Begriff zurückegeben
Translate = res
End Function