一个关于MDI的问题,很愁人!(100分)

  • 主题发起人 主题发起人 bdx
  • 开始时间 开始时间
B

bdx

Unregistered / Unconfirmed
GUEST, unregistred user!
我制作了一个MDI程序含有两个子窗体,其中一个子窗体处于最大化状态,要求按ESC键后
当前处于最大化状态的子窗体隐去而另一个马上最大化覆盖当前的子窗体。
目前的问题是:
两个窗体在切换过程中,由于windows的特效,可以很清楚看到窗体的放大过程。而我希望
窗体的放大过程越快越好,看不到放大过程最好,哪位有办法?
 
你可以都最大化,不用最小化啊,因为反正同一时间只有一个最大化窗口打开吗,
当打开另一个只要使另一个显示在前面好了。
 
同意,两个都最大化,当打开另一个只要使另一个显示在前面好了
 
试试先show 后hide
 
try this code:

procedure TForm2.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = char(VK_ESCAPE) then
begin
form3.show;
form3.WindowState := wsMaximized;
end;
end;

procedure TForm3.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = char(VK_ESCAPE) then
begin
form2.show;
form2.WindowState := wsMaximized;
end;
end;
 
根本就用不着把窗体最小化,你需要显示哪个窗体的时候就显示该窗体,不需要的时候就
隐藏该窗体!!!!!!!解这么简单!!!!
 
代码什么样的?我怎么看不到你所说的问题。
 
从 Forms.pas 中拷过来的:
procedure SetAnimation(Value: Boolean);
var
Info: TAnimationInfo;
begin
Info.cbSize := SizeOf(TAnimationInfo);
BOOL(Info.iMinAnimate) := Value;
SystemParametersInfo(SPI_SETANIMATION, SizeOf(Info), @Info, 0);
end;

procedure ShowWinNoAnimate(Handle: HWnd; CmdShow: Integer);
var
Animation: Boolean;
begin
Animation := GetAnimation;
if Animation then SetAnimation(False);
ShowWindow(Handle, CmdShow);
if Animation then SetAnimation(True);
end;
使用:
使子窗口最大化: ShowWinNoAnimate(MDIChildForm1.Handle, SW_MAXIMIZE);
使子窗口最小化: ShowWinNoAnimate(MDIChildForm1.Handle, SW_MINIMIZE);
 
procedure TMain01Win.FormActivate(Sender: TObject);
begin
WindowState := wsMaximized;
end;
 
使用MDI好像是有这方面的问题,暂时没有找到好的解决办法
 
多人接受答案了。
 
后退
顶部