ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2024年4月28日(日) 00:06

全ての表示時間は UTC+09:00 です




返信する
ユーザー名:
件名:
メッセージ本文:
メッセージを入力してください。60000 字まで入力できます。 

フォントサイズ:
フォントカラー
オプション:
BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF
BBCode を無効にする
URL を自動的にパースしない
クイズ
お手数ですがカタカナで「エービー」と4文字を入力してください。:
答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。
   

トピックのレビュー - Date and Time Picker の使い方
作成者 メッセージ
  記事の件名:  ありがとうございました。  引用付きで返信する
お二方にお教えくださった方法、両方とも数値をGetできました。
ご親切にありがとうございました。^^
投稿記事 Posted: 2008年10月29日(水) 20:38
  記事の件名:  Re:  引用付きで返信する
こんばんは、目的の内容かどうかはわかりませんが...

コントロールがメインウィンドウにあるというのを前提に説明します。
ざっとかいてみましたが参考にしてください。(AB4.24で実施)

※そちらの「hDate1」に対するコードのみを提示いたしました。
  日付を選択したとたんにEditBoxへ結果を表示します。

1.EditBox(EditBox1)をメインウィンドウに1個配置してください。(テスト用)

2.グローバル領域に以下の構造体などを定義します。
コード:

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

Type NMDATETIMECHANGE
    nmhdr As NMHDR 
    dwFlags As DWORD       
    st As SYSTEMTIME       
End Type

Const DTN_FIRST = (-760)
Const DTN_DATETIMECHANGE = (DTN_FIRST + 1)

Dim DTPInfo As NMDATETIMECHANGE

2.「MainWndProc」に以下のコードを書き込みます。
コード:
Function MainWndProc(hWnd As HWND, dwMsg As DWord, wParam As WPARAM, lParam As LPARAM) As DWord
	' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。

	Select Case dwMsg

		Case WM_NOTIFY

		'送られてきたlParamの内容を「DTPInfo」へコピーする
		memcpy(VarPtr(DTPInfo),lParam,Len(DTPInfo))

		'日付時刻の変更通知ならば...
		If DTPInfo.nmhdr.code = DTN_DATETIMECHANGE Then
			
			'送信元が「hDate1」ならば...
			If DTPInfo.nmhdr.hwndFrom = hDate1 Then

				Dim temp[100] As Byte
				wsprintf(temp, "選択された日付:%04d/%02d/%02d" ,DTPInfo.st.wYear, DTPInfo.st.wMonth , DTPInfo.st.wDay)

				'メインウィンドウのEditBox1へ結果を表示する
				SetDlgItemText(hMainWnd,EditBox1,temp)

			End If

		End If

		Exit Function

	End Select

		' イベントプロシージャの呼び出しを行います。
		MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)

End Function

日付・時刻の数値データ(年・日・分・秒など)は「DTPInfo.st」の中にさらに格納されてます。これはSYSTEMTIME構造体なので、SYSTEMTIME構造体関連の情報で確認してください。
投稿記事 Posted: 2008年10月29日(水) 01:41
  記事の件名:   引用付きで返信する
数値をゲットって言うと・・・
コード:
Declare Function strtok CDECL Lib "crtdll" (s1 As *Byte,s2 As *Byte) As *Byte

Sub MainWnd_CommandButton1_Click()
	Dim buf[255] As Byte,k As *Byte
	k=buf
	GetWindowText(hTime1,k,255)
	strtok(k,":"):SetWindowText(GetDlgItem(hMainWnd,Static1),k):k=k+lstrlen(k)+1
	strtok(k,":"):SetWindowText(GetDlgItem(hMainWnd,Static2),k):k=k+lstrlen(k)+1
	SetWindowText(GetDlgItem(hMainWnd,Static3),k)
End Sub
こんな具合ですか?
投稿記事 Posted: 2008年10月29日(水) 00:14
  記事の件名:  Date and Time Picker の使い方  引用付きで返信する
こんにちは。初心者rikaeigo2です。
とあるサイトのSampleを見てDate and Time Pickerで日付と時刻を入力するウインドウを作成しました。丸写しです。

Function CreateDTP(hWnd As DWord, lpStyle As DWord,px As Long, py As Long, width As Long, hight As Long) As Long
CreateDTP = CreateWindowEx(0, "SysDateTimePick32", NULL, _
WS_VISIBLE or WS_BORDER or WS_CHILD or WS_TABSTOP or _
WS_CLIPCHILDREN or WS_CLIPSIBLINGS or lpStyle, _
px, py, width, hight, hWnd, 0, GetModuleHandle(NULL), 0)
End Function
ーーー中略ーーー
'日付用(DTS_LONGDATEFORMAT)
hDate1 = CreateDTP(hMainWnd, DTS_LONGDATEFORMAT, 25, 25, 200, 25)
hDate2 = CreateDTP(hMainWnd, DTS_LONGDATEFORMAT, 25, 75, 200, 25)
'時間用(DTS_TIMEFORMAT)
hTime1 = CreateDTP(hMainWnd, DTS_TIMEFORMAT, 25, 125, 200, 25)

と、ここまでは良いのですが、時刻の数値をゲットする方法は書いてありませんでした。「詳細はMSDNのリファレンスを参照」と書いてありましたが、MSDNのサイトのどこにそれがあるかもわかりませんでした。;;
どなたか教えてください。
投稿記事 Posted: 2008年10月28日(火) 20:54

全ての表示時間は UTC+09:00 です


ページ移動:  
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by ocean