首先,不管怎麼樣,控制項是要往視窗上拖的,所以你得準備乙個對話方塊。
然後,把date time picker拖放到對話方塊上。
接下來設定它的屬性,右鍵單擊該控制項,彈出屬性對話方塊。
在general屬性頁中,給它取個名字,其它預設就可以了。
在styles屬性頁中,format下拉框中,選擇long date。至於為什麼要選這個,根據個人需要了,它的格式是:****年**月**日;而short date的格式如:2007-6-7。
right align是預設的對齊屬性,我們不管它。
另外鉤上show none和use spin control屬性。show none屬性,用於將日期值設為空的操作,也就是我們以後從空間得到的是空值。use spin control屬性,就是給你提供乙個調整時間的按鈕,乙個上(增加),乙個下(減少)。
至於allow edit,我的看法是有了之前的設定,這個可以不要。因為它可以編輯整行,這不是我所需要的,最好只允許使用者對數字操作。
接下來,我們需要給該控制項繫結乙個變數,如m_leveldate,注意,該變數的種類(category)選(control),變數型別選cdatetimectrl。
假如sql資料庫裡有乙個datetime型別的字段,我們要把它顯示到控制項上。
首先,把該字段讀出來,儲存在cstring strdate變數中。
接下來的問題就是如何將這個字串顯示到 date time picker中了?我們可以用乙個函式來解決這個問題。設為這個函式void setleveldate(cstring strdatetime),現在標頭檔案中宣告,再在cpp檔案中實現。函式體如下:
cstring year,month,day;
year=strdatetime.left(4);
strdatetime=strdatetime.right(strdatetime.getlength()-strdatetime.find("-")-1);
month=strdatetime.left (strdatetime.find ("-"));
day=strdatetime.right(strdatetime.getlength()-strdatetime.find("-")-1);
int y=atoi(year); //將字串轉換為整形
int m=atoi(month);
int d=atoi(day);
ctime time(y,m,d,0,0,0);
m_leveldate.settime(&time);
這裡需要注意的是,sql資料庫裡的datetime型別的格式如:1900-01-01 00:00:000,而我們只要年月日,所以得分別提取出來。
另外,mfc中對時間的處理,我們需要用到幾個類,如:ctime和coledatetime,具體怎麼用可以到msdn中查。
顯示實現了,那如何將date time picker中的日期讀到字串中呢?我們同樣利用乙個函式:cstring getleveldate(int nid),注意這個函式是有引數,並有返回值的。引數的作用是,傳遞該控制項的id,也就是命名,如上面圖中的idc_19_leveldate。函式體實現如下:
cdatetimectrl * pwndtemp = (cdatetimectrl*)getdlgitem(nid);
ctime temptime;
pwndtemp->gettime(temptime);
cstring strtemp1 = temptime.format("%y-%m-%d");
return strtemp1;
同樣,函式返回值的格式如:2007-6-7,這樣可以方便的插入資料庫中。
那麼如何使得該控制項傳遞空值呢?我們用這樣乙個函式void setleveldatenull(),函式實現如下:
coledatetime letimetime = coledatetime::getcurrenttime();
m_leveldate.settime(oletimetime); //設定為當前時間
oletimetime.setstatus(coledatetime::null);//核取方塊不打勾
m_leveldate.settime(oletimetime); //使核取方塊不打勾生效
使用該函式,可以使核取方塊不打鉤,後面的日期為灰色不可更改的。這時,如果我們用getleveldate(int nid)的話,將返回乙個空字串。
那麼如何檢測控制項是否為空呢?可以用這個函式int checkleveldatenull(),該函式用來得到控制項的狀態,返回列舉型別的值,valid = 0
,invalid = 1
,null=2。當然我們也可以把函式的返回值型別設為整形。函式實現如下:
coledatetime oletimetime;
m_leveldate.gettime(oletimetime);
coledatetime::datetimestatus status = oletimetime.getstatus();
return status;
以上是我對date time picker控制項的一些總結,還有很多不完善之處,希望與大家共勉。
Date Time Picker控制項使用
1.供使用者選擇日期和時間 將控制項format屬性設定為time,為其新增乙個cdatetimectrl型別變數,然後通過如下 設定日期和時間的顯示格式。timepicker.setformat t yyyy mm dd hh mm ss 2013 02 25 16 32 20 hh表示24小時制...
datetimepicker時間控制項
庫檔案 密碼 c9m5 官網 簡單例項兩個,和這裡有關係,是動態拿取本地時間的呢。看這裡 time時間外掛程式 datetimepicker datetimepicker val begintime dateend datetimepicker val endtime 補充 只顯示到時分秒 效果圖 ...
datetimepicker用法總結
最近因為專案,在用bootsrapt寫一些前台,遇到datetimepicker時,在使用方面出現了一些問題,索性記錄下來,能用到看看,用不到留著自己參考。附上官方文件鏈結,需要的人們傳送門。官方文件大部分都是中文,已經不錯了,但是還是在很多問題上沒有給出例子。博主,把一些常用的在後文附上,有錯誤請...