用C++ Builder创建组合框

2016-02-19 17:00 0 1 收藏

今天图老师小编给大家精心推荐个用C++ Builder创建组合框教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - 编程语言 】

  本文介绍了在Win 98环境下,如何利用C++ Builder和Windows的Api函数创建满足用户特定需求的Combo框,并且通过Api函数扩充了C++ Builer标准组件的功能。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  在C++ Builder 下,其所带的Combo控件当内容发生变化时将调用OnChange的Combo1Change事件句柄。这时事件句柄将向系统发送一条基于Combo的CB_FINDSTRING消息,在消息中传递编辑字符串内容。该消息的SendMessage返回值是下拉框中第一个匹配条目的Index值,如果在下拉列表框中找到相匹配的条目,Comobo1Change句柄将发送一条基于Combo的CB_SETEDITSEL消息,该消息的参数确定从插入点到字符串结尾的部分将被选择。结果是被选中的部分是作为消息搜索结果显示在Combo的Text值中。

  具体实现:

  1、在进入C++ Builder 4.0以后,在窗体上画一个CmoboBox1,在Items中输入anlantic faloncs、China、Japanese、Amercia等字符串。

  2、创建ComboBox1的OnChange句柄,并填入如下代码:

  

  void _fastcall TForm1::ComboBox1Change(TObject *Sender)
  {
   String value = ComboBox1-Text ;
   if (lastkey == 'b' || lastkey == VK_DELETE)// 如果用户输入的是Delete键或是Tab键,搜索不进行//
    {
     lastkey = 0 ;
    return ;
    }
   lastkey = 0 ;
   if (ComboBox1-SelStart != value.Length ())//如果用户的光标在输入字符串的中间,搜索不进行//
     return ;
   int index = SendMessage (ComboBox1-Handle, CB_FINDSTRING, -1, (LPARAM) value.c_str ()) ;
   //在下来列表框寻找与用户输入字符串相匹配的字符串的索引值//
   if (index = 0)//如果索引值0//
    {
    ComboBox1-ItemIndex = index ;
    SendMessage (ComboBox1-Handle, CB_SETEDITSEL, 0, MAKELPARAM (value.Length (), -1)) ;//发送CB_SETEDITSEL消息//
    }
   }

  3、创建ComboBox1的KeyDown句柄,并填入如下代码:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  

   void _fastcall TForm1::ComboBox1KeyDown(TObject *Sender, WORD &Key,TShiftState Shift)
   {
   lastkey = Key ;//保存最后的键//
   }

  4、在头文件中增加如下变量:

  Private:WORD LastKey;

  5、编译运行。当用户输入在输入框中输入Chi时,便出现China整个字符串。

  以上方法在Pwin 98和C++Builder 4.0 Enterprise版中实现。

  有时想让控件实现一些不大可能的功能,试试Windows的Api 函数,或许它可以让你梦想成真。

来源:https://www.tulaoshi.com/n/20160219/1613848.html

延伸阅读
(4)利用C++Builder集成开发环境中的视图“View”菜单,可以显示或隐藏C++Builder集成开发环境中的不同的部分,也可以用于打开属于集成调试器的窗口。 “Project Manager”菜单项用于显示工程治理器。 “Object Inspector”菜单项用于显示对象监视器窗口。 “Alignment Palette”菜单项用于显示排版窗口。 “Component List”菜单...
13.对话框组件 96)问:怎样编写文件打开、保存等对话框? 答:C++Builder为我们提供了许多常用的对话框组件,这些对话框组件都放在组件模板的Dialogs选项卡中,例如Font,Color,Open和Print对话框。其中OpenDialog对话框组件最具有代表性,只要掌握了它的用法,那么你也就会使用其他的对话框组件了。 97)问:对话框组件...
53)问:能介绍一下TTreeNodes与TTreeNode? 答:在BCB中,树状视图的节点是通过TTreeNodes对象来管理的,通过这个对象可以对树状视图进行动态的增加、删除、插入、移动节点等操作。而每一个节点都是一个TTreeNode对象。 TTreeNode的主要属性和函数: Count:这个属性用来返回某个节点所拥有的子节点的数目。它不包括其子节...
  38)问:事件OnChange和OnScorll都可以描述滚动条的滚动事件,他们有什么区别吗?  答:事件OnChange和OnScorll是有区别的。只要属性Position的值发生改变,那么无论这个值是用户操作滚动条引起的还是通过程序修改的,都会产生OnChange事件。而OnScorll事件只有在用户操作滚动条时才发生。当用户操作滚动条时,首先发生OnScorll事件...
一直以来都想写一点为BCB初学者快速入门的东西,前不久写了几篇《闲谈BCB》想把自己学习BCB中如何来解决难点的方法说给大家,没想到被骂得不成样子。本想不写了,但觉得这些东西留下来能做什么呢?还是用另一种方法来重新演译我的思维吧,最近有些忙,那几篇没有写完的文章,我也会尽快写完的,至于《深入QR》,我想我一定会用另一种手法来...

经验教程

994

收藏

8
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部