使用TAB在DBGrid的问题,十万火急 !!!!(200分)

  • 主题发起人 主题发起人 GaryLou
  • 开始时间 开始时间
G

GaryLou

Unregistered / Unconfirmed
GUEST, unregistred user!
如果使用TAB键或下箭号在DBGrid时 ,当到table尾,DBGrid就会自动新增
一笔record,如何令此功能失效,不再append blank呢,先行谢过.
 
if key=char(vk_tab) then
if dbgrid1.DataSource.DataSet.RecNo=dbgrid1.DataSource.DataSet.RecordCount then
key:=#0;
 
在dbgrid的keydown事件中
写下面的语句
if key=vk_tab or key=vk_down then
abort;
即可
 
在dbgrid的keydown事件中
写下面的语句
if key=vk_tab or key=vk_down then
begin
abort;
key;=#0;
end;
即可
 
1.先设置一个开关变量
CanAppend:Boolean;
// CanAppend=False 不能增加记录
// CanAppend=True 可以增加记录
2.对Table编写OnNewRecord事件
procedure TForm1.Table1NewRecord(DataSet: TDataSet);
begin
if not CanAppend then
Abort;
end;

这种方法对DBGrid是很有效的。
 
Liu JZX的方法把tab建禁用了,不太好
www和李长柱的方法应该都可以,
我更倾向于www的方法
注意写在 onkeydown 事件中,因为onkeypress没法处理 vk_tab和 vk_down
 
都可以。
 
if key=vk_tab then
if ((dbgrid1.DataSource.DataSet.RecNo=dbgrid1.DataSource.DataSet.RecordCount)
and (dbgrid1.SelectedIndex+1=table1.FieldCount)) then
abort;
if key=vk_down then
if (dbgrid1.DataSource.DataSet.RecNo=dbgrid1.DataSource.DataSet.RecordCount) then
abort;
 
如果DataSource.DataSet is TQuery 那么RecNo不可用.
if key=vk_tab then
if ((dbgrid1.DataSource.DataSet.Eof)
and (dbgrid1.SelectedIndex+1=table1.FieldCount)) then
abort;
if key=vk_down then
if (dbgrid1.DataSource.DataSet.Eof) then
abort;
 
多人接受答案了。
 
后退
顶部