關於DBCtrlGrid控件, 請教各位高手!

sunrised 2000-08-10 09:54:00
我的問題全部是關於DBCtrlGrid控件, 各位高手, 哪怕是能幫我解決一個, 感激不盡!

1. 在使用DBCtrlGrid控件時, 在處於插入狀態時, 資料輸完以後, 輸入焦點在當前行的最後一個TDBEdit時, 按TAB鍵後, 始終要移到當前行的第一個TDBEdit, 直到按TAB鍵重新移到當前行的最後一個TDBEdit, 再按一次TAB鍵, 才能移到下行, 繼續新增記錄. 而在處於編輯狀態時, 輸入焦點在當前行的最後一個TDBEdit時, 按TAB鍵後, 便可直接移到下一行, 繼續編輯記錄.

2. 在DBCtrlGrid控件中的TDBEdit的KeyPress中, 為何按ESC, ENTER鍵後, 輸入的焦點立即轉移到DBCtrlGrid上來(這是我不想見到的), 按其他鍵一般不會, 有何方法解決這個問題.

3. 我想在DBCtrlGrid控件中的TDBEdit中, 按4個方向鍵, 就可以實現記錄上下移動與字段的左右移動, 那麼在TDBEdit的KeyPress事件中, 如何識別當前按鍵是4個方向鍵?
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pjy 2000-08-11
  • 打赏
  • 举报
回复
但是窗口的keypress可以检测到!注意:需要把窗口的keypreview设为ture!
cybercobra 2000-08-10
  • 打赏
  • 举报
回复
1.为DBGrid对应的表建立索引,如果一个字段还不能表示唯一条记录,就多建几个索引,特别是要关于你区别记录顺序的字段建立索引。然后在与DBGrid关联的Dataset的Indexfields属性指定这些索引,多个字段之间用分号隔开。再用就应该没有问题了。
pjy 2000-08-10
  • 打赏
  • 举报
回复
同意lotto的观点。补充一点:
对于问题一、需要加一个判断datasourse.state是edit,还是insert状态的判断,就可以区别当前是编辑还是插入状态,然后具体编程即可!
lotto 2000-08-10
  • 打赏
  • 举报
回复
一、在最后一个Tdbedit中判断如果ord(key)=vk_tab则增加记录,将焦点移到要移的记录上去。如:
if ord(key)=vk_tab then
begin
key:=chr(0);
table1.append
dbedit1.setfocus;
end;
二、在keypress事件中屏ESC,Enter键 ,
如ord(key)=13 //回车
then key:=chr(0);
三、case ord(key) of
vk_down:;
vk_up:;
vk_left:;
vf_right:;
end;
说明:所有的键定义如vk_down在Windows单元中,可以将他打开查看
sunrised 2000-08-10
  • 打赏
  • 举报
回复
Lotto:你以上說的方法是行不通的,因在控件中的dbedit按tab,entert及方向等鍵根本不響應它的keypress事件,所以在keypress事件中寫上任何語句都無濟于事,請你再次幫忙調試后告知!

另:sunrised請各位delphi好手出手相助!!!!!!!!!

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