国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在數(shù)據(jù)約束網(wǎng)絡(luò)中控制操作表格的實(shí)現(xiàn)方法

      文檔序號(hào):6651175閱讀:280來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):在數(shù)據(jù)約束網(wǎng)絡(luò)中控制操作表格的實(shí)現(xiàn)方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)約束網(wǎng)格中的表項(xiàng)編輯控制技術(shù)。
      背景技術(shù)
      DBGrid(數(shù)據(jù)約束網(wǎng)格)是Microsoft Visual Basic中內(nèi)置的表格編輯控件,用于與數(shù)據(jù)訪問(wèn)控件綁定以實(shí)現(xiàn)快速訪問(wèn)數(shù)據(jù)庫(kù)內(nèi)容。
      DBGrid在實(shí)際應(yīng)用中,有時(shí)會(huì)需要同時(shí)選定DBGrid中的多行記錄,并對(duì)選中的多行記錄進(jìn)行相同的操作,例如,同時(shí)修改所有被選中記錄的某一字段的內(nèi)容等。
      目前,DBGrid本身只支持有限的多行選定方法,即按住鍵盤(pán)中的Ctrl鍵的同時(shí)用鼠標(biāo)左鍵單擊DBGrid的記錄選擇器,記錄選擇器所在的記錄就變?yōu)檫x中狀態(tài),而原來(lái)已經(jīng)處于選中狀態(tài)的其他記錄也不會(huì)變成未選中狀態(tài)。重復(fù)這個(gè)操作,可以完成選定多行記錄的目的。利用該方法,如果要選定10行記錄的話,需要單擊鼠標(biāo)10次。
      因此,可以看出現(xiàn)有的DBGrid提供的控制操作選擇多項(xiàng)表格時(shí),相應(yīng)的操作過(guò)程較為繁瑣,使用起來(lái)很不方便。

      發(fā)明內(nèi)容
      本發(fā)明的目的是提供一種在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,從而可以實(shí)現(xiàn)僅通過(guò)兩次鼠標(biāo)單擊便可以同時(shí)選中多行表格記錄,有效簡(jiǎn)化了表格控制操作過(guò)程。
      本發(fā)明的目的是這樣實(shí)現(xiàn)的本發(fā)明提供了一種數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,包括A、在操作選擇表格行過(guò)程中,實(shí)時(shí)檢測(cè)Shift鍵輸入信號(hào)及鼠標(biāo)操作鍵輸入信號(hào);B、當(dāng)獲得所述的兩輸入信號(hào)時(shí),則記錄表格的當(dāng)前行;C、根據(jù)鼠標(biāo)輸入信號(hào)計(jì)算鼠標(biāo)點(diǎn)擊的表格行,并將記錄的表格當(dāng)前行與鼠標(biāo)點(diǎn)擊的表格行之間的所有表格行輸入到數(shù)據(jù)約束網(wǎng)格中的表格選擇標(biāo)記集合中。
      所述的步驟B還包括在保存數(shù)據(jù)約束網(wǎng)格當(dāng)前行之后,刪除所有當(dāng)前其他處于已經(jīng)選中狀態(tài)的各行。
      所述的步驟B包括B1、當(dāng)同時(shí)檢測(cè)到Shift鍵輸入信號(hào)和鼠標(biāo)左操作鍵輸入信號(hào),則計(jì)算并記錄表格的當(dāng)前行的位置號(hào)作為需要選中的連續(xù)的若干行中的第一行的位置號(hào)。
      所述的步驟B1還包括判斷鼠標(biāo)左鍵輸入信號(hào)是否位于數(shù)據(jù)約束網(wǎng)格的記錄選擇器所在的列,如果是,則保存當(dāng)前行的位置號(hào)作為第一行的位置號(hào),否則退出處理。
      所述的步驟B1還包括調(diào)用數(shù)據(jù)約束網(wǎng)格的列計(jì)算函數(shù)傳遞鼠標(biāo)按鍵抬起事件的橫座標(biāo)變量作為參數(shù),當(dāng)列計(jì)算函數(shù)返回值為0時(shí),則確定鼠標(biāo)點(diǎn)擊點(diǎn)所在的列是數(shù)據(jù)約束網(wǎng)格記錄選擇器所在的列。
      所述的步驟C包括C1、根據(jù)鼠標(biāo)輸入信號(hào)計(jì)算鼠標(biāo)點(diǎn)擊的表格行,計(jì)算并記錄鼠標(biāo)點(diǎn)擊的表格行對(duì)應(yīng)的位置號(hào)作為需要選中的連續(xù)的若干行中的末尾行的位置號(hào);C2、將保存的第一行的位置號(hào)與保存的末尾行的位置號(hào)之間的所有表格行輸入到數(shù)據(jù)約束網(wǎng)格中的表格選擇標(biāo)記集合中。
      所述的步驟C2包括根據(jù)保存的第一行的位置號(hào)與保存的末尾行的位置號(hào)的大小確定兩位置號(hào)之間的所有表格行。
      所述的步驟C2包括采用循環(huán)方式將所述的第一行的位置號(hào)和末尾行的位置號(hào)之間的所有行添加數(shù)據(jù)約束網(wǎng)格中的表格選擇標(biāo)記集合中,且當(dāng)所述的第一行的位置號(hào)小于或等于所述末尾行的位置號(hào)時(shí),相應(yīng)的循環(huán)變量為遞增循環(huán);當(dāng)所述的第一行的位置號(hào)大于所述末尾行的位置號(hào)時(shí),相應(yīng)的循環(huán)變量為遞減循環(huán)。
      所述的位置號(hào)是通過(guò)保存的數(shù)據(jù)Data控件的記錄集Recordset的絕對(duì)位置AbsolutePosition屬性值確定確定。
      所述的方法還包括在執(zhí)行完成所述的步驟C后,根據(jù)保存的當(dāng)前行信息恢復(fù)當(dāng)前行。
      由上述方案可以得知,本發(fā)明是通過(guò)對(duì)DBGrid控件的改進(jìn)編程,響應(yīng)用戶(hù)的操作來(lái)實(shí)現(xiàn)一次選定多行記錄。即當(dāng)用戶(hù)按下鍵盤(pán)Shift鍵的同時(shí)用鼠標(biāo)左鍵單擊DBGrid的記錄選擇器時(shí),程序檢測(cè)到Shift鍵被按下,則開(kāi)始計(jì)算鼠標(biāo)單擊點(diǎn)所屬的行,將該行到當(dāng)前行之間的所有行的Bookmark值加入到DBGrid的SelBookmarks(表格選擇標(biāo)記)集合中,即可實(shí)現(xiàn)選中多行。通過(guò)代碼對(duì)SelBookmarks集合中的行逐個(gè)修改內(nèi)容,即可實(shí)現(xiàn)一次修改多行的內(nèi)容。
      因此,通過(guò)本發(fā)明所描述的方法,用戶(hù)可以用最少的操作步驟實(shí)現(xiàn)對(duì)DBGrid表格中的多行記錄進(jìn)行操作,從而大大簡(jiǎn)化了操作,改善了用戶(hù)體驗(yàn),增加了DBGrid操作軟件的友好性和易用性。


      圖1為DBGrid的原始狀態(tài)示意圖;圖2為本發(fā)明所述的方法的具體實(shí)現(xiàn)過(guò)程示意圖;圖3為在DBGrid中選中10行的狀態(tài)示意圖。
      具體實(shí)施例方式
      本發(fā)明的核心是修改DBGrid操作控制實(shí)體(即DBGrid操作軟件)的具體處理過(guò)程,從而使得其可以通過(guò)少量的操作信號(hào)的輸入便可以完成同時(shí)選中多行表格記錄的操作。
      本發(fā)明提供一種DBGrid中一次選定中多行記錄的的方法,避免了原來(lái)選定多行需要多次鼠標(biāo)點(diǎn)擊的操作方法,提高了DBGrid操作的效率。
      為便于對(duì)本發(fā)明的理解,下面將結(jié)合附圖對(duì)本發(fā)明所述的方法做進(jìn)一步的詳細(xì)說(shuō)明。
      假設(shè)DBGrid的原始狀態(tài)如圖2所示,DBGrid已經(jīng)與Data(數(shù)據(jù))控件綁定并被填充上記錄。當(dāng)前記錄為第1行,當(dāng)用戶(hù)按下鍵盤(pán)的Shift鍵并用鼠標(biāo)左鍵單擊第10行的記錄選擇器時(shí),在DBGrid的MouseUp(鼠標(biāo)按鍵抬起)事件里便可以采用本發(fā)明所述的方法實(shí)現(xiàn),相應(yīng)的具體實(shí)現(xiàn)方式如圖2所示,具體包括以下處理過(guò)程步驟21判斷Shift鍵是否被按下,即監(jiān)測(cè)是否有Shift鍵操作信號(hào)輸入,如果沒(méi)有,則退出處理,否則繼續(xù)執(zhí)行步驟22。
      步驟22判斷是否有鼠標(biāo)左鍵操作輸入,如果沒(méi)有,則退出處理,如果有,則繼續(xù)執(zhí)行步驟23。
      步驟23判斷計(jì)算鼠標(biāo)單擊點(diǎn)所在的列是否在記錄選擇器所在的列,如果不在,則退出處理,否則,繼續(xù)執(zhí)行步驟24。
      鼠標(biāo)單擊點(diǎn)所在的列的計(jì)算方法是調(diào)用DBGrid的ColContaining(列計(jì)算)函數(shù),傳遞MouseUp事件的X(橫座標(biāo))變量作為參數(shù)。如果ColContaining返回值為0,則表明鼠標(biāo)單擊點(diǎn)所在的列是DBGrid記錄選擇器所在的列。
      步驟24保存DBGrid的當(dāng)前行;實(shí)際上是保存DBGrid的BookMark(標(biāo)記)值到一個(gè)Variant(不定)變量中。
      任何時(shí)候,DBGrid總有一行屬于當(dāng)前行,隨著用戶(hù)鼠標(biāo)對(duì)DBGrid單元格的點(diǎn)擊(具體是指Shift鍵未被按下的點(diǎn)擊,即用戶(hù)正常操作時(shí)的鼠標(biāo)點(diǎn)擊,而不是在有Shift鍵按下信號(hào)的點(diǎn)擊),當(dāng)前行會(huì)發(fā)生變化,鼠標(biāo)點(diǎn)擊的行會(huì)變成當(dāng)前行,但是如果用戶(hù)按下Shift鍵并且點(diǎn)擊DBGrid的記錄選擇器,則當(dāng)前行不會(huì)發(fā)生變化。
      步驟25清除所有當(dāng)前已經(jīng)被選中的行;也就是清除DBGrid的SelBookmarks集合。
      也就是說(shuō),用戶(hù)可能在已經(jīng)選定多行的情況下再一次執(zhí)行選定多行的操作,這時(shí)就需要先清除原來(lái)已經(jīng)被選定行,再進(jìn)行以下的操作;當(dāng)然,如果原來(lái)沒(méi)有選定多行,該清除操作也不會(huì)產(chǎn)生多余的問(wèn)題。
      步驟26計(jì)算并保存DBGrid當(dāng)前行在Data控件的記錄集中的位置號(hào),也就是保存Data控件的Recordset(記錄集)的AbsolutePosition(絕對(duì)位置)屬性值,即保存需要選中的多行中的第一行對(duì)應(yīng)的位置號(hào);由于DBGrid本身不能讀取數(shù)據(jù)庫(kù)表的內(nèi)容,而是通過(guò)Data控件來(lái)讀取數(shù)據(jù)表的內(nèi)容,再綁定到DBGrid中,DBGrid才能顯示數(shù)據(jù),因此,實(shí)際編程應(yīng)用中,DBGrid均需要與Data控件聯(lián)合使用;所述的Data控件的記錄集是Data控件讀取數(shù)據(jù)表的內(nèi)容后,在內(nèi)存中的具體保存方式,DBGrid中顯示的內(nèi)容即是記錄集中的內(nèi)容,二者是一一對(duì)應(yīng)的關(guān)系。
      步驟27計(jì)算確定鼠標(biāo)單擊點(diǎn)所在的行,之后,計(jì)算并保存該行在Data控件的記錄集中的位置號(hào);確定鼠標(biāo)單擊點(diǎn)所在的行通過(guò)調(diào)用DBGrid的RowContaining(行計(jì)算)函數(shù),并傳遞MouseUp事件的Y(縱座標(biāo))變量作為參數(shù)。
      計(jì)算該行在Data控件的Recordset中的位置號(hào)是這樣實(shí)現(xiàn)的把Data控件的Recordset的BookMark值置為鼠標(biāo)單擊點(diǎn)所在的行,再取Recordset的AbsolutePosition值,就是所需要的位置號(hào)。
      在完成步驟26的操作之后,還需要執(zhí)行步驟27以便于選擇需要選中的連續(xù)的多行中的末尾行。
      步驟28將步驟26和步驟27確定的兩位置號(hào)之間的所有行添加到DBGrid的SelBookmarks集合中,該集合用于保存所有被選中的行,凡是添加到這個(gè)集合中的行,在DBGrid的界面上都會(huì)被顯示成選中狀態(tài),具體如圖3所示。
      至此便完成了通過(guò)增加一次鼠標(biāo)點(diǎn)擊完成同時(shí)選中多行位置號(hào)連續(xù)的記錄,從而簡(jiǎn)化了相應(yīng)的DBGrid操作控制過(guò)程。
      執(zhí)行上述過(guò)程之后,還需要將DBGrid的當(dāng)前行恢復(fù)成步驟24保存的行,這是因?yàn)樵趫?zhí)行上述各步驟的過(guò)程中,會(huì)改變DBGrid的當(dāng)前行,因此,需要通過(guò)該步驟以恢復(fù)當(dāng)前行。
      另外,本發(fā)明在實(shí)際的實(shí)現(xiàn)過(guò)程中還要考慮到步驟26的位置號(hào)和步驟27的位置號(hào)的大小問(wèn)題,以便于正確處理執(zhí)行步驟28,具體的處理方式為在步驟28中是采用循環(huán)的方式將步驟26的位置號(hào)P1和步驟27的位置號(hào)P2之間的所有行添加到DBGrid的SelBookmarks集合中的,如果P1小于或等于P2,則循環(huán)變量是遞增的循環(huán);如果P1大于P2,則循環(huán)變量是遞減的循環(huán)。
      綜上所述,本發(fā)明中,只需要用戶(hù)在選中某一行記錄的基礎(chǔ)上再單擊一次鼠標(biāo)就可以選中DBGrid的多行記錄,從而使得相應(yīng)的操作過(guò)程大大簡(jiǎn)化。
      以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
      ,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
      權(quán)利要求
      1.一種數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,包括A、在操作選擇表格行過(guò)程中,實(shí)時(shí)檢測(cè)Shift鍵輸入信號(hào)及鼠標(biāo)操作鍵輸入信號(hào);B、當(dāng)獲得所述的兩輸入信號(hào)時(shí),則記錄表格的當(dāng)前行;C、根據(jù)鼠標(biāo)輸入信號(hào)計(jì)算鼠標(biāo)點(diǎn)擊的表格行,并將記錄的表格當(dāng)前行與鼠標(biāo)點(diǎn)擊的表格行之間的所有表格行輸入到數(shù)據(jù)約束網(wǎng)格中的表格選擇標(biāo)記集合中。
      2.根據(jù)權(quán)利要求1所述的在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,所述的步驟B還包括在保存數(shù)據(jù)約束網(wǎng)格當(dāng)前行之后,刪除所有當(dāng)前其他處于已經(jīng)選中狀態(tài)的各行。
      3.根據(jù)權(quán)利要求1所述的在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,所述的步驟B包括B1、當(dāng)同時(shí)檢測(cè)到Shift鍵輸入信號(hào)和鼠標(biāo)左操作鍵輸入信號(hào),則計(jì)算并記錄表格的當(dāng)前行的位置號(hào)作為需要選中的連續(xù)的若干行中的第一行的位置號(hào)。
      4.根據(jù)權(quán)利要求3所述的在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,所述的步驟B1還包括判斷鼠標(biāo)左鍵輸入信號(hào)是否位于數(shù)據(jù)約束網(wǎng)格的記錄選擇器所在的列,如果是,則保存當(dāng)前行的位置號(hào)作為第一行的位置號(hào),否則退出處理。
      5.根據(jù)權(quán)利要求4所述的在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,所述的步驟B1還包括調(diào)用數(shù)據(jù)約束網(wǎng)格的列計(jì)算函數(shù)傳遞鼠標(biāo)按鍵抬起事件的橫座標(biāo)變量作為參數(shù),當(dāng)列計(jì)算函數(shù)返回值為0時(shí),則確定鼠標(biāo)點(diǎn)擊點(diǎn)所在的列是數(shù)據(jù)約束網(wǎng)格記錄選擇器所在的列。
      6.根據(jù)權(quán)利要求3、4或5所述的在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,所述的步驟C包括C1、根據(jù)鼠標(biāo)輸入信號(hào)計(jì)算鼠標(biāo)點(diǎn)擊的表格行,計(jì)算并記錄鼠標(biāo)點(diǎn)擊的表格行對(duì)應(yīng)的位置號(hào)作為需要選中的連續(xù)的若干行中的末尾行的位置號(hào);C2、將保存的第一行的位置號(hào)與保存的末尾行的位置號(hào)之間的所有表格行輸入到數(shù)據(jù)約束網(wǎng)格中的表格選擇標(biāo)記集合中。
      7.根據(jù)權(quán)利要求6所述的在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,所述的步驟C2包括根據(jù)保存的第一行的位置號(hào)與保存的末尾行的位置號(hào)的大小確定兩位置號(hào)之間的所有表格行。
      8.根據(jù)權(quán)利要求7所述的在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,所述的步驟C2包括采用循環(huán)方式將所述的第一行的位置號(hào)和末尾行的位置號(hào)之間的所有行添加數(shù)據(jù)約束網(wǎng)格中的表格選擇標(biāo)記集合中,且當(dāng)所述的第一行的位置號(hào)小于或等于所述末尾行的位置號(hào)時(shí),相應(yīng)的循環(huán)變量為遞增循環(huán);當(dāng)所述的第一行的位置號(hào)大于所述末尾行的位置號(hào)時(shí),相應(yīng)的循環(huán)變量為遞減循環(huán)。
      9.根據(jù)權(quán)利要求6所述的在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,所述的位置號(hào)是通過(guò)保存的數(shù)據(jù)Data控件的記錄集Recordset的絕對(duì)位置AbsolutePosition屬性值確定確定。
      10.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的在數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法,其特征在于,所述的方法還包括在執(zhí)行完成所述的步驟C后,根據(jù)保存的當(dāng)前行信息恢復(fù)當(dāng)前行。
      全文摘要
      本發(fā)明涉及一種數(shù)據(jù)約束網(wǎng)格中控制操作表格的實(shí)現(xiàn)方法。本發(fā)明主要包括首先,在操作選擇表格行過(guò)程中,實(shí)時(shí)檢測(cè)Shift鍵輸入信號(hào)及鼠標(biāo)操作鍵輸入信號(hào),當(dāng)獲得所述的兩輸入信號(hào)時(shí),則首先記錄表格的當(dāng)前行;之后,計(jì)算鼠標(biāo)輸入信號(hào)對(duì)應(yīng)的表格行;最后將表格的當(dāng)前行與鼠標(biāo)輸入信號(hào)對(duì)應(yīng)的表格行之間的所有表格行輸入到數(shù)據(jù)約束網(wǎng)格中的表格選擇集合中。因此,本發(fā)明中,用戶(hù)可以采用最少的操作步驟實(shí)現(xiàn)對(duì)DBGrid表格中的多行記錄進(jìn)行操作,從而大大簡(jiǎn)化了操作,改善了用戶(hù)體驗(yàn),增加了DBGrid操作軟件的友好性和易用性。
      文檔編號(hào)G06F9/44GK1821955SQ200510127918
      公開(kāi)日2006年8月23日 申請(qǐng)日期2005年12月7日 優(yōu)先權(quán)日2005年12月7日
      發(fā)明者王青 申請(qǐng)人:北京佳訊飛鴻電氣有限責(zé)任公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1