.設置OnClick事件
如果獲得焦點的單元格所對應的字段與下拉框所對應的字段不一致下拉框不可見為此設置表格的OnClick事件如下
If (GridCells[GridCol]<>Company) then
begin
ComboBoxVisible := false;
end;
.設置OnChange事件
在OnDrawCell事件中只完成了繪制單元格和顯示下拉框的工作並不能將數據輸入到表格為此設置下拉框的OnChange事件如下
GridCells[GridColGridRow]:=ComboBox
Items[ComboBoxItemIndex];
這樣就完成了在表格中插入下拉框的工作
在表格中顯示圖形字段
在程序開發中有時需要在報表中顯示一些非常規字符例如在零件檢驗報表中的檢測項目字段就包含了零件加工粗糙度加工公差等非常規字符解決該問題的一般思路是把這些非常規字符作為圖形字段存儲例如SQL Server 數據庫中的Image字段但是無論是StringGrid控件還是DBGrid控件都只能直接顯示字符串這樣就產生了如何在表格控件上顯示圖形字段的問題
乍一看該問題可以利用上述辦法在表格中插入DBImage控件解決但是這樣需要插入與記錄同等個數的控件更麻煩的是由於OnDrawCell事件觸發非常頻繁這樣插入的DBImage控件會不停地試圖與數據庫連接不僅增加了網絡通信量而且圖形字段明顯有閃爍感影響程序的正常運行更好的解決辦法是在連接數據庫時動態地創建DBImage控件利用該控件讀取數據庫的Image字段並作為臨時文件保存到客戶機硬盤在表格的OnDrawCell事件中讀取該臨時文件完成繪制工作該臨時文件在客戶退出時被刪除以下是在表格中顯示圖形字段的具體步驟
.保存Image字段
在執行查詢時讀取所有Image字段並保存到客戶機硬盤
Begin
// 略去查詢語句
FileName:=d: emp; //初始化臨時文件路徑
MyDBImage=TDBImageCreate(Self);//創建DBImage
MyDBImageParent:=self;
MyDBImageDataSource:=DataSource;
MyDBImage DataField=描述;//指定為描述字段
Index:=;
while not ClientDataEof do begin //讀數據庫
s:=IntToStr(Index);
FileName:=FileName+s;
FileName:=FileName+bmp;
//保存臨時文件
MyDBImage Picture Bitmap SaveToFile(FileName) ; Grid Cells[Index]:=ClientDataFieldByName(零件編號)AsString
GridCells[Index]:=;
//填寫表格
GridCells[Index]:=ClientDataFieldByName(實測數據)AsString;
ClientDataNext;
Index:=Index+;
end;
MyDBImageDestroy(); //釋放DBImage
end;
[] [] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/24772.html