EnterキーによるEdit間フォーカス移動(U) <TOP>
複数のエディットボックス間を「Enter」キーでフォーカス移動させます。
Enter(CrLf)を検知し、次のEditBoxにフォーカスを当てています。
条件
EditBoxは、全て複数行入力 → あり
垂直オートスクロール → あり
文字数制限は、必要文字数+2(CrLfの2文字分)とする。
'================================================================ '= EnterKeyによるEditBox間移動 '= Edit1、Edit2、Edit3は '= 複数行入力(あり)、垂直オートスクロール(あり) '================================================================ #include "Windows.bi" Var Shared Edit(2) As Object For i% = 0 To 2 Edit(i%).Attach GetDlgItem("Edit" & Trim$(Str$(i% + 1))) Edit(i%).SetFontSize 14 Next #define CrLf Chr$(13, 10) Var Shared Str(2) As String Var Shared EPos As Integer '================================================================ Declare Sub MainForm_Start edecl () Sub mainForm_Start() Edit(0).SetFocus End Sub '================================================================ Declare Sub Edit1_Change edecl () Sub Edit1_Change() Str(0) = Edit(0).GetWindowText EPos = InStr(Str(0), CrLf) If EPos <> 0 Then Str(0) = Mid$(Str(0), 1, EPos - 1) & Mid$(Str(0), EPos + 2) Edit(0).SetWindowText Str(0) Edit(1).SetFocus End If End Sub '================================================================ Declare Sub Edit2_Change edecl () Sub Edit2_Change() Str(1) = Edit(1).GetWindowText EPos = InStr(Str(1), CrLf) If EPos <> 0 Then Str(1) = Mid$(Str(1), 1, EPos - 1) & Mid$(Str(1), EPos + 2) Edit(1).SetWindowText Str(1) Edit(2).SetFocus End If End Sub '================================================================ Declare Sub Edit3_Change edecl () Sub Edit3_Change() Str(2) = Edit(2).GetWindowText EPos = InStr(Str(2), CrLf) If EPos <> 0 Then Str(2) = Mid$(Str(2), 1, EPos - 1) & Mid$(Str(2), EPos + 2) Edit(2).SetWindowText Str(2) Edit(0).SetFocus End If End Sub '================================================================ While 1 WaitEvent Wend Stop End