精心編寫的WINDOWS程序顯示啟動注意事項稱之為濺射屏幕(splash screen)利用一點兒小小的內容即可給程序的顯示添加不少色彩
由於工程本身創建程序的主窗口且啟動濺射屏幕必須在創建主窗口之前出現所以工程文件必須創建自己的啟動屏幕這意味著用戶必須修改源代碼來創建工程文件而這通常在DELPHI編程中是不需要的下面的過程介紹了濺射屏幕的建立過程
開始一個新的工程將窗體命名為MainForm同時將其Caption屬性設置為SplashinDemo把這個工程保存在一個目錄中如CProjectsSplashin把MainForm的單元命名為Main把工程文件命名為Splashin
在MainForm中插入一個Button組件將Button的Name屬性改為ExitButton而將其Caption屬性改為Exit為ExitButton的OnClick事件創建一個處理器在過程的begin和end關鍵詞之間插入Close語句
選取File|New Form命令或者單擊New Form速度按鈕添加一個新的窗體
將這個窗體的Name屬性改變為SplashForm刪除其Caption屬性此外將其BorderStyle屬性改變為bsnone同時將BorderIcons下的三個子值設置為False
保存這個工程當Delphi提示讀者提供單元文件名時要確信當前目錄為正確的目錄為SplashForm的單元文件名輸入Splash
將SplashForm的Enabled屬性設置為False這裡不想讓用戶能夠給窗口提供鍵盤和鼠標命令這是極少見的情況之一在這個例子中我們想讓程序對SplashForm的顯示擁有完全的控制權
由於窗口沒有輪廓所以從Additional組件類中插入一個Bevel組件對象這有助於定義窗口的邊緣將Bevel的Align屬性設置為alClient同時將對象的Shape屬性改變為bsFrame將其Style屬性改變為bsRaised這些值由使用者來確定
在SplashForm中插入想使用的組件在這裡不要插入任何按鈕或者其他相互作用的控件應用程序本身顯示和去除啟動濺射對話框
選擇Project菜單高亮顯示Splash工程個彈出式菜單選擇Options命令在所產生的Project Options對話框中選取Forms頁標簽注意MainForm和SplashForm位於自動創建的窗體列表中高亮顯示每個窗體並單擊鼠標右按鈕來將其移動到Available窗體所有的Delphi窗體在運行時都是在內存中自動創建的這要消耗內存和系統資源在這樣的一個案例中程序是在運行時創建窗體的讀者應該從自動創建的列表中刪除窗體關閉ProjectOptions窗口
接下來修改工程的源代碼以便在顯示主窗口之前顯示濺射對話框這裡需要在工程文件中插入語句以便與Splashdpr工程文件相匹配工程源代碼如下
program Project;
uses
Forms
main in mainpas {MainForm}
splash in splashpas {SplashForm};
{$R *RES}
begin
SplashForm:=TSplashFormCreate(Application);
SplashFormShow;
SplashFormUpdate;
ApplicationCreateForm(TMainFormMainForm);
SplashFormClose;
ApplicationRun;
end
如果這時編譯和運行程序它就非常快速地顯示和去除啟動濺射對話框以至用戶可能沒機會見到它為了強迫對話框保持幾秒鐘的可見時間請選取程序的MainForm為窗體的OnCreate命令創建一個處理器在關鍵詞的前面添加一個名為stopTime的長整型變量在begin和end之間插入兩個語句一個為對Windows GetTickCount函數的調用來將stopTime設置為Windows已在運行的秒數另一個語句為while語句這個語句另外延遲秒鐘程序清單如下
unit main;
interface
uses
Windows Messages SysUtils Classes Graphics Controls Forms Dialogs
StdCtrls;
type
TMainForm = class(TForm)
Exitbutton: TButton;
procedure ExitbuttonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *DFM}
procedure TMainFormExitbuttonClick(Sender: TObject);
begin
close;
end;
procedure TMainFormFormCreate(Sender: TObject);
var
stopTime:LongInt;
begin
stopTime:=GetTickCount div ;
From:http://tw.wingwit.com/Article/program/Delphi/201401/30263.html