我想把一个窗体停靠在一个事先设计好的面板上,不知如何实现?
解决方案 »
- InstallShield 12 乱码问题?
- 难道只有强迫才可以吗?以前用c++builder6,好往 delphi转化吗?
- 大家讨论一下。为什么现在D弃用TServerSocket和TCLientSocket组件呢
- 菜鸟问题:我写的DLL返回值为何不正常?
- 简单问题,关于 TMaskEdit 的 EditMask 属性的设置问题,先到先得!
- 裸体跪求各路神仙,谁能给我一些服务端阻塞方式(ThreadBlocking)编程的资料或例程呀。。。
- 对vcl库底层机制一些不明白的地方2
- 基础问题,关于类的create和destory或free?
- 关于数据库连接方式的问题:是采用BDE,ADO还是DBExpress?
- !!!!!!Acrobat 5.0 中怎么使用金山词霸的屏幕取词?
- 对画图的疑惑,急,请大家帮忙!
- 如何将DBF的数据导入到Access中
在一起,融合后主窗口的Caption变成两个窗口的Caption相加。在主窗口form1中放置
两个Panel控件(panel1和panel2),一个Button控件(button1);另一个窗口form2为
空白窗口。具体属性设置如下: panel1:
align:alleft;
docksite:true;
usedockmanager:true;
panel2:
align:albottom;
docksite:true;
usemanager:true;
form2:
anchors:[aktop,akbottom,akleft,akright];
dragmode:dmautomatic;
dragkind:dkdock;
设置button1的onclick事件,对应的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Show;
a:=form1.caption;
b:=form2.caption;
end;
设置panel1和panel2的onundock事件,代码如下:
procedure TForm1.Panel1UnDock(Sender: TObject; Client: TControl; NewTarget: TWinControl; var Allow: Boolean); begin
form1.caption:=a;
form1.Refresh;
end;
设置panel1和panel2的ondockdrop事件,代码如下:
procedure TForm1.Panel1DockDrop(Sender:TObject; Source: TDragDockObject; X, Y: Integer);
begin
form1.Caption:=a+′,′+b;
form1.Refresh;
end;
其中a,b为String型变量,用以保存窗口的最初标题,在form1的接口处声明。
Form1: TForm1;
CurrentForm:tform;
implementationuses unit2,unit3;{$R *.dfm}procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if CurrentForm<>nil then
CurrentForm.Close;
if treeview1.Selected.SelectedIndex=1 then
begin
Application.CreateForm(TForm2,Form2);
CurrentForm := Form2;
P_frm.Width := CurrentForm.Width;
P_frm.height := CurrentForm.height;
CurrentForm.ManualDock(p_frm,nil,alLeft);
CurrentForm.Align := alClient;
CurrentForm.AutoSize := true;
CurrentForm.Show;
end
else if treeview1.Selected.SelectedIndex=2 then
begin
Application.CreateForm(TForm3,Form3);
CurrentForm := Form3;
P_frm.Width := CurrentForm.Width;
P_frm.height := CurrentForm.height;
CurrentForm.ManualDock(p_frm,nil,alLeft);
CurrentForm.Align := alClient;
CurrentForm.AutoSize := true;
CurrentForm.Show;
end;end;