如果使dbgrid.colomn.picklist用上下键控制?(100分)

  • 主题发起人 主题发起人 iceheart
  • 开始时间 开始时间
I

iceheart

Unregistered / Unconfirmed
GUEST, unregistred user!
dbgrid的某个字段是设了下拉菜单的,现在用dbgrid来填表,在填到设有下拉菜单的字段
时,如何可以用上下键来控制菜单项的选择?目前只要一按上下键,焦点就移到了上下的
记录上了。
我是初学者,大家多帮忙,先谢了!
 
呵呵,似乎不好控制
 
真的没人知道吗?还是觉得太简单了,不屑回答??????
兄弟们,帮帮忙啊!!!
 
大家帮忙啦!先谢谢了!!!
 
当在编程状态时,用Alt+↓可以实现packlist的下拉.
 
我去试试先……
 
KEYdown 事件中不能加判断么?
 
楼上的兄弟,你试一试不就知道了。
 
在DBGrid的OnKeyDown事件中加入以下代码
var
Index: Integer;
begin
if DBGrid1.Columns[DBGrid1.SelectedIndex].PickList.Text<>'' then
begin
if (Key=VK_UP) or (Key=VK_DOWN) then
begin
DBGrid1.DataSource.DataSet.Edit;
Index:=DBGrid1.Columns[DBGrid1.SelectedIndex].PickList.IndexOf(DBGrid1.Columns[DBGrid1.SelectedIndex].Field.AsString);
if Index=-1 then
DBGrid1.Columns[DBGrid1.SelectedIndex].Field.AsString:=DBGrid1.Columns[DBGrid1.SelectedIndex].PickList.Strings[0]
else if Key=VK_UP then
begin
if Index=0 then
DBGrid1.Columns[DBGrid1.SelectedIndex].Field.AsString:=DBGrid1.Columns[DBGrid1.SelectedIndex].PickList.Strings[0]
else
DBGrid1.Columns[DBGrid1.SelectedIndex].Field.AsString:=DBGrid1.Columns[DBGrid1.SelectedIndex].PickList.Strings[Index-1]
end
else if Key=VK_DOWN then
if Index=DBGrid1.Columns[DBGrid1.SelectedIndex].PickList.Count-1 then
DBGrid1.Columns[DBGrid1.SelectedIndex].Field.AsString:=DBGrid1.Columns[DBGrid1.SelectedIndex].PickList.Strings[Index]
else
DBGrid1.Columns[DBGrid1.SelectedIndex].Field.AsString:=DBGrid1.Columns[DBGrid1.SelectedIndex].PickList.Strings[Index+1];
DBGrid1.DataSource.DataSet.Post;
Key:=0;
end;
end;
end;
 
谢了,我去试一下先。
 
zxl893兄,你这段代码虽然不是我想要的效果,不过也让我学到不少东西。谢谢。
bihai兄,虽然不是给出了代码,但也解决了一定问题。谢谢。
接受答案了。
 
多人接受答案了。
 
后退
顶部