私は他のどのプロジェクトにも簡単に実装できる小さな広告フォームをプログラムしたいと思います。 実際のプロジェクト/アプリが始まる前に広告フォームが表示されます。 - フォーム/ユニットを追加して、ほとんどすべてが、残りの面倒をメインフォームの前にフォームを追加
- 簡単に任意の手間をかけずに任意のプロジェクトに実装する:
いくつかの要件が満たされなければなりません。
- 広告フォームが正常にクローズされている(または要件が満たされている)後、マイアプリのMainFormを(Application.MainForm)は実行時に作成されなければならない
- のみ1単位/フォームが
これまでの私の進捗状況は以下のとおりです。
- 私はその後、私は、実際の広告フォームでmodalformを作成、隠されている空のメインフォーム(Application.MainForm)
- を作成 - 右modalresultに、無料私たち私は私のプロジェクトからすべての自動作成フォーム
- 私は(ソースを参照)、アプリケーションのメインフォームを含むいくつかのパラメータ、と私のプロジェクトのソースファイルで手順を開くを削除する必要があり、「メインアプリ」
- にlcomescreenと進み
- 残念ながら、私が代わりに一つだけのプロジェクトにすべてのユニット/フォームを追加する必要が
私がこれまで持っているものです(再帰的な経路問題を?):
プロジェクト出典:
program MyTestProgram;
uses
Vcl.Forms,
Windows,
uMainWindow in 'uMainWindow.pas' {Form1},
uEmptyForm in '..\AdProject\uEmptyForm.pas' {AdEmptyMainForm},
uWelcomeScreen in '..\AdProject\uWelcomeScreen.pas' {WelcomeScreen}; // shouldn't be here
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.Run;
LoadAdWindow('Title of my app', uMainWindow.TForm1, uMainWindow.Form1);
end.
EmptyForm単位:
unit uEmptyForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type
TAdEmptyMainForm = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
AdEmptyMainForm: TAdEmptyMainForm;
procedure LoadAdWindow (Appname: string; InstanceClass: TComponentClass; var Reference);
implementation
{$R *.dfm}
uses
uWelcomeScreen; // Has to be added to the project, otherwise it doesn't detect the unit in the same path as this unit
procedure LoadAdWindow (Appname: string; InstanceClass: TComponentClass; var Reference);
begin
Application.MainFormOnTaskbar := True;
Application.ShowMainForm := False;
Application.Title := Appname;
Application.CreateForm(TAdEmptyMainForm, AdEmptyMainForm);
with uWelcomeScreen.TWelcomeScreen.Create(Application.MainForm) do
begin
Caption := Appname;
if ShowModal <> 1337 then ExitProcess(0);
Free;
end;
Application.CreateForm(InstanceClass, Reference);
end;
end.
ようこそ画面が成功した後、アプリケーションが終了します。 これは正しい方法ですか? ご協力いただければ幸いです!
メインフォームの作成内でその広告フォームを呼び出すことができます。 – William
@ウィリアムなぜ私はそれ以前に考えなかったのですか? * facepalm *編集:追加のユニットはどうですか?フォーム/単位を区切ったままにしたいのですが、私はプロジェクトにすべてのフォームを追加する必要があります。ちょうど1ではなく –
なぜですか?他のプロジェクトに広告フォームを追加して同じロジックを実行することができます – William