Hallo,
ich benutze MS Access 2010 Professional. Ich möchte Kroatische Vokabel lernen und mein DB ist soweit in Ordnung außer das wenn ich lerne manchmal kommen Kroatisch Sonderzeichen für ein Wort dann habe ich ein Hauptformular wo die Vokabel eingegeben und geprüft werden und ein Dialog Formular mit die Sonderzeichen, es funktioniert alles aber wenn ein Sonderzeichen eingefügt wird in txtAntwort dann bleibt der Fokus auf den frmSonderzeichen anstatt auf den txtAntwort von frmVokabelTrainer. Hier mein Code vielleicht jemand hat eine Lösung für mich?
Option Compare Database
Option Explicit
Private Sub Form_Load()
' Hilfsfunktion hinzufügen
If IsFormLoaded("frmVokabelTrainer") Then
Me.Move Left:=9000, Top:=1000, Width:=7000, Height:=5000
End If
End Sub
' Hilfsfunktion außerhalb des Form_Load einfügen
Function IsFormLoaded(FormName As String) As Boolean
Dim frm As Form
On Error Resume Next
Set frm = Forms(FormName)
IsFormLoaded = (Err.Number = 0)
On Error GoTo 0
End Function
' Fügt das Zeichen an der aktuellen Cursorposition im Textfeld txtAntwort auf frmVokabelTrainer ein
Private Sub ZeichenEingeben(ByVal s As String)
Dim txt As Control
Set txt = Forms!frmVokabelTrainer!txtAntwort
Dim curText As String
curText = txt.Text
Dim pos As Long
pos = txt.SelStart
Dim newText As String
newText = Left(curText, pos) & s & Mid(curText, pos + 1)
txt.Text = newText
txt.SelStart = pos + Len(s)
txt.SelLength = 0
txt.setFocus
End Sub
Private Sub btnD_Click()
Dim txt As Control '?
Call ZeichenEingeben(ChrW(272)) ' Ð
End Sub
Private Sub btn_d_Click()
Call ZeichenEingeben(ChrW(273)) ' d
End Sub
Private Sub btnCC_Click()
Call ZeichenEingeben(ChrW(268)) ' C
End Sub
Private Sub btn_cc_Click()
Call ZeichenEingeben(ChrW(269)) ' c
End Sub
Private Sub btnS_Click()
Call ZeichenEingeben(ChrW(352)) ' Š
End Sub
Private Sub btn_s_Click()
Call ZeichenEingeben(ChrW(353)) ' š
End Sub
Private Sub btnC_Click()
Call ZeichenEingeben(ChrW(262)) ' C
End Sub
Private Sub btn_c_Click()
Call ZeichenEingeben(ChrW(263)) ' c
End Sub
Private Sub btnZ_Click()
Call ZeichenEingeben(ChrW(381)) ' Ž
End Sub
Private Sub btn_z_Click()
Call ZeichenEingeben(ChrW(382)) ' ž
End Sub
Hallo,
ich nehme jetzt mal an, daß deine "Dialogform" ein nicht-modales Popup-Formular ist, denn eigentlich sind Dialoge von Haus aus modal.
Zum Zweiten kann der Code so nicht richtig funktioniert haben, denn der Zugriff auf txtAntwort.Text bedingt, daß die Textbox bereits vorher den Fokus besitzt. Ich sehe jetzt keinen Code, der den Fokus vorher auf die Textbox setzt.
Die Funktion "IsFormLoaded()" ist übrigens komplett überflüssig und kann durch folgende Codezeile ersetzt werden:
CurrentProject.AllForms("[i]Formularname[/i]").IsLoaded
Dann solltest du es vermeiden, direkt aus dem Popup-Formular mit "ZeichenEingeben()" in das Steuerelements eines anderen Formulars zu schreiben. Zeicheneingeben() sollte eine Public Funktion im Formular frmVokabelTrainer sein, welche dann aus dem Popup-Formular aufgerufen wird. Eine Referenz auf frmVokabelTrainer kann beim Öffnen des Popup-Formulars einmal Zugewiesen werden.
Gruß Knobbi38
Danke für dein Feedback
Zitatich nehme jetzt mal an, daß deine "Dialogform" ein nicht-modales Popup-Formular ist, denn eigentlich sind Dialoge von Haus aus modal.
Ich vermute ja bin aber nicht sicher da ich keine Modal Eigenschaft beim Formular gefunden habe
ZitatZum Zweiten kann der Code so nicht richtig funktioniert haben, denn der Zugriff auf txtAntwort.Text bedingt, daß die Textbox bereits vorher den Fokus besitzt. Ich sehe jetzt keinen Code, der den Fokus vorher auf die Textbox setzt.
Ich hatte probiert einfach am Ende der ZeichenEingeben ein SetFocus gesetzt aber hat nicht funktioniert
ZitatDie Funktion "IsFormLoaded()" ist übrigens komplett überflüssig und kann durch folgende Codezeile ersetzt werden:
Code[Auswählen]
CurrentProject.AllForms("Formularname").IsLoaded
Dann solltest du es vermeiden, direkt aus dem Popup-Formular mit "ZeichenEingeben()" in das Steuerelements eines anderen Formulars zu schreiben. Zeicheneingeben() sollte eine Public Funktion im Formular frmVokabelTrainer sein, welche dann aus dem Popup-Formular aufgerufen wird. Eine Referenz auf frmVokabelTrainer kann beim Öffnen des Popup-Formulars einmal Zugewiesen werden.
Einfach toll ich habe in der frmVokabelTrainer die Public Function eingefügt und was neues gelernt danke dir
Es bleibt nur die Frage mit der SetFocus wenn jemand eine Idee hat?
Hallo faby,
Zitat... am Ende der ZeichenEingeben ein SetFocus gesetzt ...
am Ende dürfte das wenig helfen. Ich hatte geschrieben, daß
vorher der Fokus auf die Textbox gesetzt werden muß, also wäre am Anfang sicherlich hilfreicher.
Gruß
Knobbi38