一个关于dbgrid的编辑状态的问题(30分)

  • 主题发起人 主题发起人 套牢
  • 开始时间 开始时间

套牢

Unregistered / Unconfirmed
GUEST, unregistred user!
编辑一个dbgrid中的字段
从一个cell移动到另一个时,新获得焦点的cell总是处于全选的状态(该cell中有数据)
如何才能让它不处于全选,而处于编辑状态,
就是让用户在cell间移动时,在新cell中编辑时不覆盖原有内容,可以直接追加,
而不用每次都用鼠标点一下?
 
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
begin
Key:=#0;
if DBGrid1.SelectedIndex=DBGrid1.Columns.Count-1
then DBGrid1.SelectedIndex:=0
else DBGrid1.SelectedIndex:=DBGrid1.SelectedIndex+1;
DBGrid1.EditorMode:=True;
end;
end;
 
DBGrid1.EditorMode:=True;
是关键的一句。
 
另外,在DBGrid 中 Ctrl + Del 删除记录,显示的是英文提示,不知各位大虾怎样用自己
的信息替换之?
如果较好的解决了这个问题,愿意开贴送分100。
 
这个容易解决:

不管在DBGrid、DBNavigator等将容许删除的选项全部置为False,然后在DBGrid所

连的Query/Table的BeforeDelete事件中写:
begin
if MessageDlg('你确定要删除此纪录吗?',mtConfirmation, [mbYes, mbNo], 0) = mrNo
then Abort;
end;
 
学习心得:
TYZhang提供的程序其实是解决用ENTER代替TAB和编辑焦点两个问题,
解决编辑焦点问题的语句就是套牢兄所说的DBGrid1.EditorMode:=True;
但这样不能处理各种情况,我建议将DBGrid1.EditorMode:=True;
放入onCellChanged事件即可,
各种情况都能满足要求.

大富翁真好,我昨天自个琢磨了半天也没开窍.
有了delphi+控件+大富翁,低手也能成高手!
 
后退
顶部