矢印、enterキーでのtext間移動?

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
でぶすけ
記事: 6
登録日時: 2006年10月07日(土) 20:55
お住まい: 蝦夷

矢印、enterキーでのtext間移動?

#1 投稿記事 by でぶすけ »

どもども、初心者です。早速ですが矢印・enterキーにて画面上のtext・edit等の欄を移動する方法を教えてください。
例えば、text欄①入力後enterキーにて次の入力欄②に移動し、上または左矢印キーにて①に戻る。
     
hira
記事: 203
登録日時: 2005年5月31日(火) 20:14
お住まい: 兵庫県
連絡する:

#2 投稿記事 by hira »

RADツールでウィンドウにエディットボックスを2個(EditBox1・EditBox2)配置し、

コード: 全て選択

' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
の下に

コード: 全て選択

Dim lpOldWndProc[1] As VoidPtr
を記述。

MainWnd_Createイベントを下のように変更。

コード: 全て選択

Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
	lpOldWndProc[0]=SetWindowLong(GetDlgItem(hMainWnd,EditBox1),GWL_WNDPROC,AddressOf(MainWndProc) As LONG_PTR) As VoidPtr
	lpOldWndProc[1]=SetWindowLong(GetDlgItem(hMainWnd,EditBox2),GWL_WNDPROC,AddressOf(MainWndProc) As LONG_PTR) As VoidPtr
End Sub
MainWnd_Destroyイベントを下のように変更。

コード: 全て選択

Sub MainWnd_Destroy()
	SetWindowLong(GetDlgItem(hMainWnd,EditBox1),GWL_WNDPROC,lpOldWndProc[0] As LONG_PTR)
	SetWindowLong(GetDlgItem(hMainWnd,EditBox2),GWL_WNDPROC,lpOldWndProc[1] As LONG_PTR)
	xxx_DestroyObjects() 'xxxにはプロジェクト名が入る
	PostQuitMessage(0)
End Sub
そしてMainWndProcを下のように変更。

コード: 全て選択

Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
	' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
	Select Case hWnd
		Case GetDlgItem(hMainWnd,EditBox1)
			If dwMsg=WM_KEYDOWN And wParam=VK_RETURN Then
				SetFocus(GetDlgItem(hMainWnd,EditBox2))
			End If
			MainWndProc=CallWindowProc(lpOldWndProc[0],hWnd,dwMsg,wParam,lParam)
		Case GetDlgItem(hMainWnd,EditBox2)
			If dwMsg=WM_KEYDOWN And (wParam=VK_LEFT Or wParam=VK_UP) Then
				SetFocus(GetDlgItem(hMainWnd,EditBox1))
			End If
			MainWndProc=CallWindowProc(lpOldWndProc[1],hWnd,dwMsg,wParam,lParam)
		Case Else
			' イベントプロシージャの呼び出しを行います。
			MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
	End Select
End Function
何でこれでうまく動くのかは考えてみて下さい(コールバック関数なので難しいかもしれませんが)。
でぶすけ
記事: 6
登録日時: 2006年10月07日(土) 20:55
お住まい: 蝦夷

#3 投稿記事 by でぶすけ »

ありがとうございます。早速実践してみます。
でぶすけ
記事: 6
登録日時: 2006年10月07日(土) 20:55
お住まい: 蝦夷

#4 投稿記事 by でぶすけ »

test完了!edit box を3個にしてみましたが完璧に動きました。
ありがとうございました。
これからも質問させていただきます。
返信する