哪位大虾能给讲讲combobox控件的组成,其中的显示文字的部分是个edit,右边的带三角形的按钮是什么?还有下拉框中的内容dropdown 出来的列表是什么类型?
我研究vcl源码半天也没看出来combobox中的edit,是什么时候创建的。
麻烦高手给我讲讲,谢谢了

解决方案 »

  1.   

    combobox是Windows的标准控件,DEPHI只是把它封装成VCL控件,不是分开成edit\三角形的按钮\下拉框中等的。
      

  2.   

    重点看看TCustomCombo为个类的实现代码。
      

  3.   

    这里面有
        FEditHandle: HWnd;
        FListHandle: HWnd;
        FDropHandle: HWnd;
    三个句柄和
        FEditInstance: Pointer;
        FDefEditProc: Pointer;
        FListInstance: Pointer;
        FDefListProc: Pointer;
    四个指针,从命名和实例代码当中都可以看出,有两个是指向类似WndProc的指针,说明有两个分支Instance,一个大致相当于Edit的功能,另一个则相当于ListBox的功能。然后跟着FEditInstance和FDefEditProc相关的代码就不难明白了。
      

  4.   

    to nhconch(天蝎蝴蝶):
    如果照你所说是封装windows标准控件,哪vcl是怎么封装的呢?
    沿着Tcombobox,及其父类的继承关系向上找,都是一层层继承vcl类的,最终的父类为Tobject,从什么地方可以看出是封装 windows标准控件呢?
      

  5.   

    还没仔细想过这个问题
    好象ComboBox是从TCustomComboBox继承过来的