วันพุธที่ 21 มีนาคม พ.ศ. 2555

show a form without focusing

...show a form without focusing



//in TCustomForm class,in protected section add

    
procedure ShowParam(var param : integer);dynamic;
    {
    this procedure call when form should be show,
    now you should override this method and write your option for
    ShowWindow API. see the example
    }
    
function InShowFocus : boolean ;dynamic;
    //this function determine that after show the Form , focus on it or no.

//and it's code is

procedure TCustomForm.ShowParam(var param: Integer);
const
  
ShowCommands: array[TWindowState] of Integer =
    (SW_SHOWNORMAL, SW_SHOWMINNOACTIVE, SW_SHOWMAXIMIZED);
begin
  
param := ShowCommands[FWindowState];
end;

function TCustomForm.InShowFocus: Boolean;
begin
  
Result := True;
end;
//-------------------------------------------------------
//now in your class you can use from themunit Unit2;

interface

uses
  
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls;

type
  
TForm2 = class(TForm)
  private
    
{ Private declarations }
  
protected
    procedure 
ShowParam(var param: Integer); override;
    function InShowFocus: Boolean; override;
  public
    
{ Public declarations }
  
end;

var
  
Form2: TForm2;

implementation

{$R *.dfm}

{ TForm2 }

function TForm2.InShowFocus: Boolean;
begin
  
Result := False;
end;

procedure TForm2.ShowParam(var param: Integer);
begin
  inherited
;
  param := SW_SHOWNOACTIVATE;
end;

end.

ไม่มีความคิดเห็น:

แสดงความคิดเห็น