当点击菜单show出子窗体的时候,如何利用LockWindowUpdate()这个函数锁定窗体。
以下是点击菜单时的代码:
procedure TMainForm.N1Click(Sender: TObject);
begin
  if not Assigned(fmMaintenace) then
  begin
    fmMaintenace := TfmMaintenace.Create(nil);
    fmMaintenace.Show;
  end
  else
    fmMaintenace.BringToFront;
  end;

解决方案 »

  1.   

    新建一工程,在Form1上放置一Panel控件,在Panel中放置一Memo控件,下面是代码
    --------------------------------------------------------------------------------
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls, ComCtrls;type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Memo1: TMemo;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure WM_SIZE(var Msg: TMessage); message WM_SIZE;
        procedure WMSysCommand(var Msg: TMessage); Message WM_SYSCOMMAND;
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.WMSysCommand(var Msg: TMessage);
    begin
      if Msg.WParam = SC_MAXIMIZE then
      begin
        LockWindowUpdate(Handle);
        Panel1.Align := alNone;
        Memo1.Align := alNone;
      end;
      inherited;
    end;procedure TForm1.WM_SIZE(var Msg: TMessage);
    begin
      if Msg.WParam = SIZE_MAXIMIZED then
      begin
        Panel1.Align := alClient;
        Memo1.Align := alClient;
        LockWindowUpdate(0);
      end;
      inherited;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Panel1.Align := alClient;
      Panel1.Color := clGray; //这样做是为了能看清楚一些,这还仅仅是一个小例子,如果Form上控件
                              //众多,则闪烁十分明显
      Memo1.Align := alClient;
    end;end.