| 发表于:2007-09-03 16:37:31 楼主 |
2007-09-03 16:30 比如能够在某一列中实现上面的日期输入格式 我知道在delphi中直接指定mask属性就可以了 在edit控件中也只要按照下面的方法也可以实现, 现在就难在想在gridctrl控件的某一列中实现该功能 主要是用户在输入日期的时候,能够方便一点,请各路高手帮忙,困扰了很久了 void cmyedit::onchar(uint nchar, uint nrepcnt, uint nflags) { // todo: add your message handler code here and/or call int oldpos=loword(getsel()); cstring str; getwindowtext(str); if ( nchar> = '0 ' && nchar <= '9 ' ) { if ( oldpos <4 ¦ ¦ ( oldpos> 4 && oldpos <7) ¦ ¦ (oldpos> 7 && oldpos <0xa) ¦ ¦ (oldpos> 0xa && oldpos <0xd ) ¦ ¦ oldpos> 0xd) { str.delete(oldpos,1); setwindowtext(str); setsel(formatpos(oldpos,oldpos)); cedit::onchar(nchar, nrepcnt, nflags); if ( loword(getsel())==4 ¦ ¦ loword(getsel())==7 ¦ ¦loword(getsel())==0xa ¦ ¦loword(getsel())==0xd) { oldpos=loword(getsel()); setsel(formatpos(oldpos+1,oldpos+1)); } } else if ( oldpos==4 ¦ ¦ oldpos==7 ¦ ¦ oldpos==0xa ¦ ¦ oldpos==0xd ) { oldpos+=1; setsel(formatpos(oldpos,oldpos)); str.delete(oldpos,1); setwindowtext(str); setsel(formatpos(oldpos,oldpos)); cedit::onchar(nchar, nrepcnt, nflags); } } else if ( nchar==vk_back ) { if ( (oldpos> 0 && oldpos <5) ¦ ¦ ( oldpos> 5 && oldpos <8) ¦ ¦ oldpos> 8) { str.insert(oldpos, ' '); setwindowtext(str); setsel(formatpos(oldpos,oldpos)); cedit::onchar(nchar, nrepcnt, nflags); } else if ( oldpos==5 ¦ ¦ oldpos==8 ) { setsel(formatpos(oldpos-1,oldpos-1)); } } } |
|
|
|
|