题:
我的程序如下:
其中:Panel_main:TPanel;,我想让所有窗体比如:Form2,form3等 在Panel_main显示,我现在可以,不过不会重叠,会排列在一起,如果我只要一个窗体,这样不方便,所以有没有办法,让窗体在Panel_main上显示,后一个打开窗体重叠 在前一个窗体,而不是排列在一起,窗体的设置也设了,不知道为什么。请高手指教,谢谢!
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, ToolWin, SUISideChannel;type
TForm1 = class(TForm)
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
Splitter1: TSplitter;
Panel_main: TPanel;
procedure Panel_mainConstrainedResize(Sender: TObject; var MinWidth,
MinHeight, MaxWidth, MaxHeight: Integer);
procedure Panel_mainMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel_mainUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses unit2,unit3;
{$R *.dfm}procedure TForm1.Panel_mainConstrainedResize(Sender: TObject; var MinWidth,
MinHeight, MaxWidth, MaxHeight: Integer);
begin
if Panel_main.DockClientCount > 0 then
Panel_main.Color :=$00DDDDDD
else
Panel_main.Color :=clTeal;
end;procedure TForm1.Panel_mainMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
I_temp:integer;
begin
if Panel_main.DockClientCount > 0 then
begin
Panel_main.Color :=$00DDDDDD;
for I_temp:=0 to Panel_main.DockClientCount -1 do
begin
if (Panel_main.DockClients[I_temp] as Tform).Showing then exit;
end;
Panel_main.DockClients[0].Show ;
end
else
Panel_main.Color :=clTeal;end;procedure TForm1.Panel_mainUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
begin
if newtarget<>sender then
ALLOW:=FALSE
else
Allow:=true;
end;procedure TForm1.ToolButton1Click(Sender: TObject);
begin
application.CreateForm(TForm2,Form2);
Form2.Dock(panel_main,BoundsRect);
Form2.show;
end;procedure TForm1.ToolButton2Click(Sender: TObject);
begin
application.CreateForm(TForm3,Form3);
Form3.Dock(panel_main,BoundsRect);
Form3.show;
end;procedure TForm1.ToolButton3Click(Sender: TObject);
var
I_temp:integer;
begin
if panel_main.DockClientCount=1 then exit; //只有一个窗口时退出
//以下程序可能还有问题
for I_temp:=0 to panel_main.DockClientCount -1 do
begin
(panel_main.DockClients[I_temp]as Tform).Show ;
//可能不需要下一句
//application.ProcessMessages ;
end;end;procedure TForm1.ToolButton4Click(Sender: TObject);
var
I_temp:integer;
begin
for I_temp:=0 to panel_main.DockClientCount -1 do
begin
if (panel_main.DockClients[I_temp] as Tform).Showing then
begin
(panel_main.DockClients[I_temp] as Tform).Close ;
end;
end;end;procedure TForm1.FormShow(Sender: TObject);
var
I_windows:integer;
B_havedata:boolean;
begin
if panel_main.DockClientCount > 0 then
begin
for I_windows:=0 to panel_main.DockClientCount -1 do
begin
if panel_main.DockClients[I_windows].Visible then
begin
B_havedata:=false;
try
if (((panel_main.DockClients[I_windows] as Tform).Controls[2] as Tpanel).Controls[0] as Tpanel).Controls[1].Name='DBG_data' then
B_havedata:=true;
except
end;
end;
end;
end;
end;end.
我的程序如下:
其中:Panel_main:TPanel;,我想让所有窗体比如:Form2,form3等 在Panel_main显示,我现在可以,不过不会重叠,会排列在一起,如果我只要一个窗体,这样不方便,所以有没有办法,让窗体在Panel_main上显示,后一个打开窗体重叠 在前一个窗体,而不是排列在一起,窗体的设置也设了,不知道为什么。请高手指教,谢谢!
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, ToolWin, SUISideChannel;type
TForm1 = class(TForm)
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
Splitter1: TSplitter;
Panel_main: TPanel;
procedure Panel_mainConstrainedResize(Sender: TObject; var MinWidth,
MinHeight, MaxWidth, MaxHeight: Integer);
procedure Panel_mainMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel_mainUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses unit2,unit3;
{$R *.dfm}procedure TForm1.Panel_mainConstrainedResize(Sender: TObject; var MinWidth,
MinHeight, MaxWidth, MaxHeight: Integer);
begin
if Panel_main.DockClientCount > 0 then
Panel_main.Color :=$00DDDDDD
else
Panel_main.Color :=clTeal;
end;procedure TForm1.Panel_mainMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
I_temp:integer;
begin
if Panel_main.DockClientCount > 0 then
begin
Panel_main.Color :=$00DDDDDD;
for I_temp:=0 to Panel_main.DockClientCount -1 do
begin
if (Panel_main.DockClients[I_temp] as Tform).Showing then exit;
end;
Panel_main.DockClients[0].Show ;
end
else
Panel_main.Color :=clTeal;end;procedure TForm1.Panel_mainUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
begin
if newtarget<>sender then
ALLOW:=FALSE
else
Allow:=true;
end;procedure TForm1.ToolButton1Click(Sender: TObject);
begin
application.CreateForm(TForm2,Form2);
Form2.Dock(panel_main,BoundsRect);
Form2.show;
end;procedure TForm1.ToolButton2Click(Sender: TObject);
begin
application.CreateForm(TForm3,Form3);
Form3.Dock(panel_main,BoundsRect);
Form3.show;
end;procedure TForm1.ToolButton3Click(Sender: TObject);
var
I_temp:integer;
begin
if panel_main.DockClientCount=1 then exit; //只有一个窗口时退出
//以下程序可能还有问题
for I_temp:=0 to panel_main.DockClientCount -1 do
begin
(panel_main.DockClients[I_temp]as Tform).Show ;
//可能不需要下一句
//application.ProcessMessages ;
end;end;procedure TForm1.ToolButton4Click(Sender: TObject);
var
I_temp:integer;
begin
for I_temp:=0 to panel_main.DockClientCount -1 do
begin
if (panel_main.DockClients[I_temp] as Tform).Showing then
begin
(panel_main.DockClients[I_temp] as Tform).Close ;
end;
end;end;procedure TForm1.FormShow(Sender: TObject);
var
I_windows:integer;
B_havedata:boolean;
begin
if panel_main.DockClientCount > 0 then
begin
for I_windows:=0 to panel_main.DockClientCount -1 do
begin
if panel_main.DockClients[I_windows].Visible then
begin
B_havedata:=false;
try
if (((panel_main.DockClients[I_windows] as Tform).Controls[2] as Tpanel).Controls[0] as Tpanel).Controls[1].Name='DBG_data' then
B_havedata:=true;
except
end;
end;
end;
end;
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货