Last Update : 2008/03/xx
HSPの標準命令には用意されていないオブジェクト(コントロール)を表示するサンプルコードを掲載しています。細かい解説は、ほとんど用意していませんです。その他のオブジェクトは、別ページになります。
⇒ タブコントロール、ツールチップ、リストビュー+カスタムドロー
⇒ トラックバー、アップダウンコントロール
⇒ アニメーションコントロール、プログレスバー
Windowsのシステムが用意している月間カレンダーコントロール(月間予定表コントロール)です。日付データはSYSTEMTIME構造体というのが使われます。
// 月間カレンダーコントロール サンプルソース1 (by Kpan) ; 月間カレンダーコントロールの設置 ; 追加のウィンドウスタイル ; $8=今日の日付を赤で囲わない ; $10=下部分の「今日」を非表示 winobj "sysmonthcal32", "", , $50000000 | $10, 300, 200 hMonthcal = objinfo(stat, 2) ; SYSTEMTIME構造体の領域確保 ; 年/月/曜日/日/時/分/秒/ミリ秒 が2バイトづつ dim SYSTEMTIME, 4 pos , 200 button "取得", *get button "設定", *set stop *get ; 明示的な指定日の取得 (MCM_GETCURSEL) sendmsg hMonthcal, $1001, , varptr(SYSTEMTIME) mes ""+wpeek(SYSTEMTIME, 0)+"年"+wpeek(SYSTEMTIME, 2)+"月"+wpeek(SYSTEMTIME, 6)+"日 stop *set ; SYSTEMTIME構造体に書き込み wpoke SYSTEMTIME, 0, 2010 //2010年Xmas wpoke SYSTEMTIME, 2, 12 wpoke SYSTEMTIME, 6, 25 ; 明示的な指定日の設定 (MCM_SETCURSEL) sendmsg hMonthcal, $1002, , varptr(SYSTEMTIME)
// 月間カレンダーコントロール サンプルソース2 (by Kpan) // コントロールの状態変化をリアルタイムで監視 ; WM_NOTIFYメッセージの指定 oncmd gosub *notify, $4E winobj "sysmonthcal32", "", , $50000000, 150, 150 hMonthcal = objinfo(stat, 2) stop ; WM_NOTIFYメッセージ *notify ; NMHDR構造体 (NMHDR.0には月間カレンダーコントロールのウィンドウハンドル) dupptr NMHDR, lparam, 12 ; 選択状態の変化を示す通知コード (MCN_SELCHANGE) if NMHDR.2 = -749 { ; NMSELCHANGE構造体 (中身はNMHDR構造体+SYSTEMTIME構造体) dupptr NMSELCHANGE, lparam, 20 mes ""+wpeek(NMSELCHANGE, 12 + 0) mes ""+wpeek(NMSELCHANGE, 12 + 2)+"/"+wpeek(NMSELCHANGE, 12 + 6) return } return
Windowsのシステムが用意している日時指定コントロール(DTPコントロール)です。DTPは「Date and Time Picker」のこと。時を刻む機能はなく日付or時間をユーザーに指定させるコントロールです。
// 日時指定コントロール サンプルソース1 (by Kpan) ; SYSTEMTIME構造体の領域確保 ; 年/月/曜日/日/時/分/秒/ミリ秒 が2バイトづつ dim SYSTEMTIME, 4 ; 短い日付 (カレンダー) winobj "sysdatetimepick32", "", , $50000000, 200 hDtp.0 = objinfo(stat, 2) ; 長い日付 (カレンダー) winobj "sysdatetimepick32", "", , $50000000 | $4, 200 hDtp.1 = objinfo(stat, 2) ; 時間 (アップダウン) winobj "sysdatetimepick32", "", , $50000000 | $9, 200 hDtp.2 = objinfo(stat, 2) button "げっと", *get stop *get repeat 3 ; 日時の取得 (DTM_GETSYSTEMTIME) sendmsg hDtp.cnt, $1001, , varptr(SYSTEMTIME) mes ""+wpeek(SYSTEMTIME, 2)+"月"+wpeek(SYSTEMTIME, 6)+"日 mes "("+wpeek(SYSTEMTIME, 8)+":"+wpeek(SYSTEMTIME, 10)+") loop
日時表記の自前のものに変更してみます。下の表は置き換え文字の書式一覧。
// 日時指定コントロール サンプルソース2 (by Kpan) winobj "sysdatetimepick32", "", , $50000000, 250 hDtp = objinfo(stat, 2) ; 表示書式設定 (DTM_SETFORMAT) sendmsg hDtp, $1005, , "MMMがつddにち (dddよーび) tthじmふん"
yy | 2桁の年 |
yyy | 4桁の年 |
M | 1桁or2桁の月 (1桁の場合は空白埋め) |
MM | 2桁の月 (1桁の場合は0埋め) |
MMM | 1桁or2桁の月 (中央表示) |
MMMM | 「1月〜12月」 |
d | 1桁or2桁の日 |
dd | 2桁の日 (1桁の場合は0埋め) |
ddd | 「日曜日〜土曜日」 |
dddd | 「日〜土」 |
tt | 「午前・午後」 |
h | 12時間表記で、1桁or2桁の時 |
hh | 12時間表記で、2桁の時 (1桁の場合は0埋め) |
H | 24時間表記で、1桁or2桁の時 |
HH | 24時間表記で、2桁の時 (1桁の場合は0埋め) |
m | 1桁or2桁の分 |
mm | 2桁の分 (1桁の場合は0埋め) |
<< オブジェクト 8 | HSP3 オブジェクト | オブジェクト 1 >>
Copyright © 2005-2012 Kpan. All rights reserved.