再问个问题,也是DBGrid的,呵呵:DBGrid的picklist怎么用?

中骑士 2003-09-14 01:20:06
picklist好象能实现在DBGrid中的下拉菜单?这个功能不赖!
...全文
97 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenqm 2003-09-14
  • 打赏
  • 举报
回复

DBGrid一般用来显示或输入数据表的内容,如果我们的应用程序中,某一数据表的一个字段(列)的内容的输入值基本上为有限集的元素时,就很适合利用picklist的特点。具体方法如下:
1.在表单(Form1)上 增加表 Table1,明确其DatabaseName属性(表的路径),再明确其TableName属性。
2.在表单(Form1)上增加Datasource1,明确其DataSet属性为Table1。
3.在表单(Form1)上增加DBGrid1,明确其DataSource 属性为DataSource1.
4.右击Table1, 在弹出菜单上单击Fields Editor... , 右击弹出的Form1->Table1子表单空白处, 在最后弹出的子菜单中单击 Add all fields 所在行。
5.右击DBGrid1的空白处, 在弹出的子菜单中单击 Columns Editor... 所在行,右击弹出的Editing DBGrid1->Columns子表单空白处, 在最后弹出的子菜单中单击 Add all fields 所在行。这时DBGrid1->Columns子表单里将列出Table1的全部字段。
6.在第5步所得字段表中,选中输入值为有限集的元素的对应字段,在Object Inspector(对象监测表)中单击PicList属性所在行,单击右边出现的小方形按纽,在弹出的String List Editor 中分行输入有限集的全部元素。
Ok,运行你的程序 ...
当然,某些情况下,有限集合的元素需要在程序运行时,根据情况才能确定范围。这时,
我们可以将下列代码插入某一事件(只要我们在选择输入值前引发相应事件即可)。

DBGrid1->Columns->Items[i-1]->PicList->Clear();
//第i列字段对应的输入值为有限集元素
DBGrid1->Columns->Items[i-1]->PicList->Add(s1);
DBGrid1->Columns->Items[i-1]->PicList->Add(s2);
...
DBGrid1->Columns->Items[i-1]->PicList->Add(sk);
// {s1,s2,...sk} 为包含k个String元素的有限集

需要说明的是,对利用了PicList特性的字段,我们仍能在该字段中输入有限集以外的其它值。因此,利用PicList的特性,并不要求该字段的内容必须为有限集的元素。
xuby5228 2003-09-14
  • 打赏
  • 举报
回复
你可以在FormCreate或者Formshow事件中加入:
DBGrid1->Columns->Items[0]->PickList->Clear();
DBGrid1->Columns->Items[0]->PickList->Add("abc");
应该可以的。



中骑士 2003-09-14
  • 打赏
  • 举报
回复
TO:Libran() :
照你的步骤行事:我在DBGrid1的OnKeyPress事件里输入你的:DBGrid1->Columns->Items[0]->PickList->Add("abc");
但我按键后什么事也没发生!
Libran 2003-09-14
  • 打赏
  • 举报
回复
设计期:
双击DBGrid,加入Column;选中某一列,编辑PickList属性,输入下拉框的内容

运行期:
给第i列下拉框添加一项内容:
DBGrid->Columns->Items[i-1]->PickList->Add("New Item");
Atomictry 2003-09-14
  • 打赏
  • 举报
回复
是的。以前解决的问题里面有好多提到的。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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