麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Delphi > 正文

DELPHI中DBGrid中行的定位及著色實現

2019-11-18 18:25:16
字體:
來源:轉載
供稿:網友
  DELPHIDBGrid中行的定位及著色實現

1 問題的提出

    在對一個數據庫系統進行操作的時候,發現不能對DBGrid控件中的數據行定位及在定位到某行后無法對當前行進行明顯的標志(例如改變顏色),在往上查找了很多資料,發現基本沒有對這個內容的介紹,包括一些動態設頂行的顏色等文章講的都是在數據初始化時做的操作,而沒有在數據源刷新后的重新定位功能,所以下決心解決這個問題,通過一上午對DELPHI幫助的研究和查看相關的資料,稍有小成,現寫出來和各位同行共同學習,不當之處請多指教。

2 解決的辦法

首先查找TtableTquery控件沒有發現能夠直接定位數據行的方法,同樣查找DBGrid也沒有找到相應的能夠直接定位到某行數據的函數,然后我就從數據集的類上查找,經過不斷努力,終于在TdataSet中發現了一個方法:GoToBookmark,這個方法能夠使當前的DBGrid中的記錄指針指向你需要指定的行。

在找到這個方法后,問題還只解決了一半,還必須把當前指針指向的數據行改變顏色,就是說必須用一個明顯的方式去標志當前選中的行(出了在DBGrid上的那個小的不明顯的書簽外)這個很顯然就是在DBGrid控件中實現了,在DBGrid控件中有一個事件OnDrawDataCell,重載這個方法就可以實現指定的數據行的顏色的改變了。

具體的使用過程如下:

(1)    動態定位數據行

//===============================================================

//過程名:  DyDbgDataLine

//作者:    haitian

//日期:    2003-02-22

//功能:    根據用戶指定的條件自動移動到DBGrid控件中符合此條件的某行數據上

//輸入參數:

//          sValue:當前需要移動到的行的值;

//          tab:當前DBGrid中對應的表的數據;

//          dsr:當前需要操作的數據源;

//返回值: 

//修改記錄:

//================================================================

PRocedure DyDbgDataLine(sValue:string;tab:Ttable;dsr:TDatasource)

var

   bookmark:TBookMark;

begin

   //記錄當前標記的行;

  bookmark:=self. tab.GetBookmark;

  self. tab.first;

  while not self. tab.Eof do

  begin

  if self. tab.FieldByName('cpbh').AsString= sValue then

  begin

  bookmark:=self. tab.GetBookmark;

  break;

  end;

  self. tab.Next;

  end;

  self. dsr.DataSet.GotoBookmark(pointer(bookmark));

End;

說明:使用的表已經和當前顯示界面上的DBGrid綁定;

 

(2)    改變顏色標記當前數據行

首先把DBGridDefaultDrawing屬性設為false;然后在OnDrawDataCell事件函數中調用下面的函數:

      //===============================================================

//過程名:  DrawLine

//作者:    haitian

//日期:    2003-02-22

//功能:    Dbgrid中的指定的行改變顏色作為標記;

//輸入參數:

//          zdm:字段名;

//          Rect:需要出入的行的某個單元;

//          Field:當前顯示的域;

//          state:當前行的顯示狀態;

//          zdz:當前需要移動到的行的值;

//          tab:當前DBGrid中對應的表的數據;

//          dbg:當前需要操作的DBGrid

//返回值: 

//修改記錄:

//================================================================

 procedurDrawLine(tab:Ttable;const Rect:Trect;Field:Tfield;state:TgridDrawState;dbg:TDBGrid)

 begin

 if (tab.fieldbyname(zdm).asstring=zdz)then

begin

dbg.canvas.font.color:=clred;

dbg.canvas.brush.color:=clyellow;

end;

 dbg.DefaultDrawDataCell(Rect,Field,State);

 end;


上一篇:DELPHI8操作符重載的例子

下一篇:DELPHI中回調函數的使用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 亚洲3p激情在线观看 | 男女做性免费网站 | 国产欧美一区二区三区免费看 | 男女隐私免费视频 | 国产1区在线观看 | 成人免费毛片一 | 黄色网址免费在线 | 黄色网络免费看 | 萌白酱福利视频在线网站 | 黄色片免费看看 | 色交视频 | 国产成人精品二区 | 一级免费黄色 | 99综合视频 | 午夜视频色 | 天天草天天干天天射 | 欧美精品一二三区 | 精国产品一区二区三区四季综 | 美女喷水网站 | 成年人在线视频 | 禁漫天堂久久久久久久久久 | 久久国产免费 | 成人福利网 | 欧产日产国产精品99 | 国产午夜免费不卡精品理论片 | 久久精品视频国产 | 国产视频在线免费观看 | 一级电影在线观看 | 性欧美xxxx极品摘花 | 黄色试看视频 | 日产精品久久久一区二区福利 | 日韩欧美电影一区二区三区 | 成人在线视频黄色 | 久久国产免费 | 国产免费高清在线 | 久久精品欧美电影 | 一区二区三区手机在线观看 | 91精品久久久久久久久网影视 | 一区二区三高清 | 懂色粉嫩av久婷啪 | 国产a级网站 |