程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 資源文件在DELPHI中的使用

資源文件在DELPHI中的使用

編輯:Delphi
資源是存放在擴展名.RES的文件裡的二進制數據結構,在DELPHI中資源文件可以使用圖象編輯器來制作(IMAGEEDITOR),或者使用其他的工具。如:BORLAND公司提供的RADPACKFORDelphi中的RESOURCEWORKSHOP來創建。資源文件中通常存放的是應用程序可以隨時存取的一些對象,包括:ICON、CURSOR、BITMAP、FONT等近十種。大部分的資源在通常的情況下可以保留在磁盤當中,直到程序需要使用它們時才將其調入,可以大大的節省內存資源,同樣,資源文件也是可以共享的,即:多個程序可以共享一個資源文件,進而減少了在應用程序之間代碼重復的現象,使程序的代碼得到很大的優化,因此在應用程序中使用資源文件有獨立制作、方便、隨時修改而不需要對應用程序代碼做任何修改的好處。

一般來說,一個應用程序的所有資源都存放在一個RES文件裡,然後在Delphi進行編譯的階段將資源文件的內容與最終的EXE文件合並在一起,因此編譯後的RES文件並沒有什麼作用,僅僅提供用來查閱使用,在分發應用時不必把RES文件分發給最終用戶。當然,不同的資源可以分別放在不同的資源文件當中,而且資源文件越小調入內存的速度越快。在這裡還要說明的一點是:在修改了原來的資源文件之後,在原來編譯的EXE文件中加入的資源不會隨之而更新,只有在重新進行編譯以後,才能將新的資源加入到新的EXE文件當中去。

下面我們通過兩個例子來說明在Delphi中如何使用資源文件(在這裡我們不講述資源文件的制作方法)。

一、如何在Delphi中使用定制的光標。
在使用Delphi進行編程時,有一個很重要的對象──TSCREEN,它是用來管理和操縱運行時期屏幕的不可視構件。它的CURSOR屬性是用來指定各個不同的構件光標形狀,聲名為:

PROPERTYCURSORS[INDEX:INTEGER]:HCURSOR;
這個只讀的特性返回應用程序支持的光標組成的一個HCURSOR類型的數組,它存儲了屏幕上所有的鼠標光標的身份代碼(HCURSOR就是光標的HANDLE句柄),數組下標從0開始,在Delphi預定義了一些代表不同光標的常量,它的值是從0到-17,您可以直接指定程序使用的光標。如:

FORM1.CURSOR:=-3表示FORM1采用的光標是CRCROSS(十字)。

大家可能都會發現構件的CURSOR的屬性最多提供十八種常用的CURSOR值,這在很多的情況下是不夠的,如:當光標進入一個PANEL面板時光標的形狀為一只手,那麼PANEL的CURSOR就不能滿足這種要求,這時就需要我們自定義一個手的光標並將其賦給PANEL的CURSOR屬性。如何實現則可以按以下步驟進行:

使用資源文件編輯器(IMAGEEDITOR或者RESOURCEWORKSHOP)編寫資源文件。
定義一個光標常量,注意這個常量不能與Delphi中提供的光標常量相沖突。
在FORMCREATE事件中使用WindowsAPI當中的LOADCURSOR函數來載入自定義的CURSOR。
在程序中將自定義的CURSOR分配給PANEL的CURSOR屬性。
下面說明如何將自定義的一只手的鼠標光標賦給PANEL1的CURSOR屬性。首先使用IMAGEEDITOR建立一個HAND.RES的文件。之後按如下書寫程序代碼:

implementation
{$R*.DFM}
const
Crhand=2;

procedure TForm1.FormCreate(Sender:TObject);
begin
screen.cursors[crhand]:=loadcursor(Hinstance,'hand');
panel1.cursor:=crhand;
end;

除了編寫上面的代碼以外,我們還需要做的一項工作是將資源文件加入到項目文件當中去,編譯指令中的{$Rfilename}偽指令讓我們來增加資源文件,讓我們來看一看項目文件的代碼。

program PCUR;
uses
Forms,
HANDin'HAND.pas'{Form1};

{$R*.RES}//這裡的*意義為在程序編譯以後會產生一個與項目文件同名的資源文件,在這裡為PCUR.RES文件,這部分是自動產生的。

{$Rhand.res}//這部分是我們自己加入的自定義資源文件,這兩個資源文件(HAND.RES和//PCUR.RES中的資源都會附加在可執行文件PCUR.EXE的後面。

begin
Application.Initialize;
Application.CreateForm(TForm1,Form1);
Application.Run;
end.

二、資源文件在編寫動畫程序中的應用
上面的例子使用的是在資源文件中存儲的CURSOR資源,在下面的例子中我們將使用的是在資源文件中提供的ICON資源來編寫一個小小的動畫程序。在這裡動畫的產生是利用定時器在一定的時間間隔內產生TIMER事件將存儲在資源文件中的ICON依次的繪制在FORM的同一處而產生的。這時要用到畫布CANVAS的DRAW方法,其聲明如下:

procedure Draw(X,Y:Integer;Graphic:TGraphic);

在這個方法當中的參數GRAPHIC可以為:BITMAPS、ICONS、METAFILES。具體的實現方法為:建立DEMO.RES文件,其中含有名為ICON1—ICON6的ICON。並將DEMO.RES加到項目原代碼中去(如:上面例子的方法)。

動畫程序的具體代碼如下:

unit donghua;
interface
uses
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,ExtCtrls;

type
TForm1=class(TForm)
Image1:TImage;
Timer1:TTimer;
procedure FormCreate(S
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved