工作需要自己做一个控件,模仿combox,parent是Tedit,点击按钮出现下拉部分PopupCtrl,PopupCtrl继承TPanel。
PopupCtrl的parent是edit
PopupCtrl的createparams这样写的:
inherited createParams;
params.style:=ws_Popup or ws_border;
params.ExStyle:=Ws_Ex_ToolWindow;
问题:我要让PopupCtrl获得焦点,但是获得焦点后怎么点Edit也没用,点窗体也没用就是无法获得焦点。
高手怎样解决这个问题。
解决问题到这个帖子也给分
http://topic.csdn.net/u/20081118/13/5fabb1d4-8666-4e62-a154-1430b84fd88a.html

解决方案 »

  1.   

    看了前面和現在的帖子,你的設計思路有問題
    下拉部分的parent一定是edit?此部分的parent可以指向edit的parent。剩下的就是控制此部分的顯示位置問題
      

  2.   

    你要实现的功能是不是在输入的时候,Combobox自动拉开,类似查询的功能?如果是,你只需要用Delphi自带的控件就可以实现。具体做法:使用Win32页面下的TComboBoxEx,并将其AutoCompleteOptions属性中的acoAutoSuggest和acoAutoAppend设为True即可
      

  3.   

    我要实现的控件是要能查询、能够添加基本信息所以弹出部分要获得焦点,所以自己做。
    TComboBoxEx 我还没看
    我单步执行自己的代码看了一下,当PopupCtrl获得焦点后,就反复执行 winproc的SetFocus消息,消息也dispatch出去了,执行完了还会回到winProc里面。
    除了PopupCtrl能获得焦点,窗体上的其它控件无法获得焦点。
     Avan_Lau:你没看明白我要做控件的初衷! 
                PopupCtrl的parent设成edit的Parent没有什么区别,一样无法获得焦点
      

  4.   

    我现在不给PopupCtrl设置parent,用SetWindowPos来显示PopupCtrl,可以达到ComboBox下拉框的效果,但是问题:PopupCtrl无法显示里面的控件,控件确定都是可见的,但就是显示不出来,高手帮忙看下。
    代码不在这台电脑里,高手大体应该能明白吧!