读书人

用鼠标拖动只能改变控件width与height

发布时间: 2012-04-16 16:20:04 作者: rapoo

用鼠标拖动只能改变控件width与height大小的问题
情况描述:
form上有个panel,这个panel上有个pagectrol。panel的align为alBottom,pagectrol的align为alClient。目前实现了鼠标拖动panel改变其自身大小,存在的问题是:鼠标拖动panel改变其height时,pagectrol的height会保持充满panel(往top或者bottom拖 都没问题);鼠标拖动panel改变其width时,pagectrl不会充满panel(往left或者right拖时都有问题)
我的目标:
不管怎么拖panel,pagectrol都要充满panel。
现在是木有一点头绪!求各位大哥大姐赐教啊!
对了,实现鼠标拖动改变panel大小的代码是从妖哥的回复中收来的。如下:

C/C++ code
__fastcall   TForm1::TForm1(TComponent*   Owner)                :   TForm(Owner){        Panel1-> BevelInner   =   bvNone;        Panel1-> BevelOuter   =   bvNone;        ::SetWindowLong(Panel1-> Handle,   GWL_STYLE,                GetWindowLong(Panel1-> Handle,   GWL_STYLE)   |   WS_SIZEBOX);        ::MoveWindow(Panel1-> Handle,   Panel1-> Left,   Panel1-> Top,                          Panel1-> Width,   Panel1-> Height   +   1,   true);}//---------------------------------------void   __fastcall   TForm1::Panel1MouseDown(TObject   *Sender,            TMouseButton   Button,   TShiftState   Shift,   int   X,   int   Y){        if(Panel1-> Cursor   ==   crArrow   )        {                //释放原有鼠标捕捉状态,                //并同时送出鼠标单击位置等同于窗口标题栏可拖曳窗口的属性                ::ReleaseCapture();                SNDMSG(Panel1-> Handle,   WM_NCLBUTTONDOWN,   HTCAPTION,   0);    }}//---------------------------------------void   __fastcall   TForm1::Panel1MouseUp(TObject   *Sender,   TMouseButton   Button,            TShiftState   Shift,   int   X,   int   Y){Panel1-> Cursor   =   crArrow;}//---------------------------------------


[解决办法]
panel的align为alBottom,表示宽度跟窗口一样
你改为alNone,试下

附加一句,不是有专门的窗口分割控件

读书人网 >C++ Builder

热点推荐