怎样使一主Form保持在最底层,100分,够了吧?哈哈...(100分)

  • 主题发起人 主题发起人 里斯
  • 开始时间 开始时间

里斯

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样使主Form保持在最底层
其他Form的FormStyle是fsNormal

 
利用MDI就可以了
 
该回正常状态
SetWindowPos(Form1.handle, HWND_NOTOPMOST,
Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);
 
同意用MDi
 
虽然我不知道这有什么用,下列方法可行
SetWindowPos(Form1.handle, HWND_BOTTOM,Form1.Left, Form1.Top, Form1.Width, Form1.Height,0);
 
各们大侠注意,“[red]其他Form的FormStyle是fsNormal[/red]”
MDI只能在他子表单的下方。
 
用api函数setwindowspos
 
to yy2001,怎么用,我试了一下好象不行,若要设置Form1在底层,Form2没有限制,
目的是要让Form1始终在Form2的下面,象MDI一样。
 
哈哈 简单 当在打开主Form后 再打开其他Form时 用ShowModal而不要用Show.
 
To:填海精卫
ShowModal只能访问这个Form
 
你想让几个Form同时访问?不如在主form上放一个TScrollBox.在生成新Form时把其
Parent 和 Owner 设为 ScrollBox。
 
SetWindowPos( Form1.Handle,
HWND_BOTTOM,
0,0,0,0,
SWP_NOMOVE or SWP_NOSIZE);
 
可以做到
原理:使用API函数SetWindowPos将其余的窗口设为永在顶层窗口。这样,这些附属窗口就会浮在
主窗口之上。
代码:
在Form1上放置六个Button,再在工程里添加六个窗口
//*********************************************************************
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
uses Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
form3.show;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
form4.show;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
form5.show;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
form6.show;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
form7.show;
end;
end.
//**************************************************
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormShow(Sender: TObject);
begin
SetWindowPos(form2.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)
end;
end.
//*******************************************************************
其余窗口代码类似于Form2.
这些窗口的FormStyle均为fsNormal
以上代码在Delphi 6 WindowsXP中运行通过。
 
这个问题不再讨论,散分
 

Similar threads

后退
顶部