程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 巧用Delphi制作濺射屏幕

巧用Delphi制作濺射屏幕

編輯:Delphi
    精心編寫的Windows程序顯示啟動注意事項,稱之為濺射屏幕(splash screen)。利用一點兒小小的內容,即可給程序的顯示添加不少色彩。

  由於工程本身創建程序的主窗口,且啟動濺射屏幕必須在創建主窗口之前出現,所以工程文件必須創建自己的啟動屏幕。這意味著用戶必須修改源代碼來創建工程文件,而這通常在Delphi編程中是不需要的。下面的過程介紹了濺射屏幕的建立過程。

  1、開始一個新的工程。將窗體命名為mainform,同時將其caption屬性設置為splashindemo。把這個工程保存在一個目錄中,如c:\projects\splashin。把mainform的單元命名為main,把工程文件命名為splashin。

  2、在mainform中插入一個button組件。將button的name屬性改為exitbutton,而將其caption屬性改為exit。為exitbutton的onclick事件創建一個處理器,在過程的begin和end關鍵詞之間插入close;語句。

  3、選取file new form命令,或者單擊new form速度按鈕。添加一個新的窗體。

  4、將這個窗體的name屬性改變為splashform,刪除其caption屬性。此外,將其borderstyle屬性改變為bsnone,同時將bordericons下的三個子值設置為false。

  5、保存這個工程。當Delphi提示讀者提供單元文件名時,要確信當前目錄為正確的目錄。為splashform的單元文件名輸入splash。

  6、將splashform的enabled屬性設置為false。這裡不想讓用戶能夠給窗口提供鍵盤和鼠標命令,這是極少見的情況之一。在這個例子中,我們想讓程序對splashform的顯示擁有完全的控制權。

  7、由於窗口沒有輪廓,所以從additional組件類中插入一個bevel組件對象。這有助於定義窗口的邊緣。將bevel1的align屬性設置為alclIEnt。同時,將對象的shape屬性改變為bsframe,將其style屬性改變為bsraised。這些值由使用者來確定。

  8、在splashform中插入想使用的組件,在這裡不要插入任何按鈕或者其他相互作用的控件。應用程序本身顯示和去除啟動濺射對話框。

  9、選擇project菜單。高亮顯示splash工程個彈出式菜單。選擇options命令。在所產生的project options對話框中,選取forms頁標簽。注意,mainform和splashform位於自動創建的窗體列表中。高亮顯示每個窗體並單擊鼠標右按鈕來將其移動到available窗體。所有的Delphi窗體在運行時都是在內存中自動創建的,這要消耗內存和系統資源。在這樣的一個案例中,程序是在運行時創建窗體的,讀者應該從自動創建的列表中刪除窗體。關閉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命令創建一個處理器。在關鍵詞的前面添加一個名為stoptime的長整型變量。在begin和end之間插入兩個語句:一個為對windows gettickcount函數的調用。來將stoptime設置為Windows已在運行的秒數;另一個語句為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編譯、運行程序。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved