比如,我写的组件里有一个Panel,它的位置始终占整个组件的一半的大小,是不是在组件的内部处理WM_Size消息?我就是那样处理,不过始终要报错。请问各位高手该如何做呢?

解决方案 »

  1.   

    aa.panel.top:=0;
    aa.panel.width:=10;
    .....
    随便你控制
      

  2.   

    请问大哥:
      你说的代码是写在哪里呢?Paint方法里面还是直接处理WM_Size消息的过程里?
      

  3.   

    如果你用的基类是TControl, 那就重载Resize方法吧。
    procedure Resize; override;
    begin
      inherited;
      ... //你的代码
    end;
      

  4.   

    谢谢!
    如果基类是CustomPanel呢?还是重载Resize方法吗?
      

  5.   

    为什么不把panel的width和height设为form的对应值/2?
    var
       p_width,p_height:integer;
    begin
       p_width:=form1.width;
       p_height:=form2.height;
       form1.panel.width:=p_width;
       form2.panel.width:=p_height;
    end;
      

  6.   

    “如果基类是CustomPanel呢?还是重载Resize方法吗?”是!
      

  7.   

    是不是在组件的内部处理WM_Size消息?
    --------------------------
    是在这里处理的,不过为什么会出错,就要看你的代码了
    你有没有D5开发人员指南,第21章,里有一个TDDGButtonEdit,看一下就明白了。