紧急求救:如何在DBGRID中显示出下拉列表?(50分)

  • 主题发起人 主题发起人 xxy
  • 开始时间 开始时间
X

xxy

Unregistered / Unconfirmed
GUEST, unregistred user!
我希望在职员表的单位编号列里,当我输入时自动显示下拉列表,在列表中显示出单位表的单位编号和单位名称字段的值!(不使用PICKLIST)
 
有特殊构件的用.
 
在dbgrid1.columes.picklist里写
 
xxy说了不用picklist
 
有这样的控件,名字记不得了,

http://sunsite.icm.edu.pl/delphi/
http://www.torry.ru/
找找。
 
那用什么呀?用IP的构件吧
 
用InfoPower组件里有一个TwwDBGrid就很容易实现了,可以在
http://heguohua.topcool.net/下载
 
我只会PickList的.
要不,用构件吧.
 
有PICK LIST不用?
我晕!
用INFO POWER吧
 
有现成的不用,是不是分多了
 
能不能手工显示一个listbox,也可以做到的呀
 
为什么不用PICKLIST?
PICKLIST也可以动态生成ITEM.
 
1. 放置一个TDBComboBox控件,填写您要选用的值列表,设为Visible:=False
2.DBGrid1.OnEnter事件里,XXXX为字段名
if (gdFocused in State) and
(Column.Field = XXXX) then
begin
DBComboBox1.DBGrid1DrawColumnCell(
Rect.Left + DBGrid1.Left + 1,
Rect.Top + DBGrid1.Top + 1,
Rect.Right - Rect.Left,
Rect.Bottom - Rect.Top);
end;

3.DBGrid的ColEnter 事件
if DBGrid1.Columns [DBGrid1.SelectedIndex].
Field = XXXX then
DBComboBox1.Visible := True
else
DBComboBox1.Visible := False;
3.Try it If Not Work Mailto:trw@china.com


 
>> 小天 :在dbgrid1.columes.picklist里写
>>cbzds:为什么不用PICKLIST?
>>PICKLIST也可以动态生成ITEM.
请问怎样动态生成ITEM?(有分得哦!)
xfs@163.net

 
大家是不是把问题搞复杂了?这种问题建一个查询字段不就行了,没
必要用第三方的控件吧!
 
>>Nose:是不是自找麻烦?
>>xxy:为什么不用PickList?
Picklist自己生成Items
DBGrid1.Columns.Items.picklist.Add(dwtable.filedbyname('dwbh').asstring+' '+dwtable.fieldbyname('dwmc').asstring)
"输入时自动显示下拉列表"可参考:
procedure TYourForm.DBGrid1CellClick(Column: TColumn);
begin
keybd_event(VK_F2,0,0,0);
keybd_event(VK_F2,0,KEYEVENTF_KEYUP,0);
with TDBGrid(ActiveControl) do
if DBGrid1.Columns[selectedindex].picklist.count<>0 then
begin
keybd_event(VK_MENU,0,0,0);
keybd_event(VK_DOWN,0,0,0);
keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
end;
end;
 
可以自己加个dbcombobox放在dbgrid中.
 
看了前面各位的回答,觉得Nose的回答最接近提问者的要求,但放一个TDBComboBox的做法并不是很好。我觉得不如专门用一个屏幕来实现值列表功能,然后把这个屏幕编译成可重用的DLL,以后都可以直接调用了。具体方法是:
1、用模板建一个DLL屏幕,放上TQUERY、TDATASET、TDBGRID等构件,做一个export函数读参数并设置各控件的属性,最后返回数据。
2、在主屏幕中声明DLL调用,在FIELDS EDITOR中把TDBGRID设置成带有省略号的那种,然后调用DLL的涵数。
3、在DELPHI的DEMOS目录下有一个叫MASTAPP的例子,比较完整的例子(包括了我所说的实现方法,甚至还包括了写HELP的实例等等),仔细研究研究吧。
 
后退
顶部