VC++6.0中如何清空Comboxvc组合框框中的内容?

Access俱乐部
Access入门经典视频《运用Access实现降本增效》(免费)[] | 免费《Access五节必修课》[]
?&&&&?&&&&?&&&&?&&&&
您的位置:  > >
Access实现组合框联动详细教程
来源:&&点击数:4623&&评论数:3 &|&&|&
时 间: 15:33:30
作 者:&&&ID:37304&&城市:苏州
摘 要:&&&今天突然想要一个新的功能,就是当第一个下拉改为人事部时第二个下拉就要出现人事部的相关明细可供选择,在excel中测试时是可以实现的但在Access中不知道该如何实现,后经群Access中国的朋友帮忙找到了这个示例。说的非常详细。在此上传到群中以供朋友们参考
一个组合框的变化,引起另一个组合框的变化,这就是所谓的组合框联动,
在生活中不难发现组合框联动的例子,比如某一个地方,不同的省份有不同的城市。如:广东下有中山,广州,深圳,湖南下有长沙,株洲等。下面讲述一下具体的制作过程,
1. 先建立表,这里不详细说明&
2. 创建一个"乡镇村屯窗体", 新建一个就行了,如下图
3. 在窗体中加入三个组合框, 如下图
4. 打开"乡"组合框的属性表, 更改名称, 例如我将它改名为"乡名"
行来源类型设置为:表/查询
点击行来源右边的"..."按钮, 目的设置行来源
5. 加入地址表, 双击乡字段, 这样乡的行来源就设置完毕了
6. 按上面提到的方法设置村组合框的行来源, 在这里要添加二个字段, 一个是村, 另一个是乡, 在准则中写入条件:froms!窗体名!名
写入条件的目的是以乡组合框的值进行筛选, 这是关键!!
7. 以上面同样的方法设置屯组合框的行来源, 在这再增加屯字段, 在村字段的准则中再增加准则, 如下图
到止, 三个组合框的设置已经完毕, 但组合框还不可以联动的, 必须在各控件的更新事件写入刷新才能联动, 代码在下面讲述
8. 在乡组合框属性中, 点击更新后右边的"..."按钮, 写入事件过程
其更新后事件的代码如下:
Private Sub 乡名_AfterUpdate()&&'更新后事件
& & Me.村名.Requery&&'刷新村组合框的列表数据
& & Me.村名 = ""& &&&'清空村组合框,防止数据错乱
& & Me.屯名 = ""& &&&'清空屯组合框,防止数据错乱
9. 以同样方法打开村组合框更新后事件过程, 写入如下代码
#p#分页标题#e#Private Sub 村名_AfterUpdate()
& & Me.屯名.Requery&&'刷新屯组合框的列表数据
& & Me.屯名 = ""& &&&'清空屯组合框,防止数据错乱
OK 现在各组合框可以联动了, 回到窗体视图就可以看到效果
以下再说一下组合框中常用的三个技巧
技巧一. 单纯上面的设置, 细心的坛友会发现, 组合框展开的列表中为什么会有很多的重复数据? 如下图
可不可以显示唯一数据呢? 答案是:可以的, 方法如下:
打开行来源设置界面, 如下图, 在空白处右击, 打开一个设置窗体
将唯一值的默认值否改为是, 如下图, 然后关闭
再回到窗体视图, 看看是不是全部的数据变成唯一值了?
技巧二. 可不可以当控件获得焦点时自动打开列表呢? 这样可以实现纯键盘操作, 不用点击箭头, 答案也是可以的
打开控件的属性, 在"获得焦点"的事件过程中写入代码, 代码如下:
Private Sub 乡名_GotFocus()&&'获得焦点事件
& & Me.乡名.Dropdown&&'展开列表数据
OK 再回到窗体视图, 是不是获得焦点的控件会自动打开列表? 再按一下键盘的向下键, 是否可以用键盘选择数据?
技巧三.&&当组合框输入数据时, 在打开的列表中可否高亮显示对应的数据? 答案同样可以
打开控件的属性, 将"自动展开"设置为:是, 这样在组合框输入数据时, 对应最接近的数据就会高亮显示, 不信的话你自己试下就知了
以上就是做法,请多练习,这样才能记得住,学得会
Access软件网官方交流QQ群 (群号:)
      
