如何让panel在程序启动之后即悬浮(100分)

  • 主题发起人 主题发起人 创意人生
  • 开始时间 开始时间

创意人生

Unregistered / Unconfirmed
GUEST, unregistred user!
我把panel1的DragMode属性设置为dmAutomatic,DragKind属性设置为dkDock,用鼠标拖动Panel1即可以使之悬浮。但目前我想在程序启动之后,即让Panel1悬浮,就象photoshop里面的工具栏目一样。谢谢。
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Panel1.ManualDock(nil);
end;
 
今天学到了一招,呵呵,挺好
 
好的,谢谢,接分。
另外,请问有什么好办法保存panel1的位置和大小信息,并且下次启动时再赋予panel1吗。
 
恩.....可以用流来保存信息,就和dfm文件一样
如果只是存位置大小....保存top left width height4个数就行了啊

var
FM:TFileStream;
begin
Fm:=TFileStream.Create('temp.dfm',fmCreate);
fm.writeComponent(panel1);
fm.Free;
end;
 
hs-kill:
如果只是存位置大小....保存top left width height4个数就行了啊.
=================================================================
我是只需要保存位置大小就可以了,panel1在悬浮之后,left始终为0,请赐教。
 
哦 当然,dock出来后panel被放在了一个新窗体里,你要取得panel1.Parent的top、left
width、height
 
hs-kill,thanks,没错是这样的。
不好意思,这样还有一个问题是我没有好的办法来保存这些参数到ini文件里,我目前是放在panel1的OnEndDock事件里,就是当鼠标停止拖动之后就保存一次,但假如我改变panel1大小,就并没有触发OnEndDock事件,所以也没有办法保存Width和Height属性。
而在Form_Main的Destroy时间里,不能调用panel1,可能这个时候panel1已经被销毁了。不知有什么好的办法。
 
在form的close事件里呢?

改变panel大小的时候会触发onresize事件,可以在这里保存
不过记得要先判断下其parent是否存在,也就是是否被dock出来
 
后退
顶部