DELPHI中:如何将一个原已存在的窗口替换为另一个窗口?比如:TComboBox,想将原来的下拉窗口替换为TTreeView,3Q

解决方案 »

  1.   

    就是说 本来 TComboBox的下拉框却被你代替为 TTreeView??那就动态显示<不需要动态创建也行>....然后你把则会个TTreeView的位置刚好放到下拉框的位置把其覆盖。。就是偷天换日了。
      

  2.   

    你看看 TComboBox的源代码,他的下拉框实际上就是一个窗口,
    你完全可以自己写一个新的控件。
      

  3.   

    pazee(耙子)(灵感点亮生活):
    不是的,TComboBox只是利用了WINDOWS的原‘COMBOBOX’控件,DELPHI只是利用消息对其控制,
    现我想将他的下拉框窗口换掉,不知应怎样?用SAP: SetWindowLong行吗?
      

  4.   

    你可以试试 用 SetWindowLong改变其窗口函数。。不过可能不行
      

  5.   

    新写个控件,里面用一个tedit,一个button做成combobox的样子
    然后用一个form里加一个treeview有一期程序员(前年的吧)上有这个控件的做法
      

  6.   

    potee(糯米) :
    这种的我旱有了
      

  7.   

    beyondtkl(大龙驹<弱水三K, 我取1bit>) :能不能将窗口一起换,而不只换窗口处理过程?3Q
      

  8.   

    想将TComboBox原来的下拉窗口替换为TTreeView,现在不知道怎样取得“原来的下拉窗口”的句柄以及怎样用自已创建TTreeView窗口将其替换?3Q
      

  9.   

    ComboBox的下拉框是窗口类,你看看Delphi的代码,我曾经尝试着改过,可行的。
    类似的CombiBoxEx 就更清楚了,你参照他完全可以做出来。
      

  10.   

    给个建议:
      用Edit+SpeedButton+TreeView不就能实现同样的功能吗,这比重写控件要简单多了吧!
      

  11.   

    pazee(耙子)(灵感点亮生活) :你是怎样改的?弄个代码来看,好吗? luke5678(奇异) : 用Edit+SpeedButton+TreeView旱就实现同样的功能,但这种方式不能姐又适应WIN9x,2000又适应XP,所以我在费这么大的劲
      

  12.   

    “这种方式不能姐又适应WIN9x,2000又适应XP,所以我在费这么大的劲”,什么意思?这个还有区别吗?楼主说来听听
      

  13.   

    主要是外观上,如果你试下就知道了在WIN9x,2000和XP下的区别
      

  14.   

    Edit+SpeedButton+TreeView
    如果真要适应各种外观,你可以使用ImageButton代替SpeedButton(根据不同操作系统环境改变图片),将Edit设置为平面外观,效果应该会好些