&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】
Access网店
价格:¥0 元
价格:¥1 元
价格:¥50 元
(1-23&09:55)
(1-22&22:53)
(1-22&16:43)
(1-22&15:59)
(1-22&15:50)
(1-22&15:40)
(1-22&13:01)
(1-22&08:49)
(1-21&16:24)
(1-21&16:18)
Access软件网 版权所有 CopyRight
提供支持 本站特聘法律顾问: 李慧 律师VC6.0 组合框(转)
不少人对组合框的使用存在疑惑,提出过不少次的提问,针对这个问题,从网上抄下一些资料,供大家参考当 用 资 源 编 辑 器 在 一 个 对 话 框 中 生 成 组 合 框 控件 时, 可 以 看 到 组 合 框 两 侧 的 控 制 点 是 实 心,而 上 下四 周 的 控 制 点 是 虚 心 的, 即 组 合 框 水 平 方 向 的 大 小 可以 通 过 拖 动 组 合 框 控 件 两 侧 的 实 心控 制 点 改 变, 垂 直方 向 的 大 小 则 不 能 改 变。 为 了 改 变 垂 直 方 向 的 大 小,可 以 用 鼠 标 单 击 组 合 框 控件 的 下 拉 箭 头, 可 以 看 到 控件 的 上 下 的 控 制 点 变 成 实 心, 此 时 可 以 拖 动 该 控 制 点将 组 合 框 的 高 度 改 变。 当 运 行 程 序 时, 按 下 下 拉 箭头,Windows 利 用 该 高 度 重 置 组 合 框 的 大 小。 ---- 如 果 组 合 框 中 各 列 表 项 是 固 定 的, 则 可 以 预 先 将这 些 项 写 进 组 合 框。 方 法 是: 打 开 资 源 编 辑器, 从 组合 框 的 属 性(Proprities) 对 话 框 中 选 择Data 标 签, 在&Enter listbox Items& 列 表 框 中 填 加 各 列 表 项,注 意 加 完 一 项 换行 时, 必 须 用Ctrl+Enter 组 合 键。 如 果 希 望 以 输 入 的 次 序来 显 示 各 项, 则 不 要 选 择Styles 标 签 的Sort 项。 填 加 完 列表 项 后, 利 用 上 述 方 法 改 变 组 合 框 的 高 度( 否 则 程 序运 行 后, 单 击 组合 框 下 拉 箭 头 列 表 框 不 出 现), 这样, 运 行 程 序 后, 单 击 组 合 框 的 下 拉 箭 头 可 以 看 到 各列 表 项 已 加 入 到 组 合 框 的 列 表 框 中。
  int&GetCurSel()&const&得到当前选项的索引,  失败则返回CB_ERR。  Int&SetCurSel(int&nSelect);  &如果函数调用成功,返回当前选项索引。如果nSelect的值超出范围,或为-1,则返回CB_ERR,并清除当前选项。  int&GetLBText(int&nIndex,Cstring&&rString&)&const  void&GetLBText(int&nIndex,&LPTSTR&lpszText)&const  &如果函数调用成功,则返回字符串的字节长度(不包括末尾的空字符)。如果nIndex并非合法的索引,则返回CB_ERR。  &nIndex----指定将获取文本选项的索引。  &LpszText---指定将用以存放所得文本的缓冲区指针。该缓冲区必须足够容纳要获取的文本及其结尾空字符。  rString:用于存放所的文本的Cstring对象  int&GetLBTextLen(&int&nIndex)&const  如果函数调用成功,则返回字符串的字节长度(不包括末尾的空字符)。如果nIndex并非合法的索引,则返回CB_ERR。  nIndex----指定将获取组合框选项的索引。  -----------------------------------------------------------  ComboBox(下拉框)的用法:  CComboBox&m_  CString&m_G  m_cob.GetLBText(m_cob.GetCurSel(),m_Getstring);//把选择的内容传给m_Getstring    void&CBaDialog::OnTimer(UINT&nIDEvent)&  {&//设置列表框的选择&当再一次选择时&重新设置按钮的属性  &//&TODO:&Add&your&message&handler&code&here&and/or&call&default  &CString&m_  &m_cob.GetLBText(m_cob.GetCurSel(),m_string);  &if(m_Getstring!=m_string)  &{  &GetDlgItem(IDC_STATR)-&EnableWindow(TRUE);  &this-&Enable(FALSE);  &}  &CDialog::OnTimer(nIDEvent);  }
