使VB的網(wǎng)格控件具有輸入功能發(fā)布時(shí)間:2008-04-03 10:45:14 來源:編程愛好者網(wǎng)站 作者:編程愛好者網(wǎng)站 點(diǎn)擊:442河北 王翠榮 王全海
我們?cè)谑褂肰isual Basic for Windows開發(fā)時(shí),經(jīng)常用到網(wǎng)格控件(Grid.vbx),因?yàn)榇丝丶梢杂脕碜黝愃朴陔娮颖砀裥问降妮敵霰?,且編程?jiǎn)單,但在此網(wǎng)格控件只有輸出功能,而不能直接在網(wǎng)格上輸入,這給使用者帶來一些不便。如何在執(zhí)行時(shí)向網(wǎng)絡(luò)控件中輸入數(shù)據(jù),人們使用了一些方法,但大都使用一文本控件作中間轉(zhuǎn)換,即將欲輸入的信息先輸入到該文本控件,然后將文本控件的TEXT屬性賦給網(wǎng)格的TEXT屬性,這種方法盡管解決了向網(wǎng)格輸入數(shù)據(jù)問題,但增加了一文本框,對(duì)界面有些不美觀,修改部分?jǐn)?shù)字不方便,且影響速度,那么,如何直接向網(wǎng)格輸入數(shù)據(jù)呢? 本文將解決直接向網(wǎng)格輸入數(shù)據(jù)問題,基本思想是:使用網(wǎng)格控件KeyPress事件,從鍵盤上接收所擊鍵位的KeyAscii值,再由Chr$()或Chr()函數(shù)轉(zhuǎn)換成字符,然后讀出網(wǎng)格單元的當(dāng)前Text值與由鍵盤接收到的字符相加,組成新的字符串,再賦給該單元的Text屬性,即Grid.Text=Grid.Text+Chr$(KeyAscii)。程序清單如下: 程序中定義了兩個(gè)Form級(jí)變量WgridCol%和WgridRow%。 Sub Grid-KeyPress(KeyAscii as Integer) Grid.Col=WgridCol% Grid.Row=WgridRow% if KeyAscii=8Then `keyascii=8為退格刪除鍵 if Grid.Text<>””Then Grid.text=Mid$(Grid.text, 1,Len(Grid.text)-1)‘刪除最后一個(gè)字符 Else Grid.text=Grid.text+Chr$(KeyAscii) End if End Sub Sub Grid-RowColChange() Wgrid.Col%=Grid.Col Wgrid.Row%=Grid.Row End Sub 這樣就可以實(shí)現(xiàn)對(duì)網(wǎng)格的任意輸入,可以輸入字符、數(shù)字等等。由于數(shù)字0到Array的Ascii值為48到57,小數(shù)點(diǎn)Ascii的值為46,所以可以輸入任意實(shí)數(shù)。若您想防止用戶輸入除數(shù)字、小數(shù)點(diǎn)以外的任何其他字符,可對(duì)來自于鍵盤的Ascii值進(jìn)行判斷,有條件地接收,就實(shí)現(xiàn)了僅輸入數(shù)值字符。同理也可以限制只輸入字母字符。 根據(jù)這種思想,也可以對(duì)VB中一切不具有輸入功能,但具有KeyAscii或者KeyDown事件的控件進(jìn)行直接輸入,如標(biāo)簽Label等。 |
|