DBGrideh中,按向下方向键,如何才能不新增一条记录,只是显示某列picklist中的值,可以选择(100)

  • 主题发起人 主题发起人 dfoversky
  • 开始时间 开始时间
D

dfoversky

Unregistered / Unconfirmed
GUEST, unregistred user!
DBGrideh中,按向下方向键,如果不能新增一条记录,只是显示某列picklist中的值。感觉用DBGird网格这里输入比较费劲,目前的方法是随便输入一个字,空格也行。下拉列表才出来。要设置成如题目说的那样,并且最后一列敲回车之后,才会新增一条空白记录,可以继续输入下一行.........
 
要按ALT+向下方向键才行
 
正对这个问题我提一个,当按向下键是后新增一条记录,向上的时候判断新增记录是否为空,为空则删除,不为空则提示要保存后删除!!!
 
新增一行,相当于在数据库里插入新的数据。你可以在相关的连接数据库控件中,禁止插入。如:procedure TForm1.ADOQuery1BeforeInsert(DataSet: TDataSet);begin Abort;end;
 
移动到最后一条记录时再按一下“下”就会追加一条记录,如果去掉这项功能 procedure TForm1.DataSource1Change(Sender: TObject; Field: TField); begin if TDataSource(Sender).DataSet.Eof then TDataSource(Sender).DataSet.Cancel; end; 针对这个问题我提一个,当按向下键是后新增一条记录,向上的时候判断新增记录是否为空,为空则删除,不为空则提示要保存后删除!!!
 
高人来指点一下 :)
 
试了试不行哦。。
 
哪里不行?
 
自己试试就知道了,pickList是属性,不是过程。用DropDown过程也是不行,只出现一个下拉箭头。
 
设置属性AllowedOptions: alopinserteh, alopAppendeh都为False然后在OnKeyPress里写代码,如果TDBGridEh(Sender).SelectIndex 是最后一列,并且按回车按键时,TDBGridEh(Sender).DataSource.DataSet.Append.否则,让TDBGridEh(Sender).Columns(TDBGridEh(Sender).SelectIndex).pickList弹出。好长时间不搞这东西了,不知道行不行,未测试。
 
我这里没有安装那个控件。TDBGridEh(Sender).Columns(TDBGridEh(Sender).SelectIndex).pickList只是一个TStrings,当然不是过程了。我的意思只是说让你把这个PickList对应的下拉框显示出来。具体怎么显示,你就要自己调试了。以下供参考:设置该列的AutoDropDown := True;设置控件的ColumnDefValues中的AutoDropDown := True;然后再弹出。
 
如果按向下键不要求增加,到最后一列一行才增加,可以如下在dbgrideh的KeyDown中写入:if key=vk_down then // key:=0; if key=13 then //回车 begin if dbgrideh1.SelectedIndex<>dbgrideh1.Columns.Count-1 then //是不是最后一列 dbgrideh1.SelectedIndex:=dbgrideh1.SelectedIndex+1 else begin dbgrideh1.DataSource.DataSet.Next;//next 改为insert 就可以实LZ要求 dbgrideh1.SelectedIndex:=0; end; end;
 
按zhengjp的向下键是不好使了。下拉列表框还是不出来。:(
 
有必要用向下键拉下拉框吗?本来系统有拉的,何必改变原来的习惯,就是因为你自己不习惯?用户会不会更不习惯你这样的改变呢?
 
DBGrideh 里按下拉框,例如选择男,女。 选择一些其它信息。现在一按像下 箭头就新增记录了。按向下键弹出下拉框可以选择。picklist中的值。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部