&&最后修改于
请各位遵纪守法并注意语言文明共有 1321 人关注过本帖
标题:为什么一离开combox组合框,刚输入TEXT的值没有了。
等 级:新手上路
帖 子:191
结帖率:97.14%
&&已结贴√
&&问题点数:20&&回复次数:7&&&
为什么一离开combox组合框,刚输入TEXT的值没有了。
第一个问题:
&&我的COMBO的样式是:下拉组合框。数据类型为:6-字段。
如题,在TEXT中输入的数据,一离开就没有,如何解决?
第二个问题:
&&如何在TEXT中输入数据,使下拉框自动展开,根据我输入的数据进行查到相关联的数据上。
如:我输入“财政”,要求下拉框自动展开,焦点指向“扬中市财政局”上。
搜索更多相关主题的帖子:
等 级:贵宾
威 望:31
帖 子:545
专家分:2180
你在COMBO中输入的内容在combo所有item中搜索不到, 当然以空白显示了~~~
等 级:新手上路
帖 子:191
搜索不到就空白。
那不是就没办法录入新数据了?
那我想:是不是有一种方法将新数据添加到框中,再让它再搜索,会不会也会空白?
[ 本帖最后由 YZCZWCB 于
15:36 编辑 ]
来 自:辽宁
等 级:版主
威 望:15
帖 子:508
专家分:1725
必须把新数据添加到combo的item中,如果combo的类型是字段,则需把新数据加入到表的相应字段中,如果combo的类型是数组,则需把新数据追加入数组中。总之新数据必须是combo的一个成员,离开此控件后,新数据才会依然存在。
等 级:新手上路
帖 子:191
已加到item中,怎么还不显示呢?
combo的VALID中:
&&&SELECT Cgdwtmp
&&&APPEND BLANK
&&&Replace 采购单位 WITH ALLTRIM(this.DisplayValue)
再加以下,也不行呀?
&&&This.Value=This.List(x)
[ 本帖最后由 YZCZWCB 于
17:41 编辑 ]
来 自:尧的故乡
等 级:贵宾
威 望:44
帖 子:1843
专家分:4381
&&得分:15&
itemexists=.f.
sele Cgdwtmp
for i=1 to this.listcount&&
&&& if alltrim(this.list(i))==alltrim(this.text)
&&&&&&&&itemexists=.t.
&&&&&&&&exit
if !itemexists.and.!empty(this.text)
&&& appe blan
&&& repl&&Cgdwtmp.采购单位 with alltrim(this.text)
&&& this.list(i)=this.text
相互学习,互相交流,共同提高。
等 级:新手上路
帖 子:191
回复 6楼 qjbzjp
等 级:新手上路
帖 子:191
回复 6楼 qjbzjp
哈哈,终于摸出来了,在你的意见下,我做了以下调整:
第一、在combo的controlsource属性中置空,不要添加数据源
第二,在combo的 lostfocus中,在以下程序后,加两语。在这里对将值添加到字段中
itemexists=.f.
sele Cgdwtmp
for i=1 to this.listcount&&
&&& if alltrim(this.list(i))==alltrim(this.text)
&&&&&&&&itemexists=.t.
&&&&&&&&exit
if !itemexists.and.!empty(this.text)
&&& appe blan
&&& repl&&Cgdwtmp.采购单位 with alltrim(this.text)
&&& this.list(i)=this.text
*----在这里对将值添加到字段中
SELECT jzzk_lsk
REPLACE 采购单位 WITH ALLTRIM(this.DisplayValue)
以上能够正常显示了,并且能将值添加到字段中,但就是没想出原因,究竟是怎么回事?不知道谁能告诉我。
版权所有,并保留所有权利。
Powered by , Processed in 0.024270 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights ReservedVC/MFC 工具栏上动态添加组合框等控件的方法 - DoubleLi - 博客园
引言  工具条作为大多数标准的Windows应用的一个重要组成部分,使其成为促进人机界面友好的一个重要工具。通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开发环境所创建的应用程序框架中的工具条只是一个简单的按钮的集合,在功能上也仅仅是起到了菜单快捷方式的作用,而没有做到象VC、Word等的工具条那样,提供多种不同类型的标准控件如组合框、编辑框等。尤其是组合框在添加到工具条上后,可将原本需要在弹出对话框中完成的交互操作在工具条上就可以进行,从而在很大程度上改善了应用程序的界面友好程度。本文就此给出一种在普通应用程序的工具条上动态创建组合框、编辑框等标准控件的一般方法,并使应用程序能够响应由这些控件所触发的事件。  组合框的添加  组合框是添加到工具条中最常见的一种标准控件,弥补了列表框控件占用较大空间和编辑控件的数据输入烦琐等弊端,可以在工具条的有限区域内提供全部备选数据,用户一般情况下只需通过鼠标操作即可实现对数据的选取。因此,多数情况下都是需要向工具条添加组合框控件来改善程序的界面友好程度的。  由于是在工具条上动态创建组合框控件,而工具条又非标准客户区,因此动态创建过程就存在一定的困难。这里的处理方式是先在VC的资源视图中为工具条添加一个空按钮IDC_COMBOX,然后通过CToolBar类的SetButtonInfo()函数来对此空白按钮进行设置,其目的是为后面将要创建的组合框在工具条上占据一块空间,然后再通过CToolBar类的GetItemRect()函数得到经过修改后的按钮区域坐标,该坐标值在后面创建动态组合框时将指定在工具条的什么地方创建一个多大的组合框。经过这些准备工作后,接下来组合框在工具条上的动态创建过程则完全同在客户区中的处理,即以CComboBox类的Create()函数动态完成。  根据前面的思路不难写出实现代码。显然,这部分代码应当与工具条的创建代码一起添加到主框架类的创建函数OnCreate()中,下面结合注释给出部分关键代码:
&&// 工具条m_wndToolBar的创建代码&&//设置组合框的宽度,四个参数依次为控件在工具条中的索引号、ID号、风格、宽度&m_wndToolBar.SetButtonInfo(8, IDC_COMBOX, TBBS_SEPARATOR, 160 );&//得到组合框的位置&m_wndToolBar.GetItemRect(8, &rect);&//设置组合框的下拉高度&rect.bottom += 100;//创建组合框,四个参数依次为窗口风格、组合框位置、父窗口、ID号&m_combobox.Create(CBS_DROPDOWN|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL,rect, &m_wndToolBar, IDC_COMBOX);//在组合框中加入字符串&m_combobox.AddString("第一条记录");&m_combobox.AddString("第二条记录");&//选中第1条记录m_combobox.SetCurSel(0);
 对组合框事件的响应  经过上述编码,已经在工具条上空白按纽处动态创建出了一个组合框,但是仅仅创建出组合框还是不够的,为了能通过此组合框实现同用户的交互还必须编写相关代码,使其嫩够响应由组合框发出的事件消息。通常情况下对此类控件事件的响应处理是通过ClassWizard类向导来完成的,但由于此处是通过CComboBox类的Create()函数动态创建的,因此只能手动添加事件响应代码。对于组合框,其比较常用的两个事件消息是在选中一条记录时发出的CBN_SELCHANGE事件和在对组合框内文字进行编辑时产生的CBN_EDITCHANGE事件,下面就以这两个事件为例对其进行讲解,至于其他消息的处理过程可参照其进行。  首先在头文件中给出消息响应函数的声明:
