Delphi中OnDrawCell的使用技巧[2]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Delphi中OnDrawCell的使用技巧[2]
.设置OnClick事件
如果获得焦点的单元格所对应的字段与下拉框所对应的字段不一致下拉框不可见为此设置表格的OnClick事件如下
If (Grid Cells[Grid Col ]<> Company ) then
begin
ComboBox Visible := false;
end;
.设置OnChange事件
在OnDrawCell事件中只完成了绘制单元格和显示下拉框的工作并不能将数据输入到表格为此设置下拉框的OnChange事件如下Grid Cells[Grid Col Grid Row]:=ComboBox
Items[ComboBox ItemIndex];
这样就完成了在表格中插入下拉框的工作
在表格中显示图形字段
在程序开发中有时需要在报表中显示一些非常规字符例如在零件检验报表中的检测项目字段就包含了零件加工粗糙度加工公差等非常规字符解决该问题的一般思路是把这些非常规字符作为图形字段存储例如SQL Server 数据库中的Image字段但是无论是StringGrid控件还是DBGrid控件都只能直接显示字符串这样就产生了如何在表格控件上显示图形字段的问题
乍一看该问题可以利用上述办法在表格中插入DBImage控件解决但是这样需要插入与记录同等个数的控件更麻烦的是由于OnDrawCell事件触发非常频繁这样插入的DBImage控件会不停地试图与数据库连接不仅增加了网络通信量而且图形字段明显有闪烁感影响程序的正常运行更好的解决办法是在连接数据库时动态地创建DBImage控件利用该控件读取数据库的Image字段并作为临时文件保存到客户机硬盘在表格的OnDrawCell事件中读取该临时文件完成绘制工作该临时文件在客户退出时被删除以下是在表格中显示图形字
段的具体步骤
.保存Image字段
在执行查询时读取所有Image字段并保存到客户机硬盘
Begin
// 略去查询语句
FileName:= d: emp ; //初始化临时文件路径
MyDBImage =TDBImage Create(Self);//创建DBImage
MyDBImage Parent:=self;
MyDBImage DataSource:=DataSource ;
MyDBImage DataField = 描述 ;//指定为描述字段
Index:= ;
while not ClientData Eof do begin //读数据库
s:=IntToStr(Index);
FileName :=FileName+s;
FileName :=FileName + bmp ;
//保存临时文件
MyDBImage Picture Bitmap SaveToFile(FileName ) ; Grid Cells[ Index]:=ClientData FieldByName( 零件编号 ) AsString Grid Cells[ Index]:= ;
//填写表格
Grid Cells[ Index]:=ClientData FieldByName( 实测数据) AsString;
ClientData Next;
Index:=Index+ ;
end;
MyDBImage Destroy(); //释放DBImage
end;
lishixinzhi/Article/program/Delphi/201311/24772。