DbGrid中如何用上下光标键移动时使其总是处于插入编辑状态?(50分)

  • 主题发起人 主题发起人 jw
  • 开始时间 开始时间
光标一移动就自动保存了。只好每移动一次就Edit一下吧。
 
options中设置 alwaysshoweditor就行
 
将你的 DataSouce.AutoEdit:=TRUE 即可
 
怪我未说清楚,在DBGRID中,上下移动光标键,若直接输入数据,缺省时其数据处
于全选状态,原有的数据将
直接被覆盖,需要在此行双击鼠标,或先按下ENTER键再按HOME到本行的第一个
位置,然后才能插入字符插入.
要实现似乎要用到模拟按键,但我试过未通过?
Save Me!!!
 
popeye说的就可以解决了.
 
各位大虾小虾,我试过还是未通过,快救我一命?
请仔细看看我的问题描述,你们最好试一下就知道了!!
!@#$%^&*()_+~?><":

2000.1.28 15:53
 
popeye的回答肯定没问题,我试过才这么说的. 你的delphi是什么版本?
 
上述方法可行!
要确定位置用鼠标就搞定!何必如此复杂!?
 
他的意思是在输入数据时,保留原来的数据,只是在元数据中插入。而不是使数据
处于全选状态,输入任意键就会冲掉原使数据。 jw,这是你的原意吗? {B-)
 
按一下 F2 试试
 
该问题和我已问的问题类似,沈前卫先生所言即是,就是这个意思。
按F2当然可解决这个问题!在STRINGGRID中我就是这么用的。但问题是
用户自己手工按多烦呀!!!
在STRINGGRID中我可以用ONCellEnter事件中贸易击键,解决此问题,
但DBGRID中无此事件!怎么办!
 
呵呵,我想可以使用这种方法来处理。


将Grids.pas拷贝到你的工程文件目录下,并加入到你的工程中。并修改之:

procedure TCustomGrid.UpdateEdit;

procedure UpdateEditor;
begin
FInplaceCol := Col;
FInplaceRow := Row;
FInplaceEdit.UpdateContents;
if FInplaceEdit.MaxLength = -1 then FCanEditModify := False
else FCanEditModify := True;
// FInplaceEdit.SelectAll; //将这句程序注释掉就行了。
end;

begin
if CanEditShow then
begin
if FInplaceEdit = nil then
begin
FInplaceEdit := CreateEditor;
FInplaceEdit.SetGrid(Self);
FInplaceEdit.Parent := Self;
UpdateEditor;
end
else
begin
if (Col <> FInplaceCol) or (Row <> FInplaceRow) then
begin
HideEdit;
UpdateEditor;
end;
end;
if CanEditShow then FInplaceEdit.Move(CellRect(Col, Row));
end;
end;



我经常这样做,当Delphi的控件不满住我的要求,我都这样改。呵呵......
 
后退
顶部