//去掉手输 -号 表示去掉 +号表示增加
grdAllot.Options:=grdAllot.Options-[dgEditing];
无法取得光标焦点
procedure Tmain.grdAllotDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
begin
if InExt(Column.FieldName,[OrderName,StockName]) then //判断 当前选择的字段名,对应的另外两个,设置颜色
begin
grdAllot.Canvas.Brush.Color :=clyellow;
grdAllot.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
end;
//在Grideh中 输入后,键盘 弹起,触发,这个可以里面可以函数方法 ,比如,统计 所有的尺码的合计
procedure Tmain.grdAllotKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
ShowMessage('触发到这了')
//grdAllot.DataSource.DataSet.FindField('GoodsID').FocusControl;
end;
TDBGridEh组件的OptionsEh选项中有一项:dghDialogFind,默认值为True
TDBGridEh组件的OptionsEh选项中有一项:dghDialogFind,默认值为True。此属性使表格在运行状态下,用户只需按下Ctrl + F热键,即可调出一个现成的查找对话框来,而无须程序员写其他任何查找相关的代码了。
EhLib提供的这个功能实在巧妙,它可省了程序员的不少功夫,而且用来在表格中对数据定位,其功能也相当完善。
有些时候,开发者还可能需要用代码来实现Ctrl + F热键的调用。大致可有二种可行的方法:
1、笨方法--模拟Ctrl + F按键事件,使用Windows API函数Keybd_Event()如下所示:
Keybd_Event(VK_CONTROL,Byte(0),0,0);
Keybd_Event(Byte(70),Byte(0),0,0);
Keybd_Event(Byte(70),Byte(0),KeyEventF_KEYUP,0);
Keybd_Event(VK_CONTROL,Byte(0),KeyEventF_KEYUP,0);
2、引用EhLib包的DBGridEhFindDlgs单元提供的标准方法ExecuteDBGridEhFindDialog():
调用示例:ExecuteDBGridEhFindDialog(TDBGridEh组件名,'','',nil,True);
该方法声明如下:
procedure ExecuteDBGridEhFindDialog(Grid: TCustomDbGridEh; Text, FieldName: String; ColumnFields: TColumnFieldsArrEh; Modal: Boolean);
参数Grid用以指定一个特定的TDBGridEh组件;Text用以指定一个特定查找文本(可为空串'');FieldName用以指定一个特定的查找字段名(可为空串'');ColumnFields用以指定一个查找字段列表的动态数组(可置为nil,表示默认为全部Columns);Modal用以指定对话框是否以模态打开。