大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> 程序开发 -> Delphi编程善用资源文件

Delphi编程善用资源文件

时间: 2021-07-31 作者:daque

林凌  资源是寄存在扩充名.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单位中均有证明在这边不加赘述。之上的两个例子不过资源文献的一点点运用,要真实的控制资源文献在步调安排中的宏大效率,还要靠本人在试验中连接的归纳。

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.