靈活使用Delphi制作濺射屏幕
發(fā)表時間:2023-08-07 來源:明輝站整理相關軟件相關文章人氣:
[摘要]精心編寫的WINDOWS程序顯示啟動注意事項,稱之為濺射屏幕(splash screen)。利用一點兒小小的內(nèi)容,即可給程序的顯示添加不少色彩。 由于工程本身創(chuàng)建程序的主窗口,且啟動濺射屏幕必須...
精心編寫的WINDOWS程序顯示啟動注意事項,稱之為濺射屏幕(splash screen)。利用一點兒小小的內(nèi)容,即可給程序的顯示添加不少色彩。
由于工程本身創(chuàng)建程序的主窗口,且啟動濺射屏幕必須在創(chuàng)建主窗口之前出現(xiàn),所以工程文件必須創(chuàng)建自己的啟動屏幕。這意味著用戶必須修改源代碼來創(chuàng)建工程文件,而這通常在DELPHI編程中是不需要的。下面的過程介紹了濺射屏幕的建立過程。
1、開始一個新的工程。將窗體命名為MainForm,同時將其Caption屬性設置為SplashinDemo。把這個工程保存在一個目錄中,如C:ProjectsSplashin。把MainForm的單元命名為Main,把工程文件命名為Splashin。
2、在MainForm中插入一個Button組件。將Button的Name屬性改為ExitButton,而將其Caption屬性改為Exit。為ExitButton的OnClick事件創(chuàng)建一個處理器,在過程的begin和end關鍵詞之間插入Close;語句。
3、選取File New Form命令,或者單擊New Form速度按鈕。添加一個新的窗體。
4、將這個窗體的Name屬性改變?yōu)镾plashForm,刪除其Caption屬性。此外,將其BorderStyle屬性改變?yōu)閎snone,同時將BorderIcons下的三個子值設置為False。
5、保存這個工程。當Delphi提示讀者提供單元文件名時,要確信當前目錄為正確的目錄。為SplashForm的單元文件名輸入Splash。
6、將SplashForm的Enabled屬性設置為False。這里不想讓用戶能夠給窗口提供鍵盤和鼠標命令,這是極少見的情況之一。在這個例子中,我們想讓程序?qū)plashForm的顯示擁有完全的控制權。
7、由于窗口沒有輪廓,所以從Additional組件類中插入一個Bevel組件對象。這有助于定義窗口的邊緣。將Bevel1的Align屬性設置為alClient。同時,將對象的Shape屬性改變?yōu)閎sFrame,將其Style屬性改變?yōu)閎sRaised。這些值由使用者來確定。
8、在SplashForm中插入想使用的組件,在這里不要插入任何按鈕或者其他相互作用的控件。應用程序本身顯示和去除啟動濺射對話框。
9、選擇Project菜單。高亮顯示Splash工程個彈出式菜單。選擇Options命令。在所產(chǎn)生的Project Options對話框中,選取Forms頁標簽。注意,MainForm和SplashForm位于自動創(chuàng)建的窗體列表中。高亮顯示每個窗體并單擊鼠標右按鈕來將其移動到Available窗體。所有的Delphi窗體在運行時都是在內(nèi)存中自動創(chuàng)建的,這要消耗內(nèi)存和系統(tǒng)資源。在這樣的一個案例中,程序是在運行時創(chuàng)建窗體的,讀者應該從自動創(chuàng)建的列表中刪除窗體。關閉ProjectOptions窗口。
10、接下來,修改工程的源代碼,以便在顯示主窗口之前顯示濺射對話框。這里需要在工程文件中插入語句,以便與Splash.dpr工程文件相匹配。工程源代碼如下:
program Project3;
uses
Forms,
main in ‘main.pas‘ {MainForm},
splash in ‘splash.pas‘ {SplashForm};
{$R *.RES}
begin
SplashForm:=TSplashForm.Create(Application);
SplashForm.Show;
SplashForm.Update;
Application.CreateForm(TMainForm,MainForm);
SplashForm.Close;
Application.Run;
end.
11、如果這時編譯和運行程序,它就非?焖俚仫@示和去除啟動濺射對話框,以至用戶可能沒機會見到它。為了強迫對話框保持幾秒鐘的可見時間,請選取程序的MainForm。為窗體的OnCreate命令創(chuàng)建一個處理器。在關鍵詞的前面添加一個名為stopTime的長整型變量。在begin和end之間插入兩個語句:一個為對Windows GetTickCount函數(shù)的調(diào)用。來將stopTime設置為Windows已在運行的秒數(shù);另一個語句為while語句,這個語句另外延遲2秒鐘。程序清單如下:
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 TMainForm.ExitbuttonClick(Sender: TObject);
begin
close;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var
stopTime:LongInt;
begin
stopTime:=GetTickCount div 1000;
while ((GetTickCount div 1000)<(stopTime+2)) do
Sleep(1);
end;
end.
12、按F9編譯、運行程序。