急:关于dbgrid的用法(50分)

  • 主题发起人 主题发起人 骆璇
  • 开始时间 开始时间

骆璇

Unregistered / Unconfirmed
GUEST, unregistred user!
例:在form中有一个dbgrid和edit的控件,其中dbgrid 中显示了一个数据表的内容:
代码 名称 在单数 实到数
001 a 10 位置一
002 b 20 位置二
003 c 15 位置三
如何做到在edit中打入一个代码,例如002就使指针跳到相应的位置(如位置二)中,进行修改.
 
用locate

if table1.locate('empno',edit1.text,[locaseinsensitive]) then
begin

end
else
showmessage('没有此记录');
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
begin
table1.locate('代码 ',trim(edit1.text),[loPartialKey]);
dbgrid1.SetFocus;
dbgrid1.EditorMode:=True;
end;
end;
代码 表示你数据表的字段名称了。我试验了通过。还需要的就是判断key的时候加上
tab键了。在Edit1Exit写代码的时候好象通过不了。
 
是啊,如果字符长度小于15未,还可以这样写:
if table1.locate('empno',edit1.text,[]) then
begin
table1.first;
while not table1.eof do
begin
if table1.fieldbyname(''empno').asstring<>edit1.text then table1.next;
else ...
end;
end
else
..;
 
[:)]谢谢大家啦,
但那指针不能跳到位置二,只能跳到代码002处,
我已把前三列都变为readonly了,如何使他跳到位置二呀?
 
dbgrid好象不可以的吧,stringgrid就可以。
 
用dbgrid真的不能吗?
请iq120的回应一下啦?
 
可以,这样做

你在dbGrid.setFocus后面加这么一句
dbGrid.SelectedIndx := 2 ; (你自己指定顺序)
dbGrid.FocusControl ; (设置光标)

ok
 
呵呵,写错了, 不用setFocus。
 
[:D]得啦
不过你写错了
应该是这样吧,不过也很感谢你们的,充心的[:D]
dbgrid1.SelectedIndex:=2;
dbGrid1.Focused;
 
你可以先试一下两个语句的不同,
setfocus只会把光标置到指定列上,你要进入编辑状态,还要点击一下鼠标左键或按一下
回车键,
focusControl设置光标位置同时进入编辑状态。
呵呵,你说用户会喜欢哪种方法呢?
 
多人接受答案了。
 
后退
顶部