六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

Delphi編程善用資源文件

[摘要]林凌  資源是存放在擴展名.RES的文件里的二進制數據結構,在DELPHI中資源文件可以使用圖象編輯器來制作(IMAGEEDITOR),或者使用其他的工具。如:BORLAND公司提供的RADPACK...
林凌

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

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

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

  1、如何在DELPHI中使用定制的光標。

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

  PROPERTY CURSORS[INDEX:INTEGER]:HCURSOR;

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

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

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

  使用資源文件編輯器(IMAGE EDITOR或者RESOURCE WORKSHOP)編寫資源文件。

  定義一個光標常量,注意這個常量不能與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.

  2、資源文件在編寫動畫程序中的應用

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

  procedureDraw(X,Y:Integer;Graphic:TGraphic);

  在這個方法當中的參數GRAPHIC可以為:BITMAPS、ICONS、METAFILES。具體的實現方法為:建立DEMO.RES文件,其中含有名為ICON1桰CON6的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(Sender:TObject);

  procedure Timer1Timer(Sender:TObject);

  private

  {Privatedeclarations}

  public

  {Publicdeclarations}

  end;

  var

  Form1:TForm1;

  implementation

  var

  wicon:array[0..5] of Ticon;

  //建立TICON類型的數組存儲ICON文件

  idx:integer;

  {$R*.DFM}

  procedure TForm1.FormCreate(Sender:TObject);

  var

  iconname:string;

  piconame:pchar;

  begin

  piconame:=stralloc(7);

  //建立PCHAR類型的字符串

  for idx:=0 to 5 do

  begin

  wicon[idx]:=ticon.create;//建立TICON型對象

  iconname:='icon'+inttostr(idx);

  strpcopy(piconame,iconname);

  //將STRING類型轉換成PCHAR類型

  wicon[idx].handle:=loadicon(hinstance,piconame);

  //調用WINDOWSAPI中的LOADICON函數

  //載入資源中的ICON

  end;

  strdispose(piconame);//PCHAR類型的刪除

  form1.canvas.draw(3,3,wicon[1]);

  //調用DRAW的方法在FORM上畫出ICON1

  idx:=1;

  form1.setbounds(0,0,100,100);

  //固定FORM的大小和位置

  end;

  procedure TForm1.Timer1Timer(Sender:TObject);

  //形成動畫的定時器事件

  begin

  idx:=idx+1;

  if idx=6 then idx:=1;

  form1.canvas.draw(3,3,wicon[0]);

  form1.canvas.draw(3,3,wicon[idx]);

  end;

  end.

  以上可以作為一個通用的動畫程序,我們只需要修改不同的ICON以及增加IDX的大小就可以編出不同的動畫應用(同樣在資源中可以有其他形式的圖形如:BITMAPS這時需要動態創建的是TBITMAPS對象而不是TICON對象)。在兩個例子中我們都用到了WINDOWSAPI函數,這些函數在WINDOWS單元中均有說明在這里不加贅述。以上的兩個例子只是資源文件的一點點應用,要真正的掌握資源文件在程序設計中的強大作用,還要靠自己在實踐中不斷的總結。


主站蜘蛛池模板: 色橹橹欧美在线观看视频高清免费 | 亚洲欧美日韩成人 | 婷婷操 | 日韩福利网 | 亚洲综合久久成人69 | 欧美资源在线观看 | 色橹橹高清视频在线播放 | 青春草网站 | 亚洲天堂一区 | 欧美一级在线观看播放 | 日韩特黄特色大片免费视频 | 伊人网综合在线观看 | 欧洲亚洲一区 | 羞羞漫画在线阅读页面漫画入口页面弹窗无限 | 婷婷啪啪 | 日韩视频精品在线 | 欧美一区不卡二区不卡三区 | 天天天天天天天操 | 午夜三级理论在线观看视频 | 亚洲国产成人久久综合一 | 亚洲国产欧美在线人成精品一区二区 | 日本爱爱视频 | 欧美综合国产 | 亚洲精品免费观看 | 亚洲影视在线 | 欧美怡红院免费全部视频 | 色猫咪av在线网址 | 五月天婷婷色综合 | 天天干在线免费视频 | 啪啪欧美 | 天天干天天干天天操 | 亚洲免费观看 | 最新欧美伦禁片在线观看 | 四虎在线影视在线影库 | 日本在线免费看片 | 欧美视频在线播放观看免费福利资源 | 视频日韩p影院永久免费 | 亚洲国产成人久久综合野外 | 日韩精品一区二三区中文 | 五月激情综合丁香色婷婷 | 日韩成人免费aa在线看 |