---------- メインフォームのソース ----------
unit NewMainForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TNewStyleMainForm = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
NewStyleMainForm: TNewStyleMainForm;
implementation
{$R *.DFM}
procedure TNewStyleMainForm.FormCreate(Sender: TObject);
begin
Application.ShowMainForm := False; // メインフォームを非表示にする
end;
end.
---------- メインフォームのソース ----------
---------- サブフォームのソース ----------
unit NewSubForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TNewStyleForm = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
var
NewStyleForm: TNewStyleForm;
NotFirstForm: Boolean;
implementation
{$R *.DFM}
// フォームが最後に閉じられるフォームかチェック
function IsLastForm(Form: TForm): Boolean;
var i: Integer;
f: TForm;
begin
Result:= True;
for I := 0 to Screen.FormCount - 1 do begin
F := Screen.Forms[I];
if (f <> Form) and
f.Visible and
((f.ParentWindow = 0) or f.HandleAllocated or
not IsChild(f.Handle, f.ParentWindow)) then begin
Result := False;
Exit;
end;
end;
end;
procedure TNewStyleForm.CreateParams(var Params: TCreateParams);
begin
inherited;
if FormStyle in [fsNormal, fsStayOnTop] then
if BorderStyle in [bsSingle, bsSizeable] then begin
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; // タスクバーにボタン
Params.WndParent := 0; // タスクマネージャにアイコン
end;
end;
procedure TNewStyleForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if IsLastForm(Self) then Application.Terminate; // 最後のフォームを閉じるなら
// アプリケーションを終了
end;
procedure TNewStyleForm.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle,SW_HIDE); // アプリケーションウィンドウがタスクバーに
// 表示されるのを防ぐ
if not NotFirstForm then begin
NotFirstForm := True;
case CmdShow of // 最初に表示されるフォームは CmdShow に従う
SW_SHOWMINNOACTIVE: WindowState := wsMinimized;
SW_SHOWMAXIMIZED: WindowState := wsMaximized;
end;
end;
end;
end.
---------- サブフォームのソース ----------
|