//{{AFX_MSG(CAddToToolBarView)afx_msg void OnSelchangeCombo();//响应CBN_SELCHANGE消息的函数&afx_msg void OnEditchangeCombo();//响应CBN_EDITCHANGE消息的函数&//}}AFX_MSG然后在实现文件中完成消息映射:BEGIN_MESSAGE_MAP(CAddToToolBarView, CView)//{{AFX_MSG_MAP(CAddToToolBarView)ON_CBN_SELCHANGE(IDC_COMBOX, OnSelchangeCombo)&ON_CBN_EDITCHANGE(IDC_COMBOX, OnEditchangeCombo)&//}}AFX_MSG_MAPEND_MESSAGE_MAP()最后在消息处理函数中完成对事件的处理过程:void CAddToToolBarView::OnSelchangeCombo()&{CString&;CMainFrame* frame=(CMainFrame*)AfxGetMainWnd();&frame-&m_combobox.GetLBText(frame-&m_combobox.GetCurSel(), cs);&AfxMessageBox(cs);}&void CAddToToolBarView::OnEditchangeCombo()&{CMainFrame* frame=(CMainFrame*)AfxGetMainWnd();&CS&frame-&m_combobox.GetWindowText(cs);&}
  从上述处理过程可以看出,对于在工具条上动态创建控件所发出事件的响应处理过程同手工处理消息响应的过程是非常相似的。  对于其他控件的处理  前面关于组合框控件在工具条上动态创建的介绍是比较有代表性的,其他标准控件的处理过程与之相比并没有什么太大的变化,只是由于控件类别的不同而在空间的创建和对控件本身的处理过程上有所不同,其思路则是完全一致的。下面再给出编辑框在工具条的创建过程。通过对这两段代码的比较可以对控件在工具条的动态创建过程有一个更好的认识:
&&// 工具条m_wndToolBar的创建代码&&//设置组合框的宽度,四个参数依次为控件在工具条中的索引号、ID号、风格、宽度&m_wndToolBar.SetButtonInfo(9, IDC_EDIT, TBBS_SEPARATOR, 160 );&//得到组合框的位置&m_wndToolBar.GetItemRect(9, &rect);&//创建组合框,四个参数依次为窗口风格、组合框位置、父窗口、ID号&m_edit.Create (WS_VISIBLE|WS_TABSTOP,rect, &m_wndToolBar, IDC_EDIT);
  小结  本文主要通过利用VC的资源视图来先可视化编辑标准控件在工具条中的位置,然后再把标准控件作为工具条的一个子窗口进行动态创建。基于这种思想,可以很方便地在工具条中进行其他类似处理。本文所述代码在Windows 2000 Professional下,由Microsoft Visual C++ 6.0编译通过。关于EXT中combox清空选择后的内容的问题?各位大大帮小弟看看这个问题那~~
[问题点数:20分]
关于EXT中combox清空选择后的内容的问题?各位大大帮小弟看看这个问题那~~
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 vc组合框 的文章

 

随机推荐