Delphi常用技巧.doc_第1页
Delphi常用技巧.doc_第2页
Delphi常用技巧.doc_第3页
Delphi常用技巧.doc_第4页
Delphi常用技巧.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Delphi常用技巧在网上行走时,经常会看到弹出的桌面小窗体,有时做广告,有时向你致以节日的问候;人们称其为桌面小精灵;有的桌面小精灵会自动移动,有的固定在屏幕的某一角落,动画闪烁,煞是迷人。本人用Delphi制作了一款桌面小精灵,愿与大家共享。桌面小精灵的实现功能:当运行时,在屏幕的左下角显示一无边框、无标题栏的小窗体,并自动向屏幕的右上角移动,窗体上的小精灵可爱的马先生,一会跃起,高呼“马 到成功!”,一会含情脉脉地向你招手“再见”;同时,还不断地闪烁显示当前时间,时刻提醒你抓紧时间呦!当你嫌它碍事时,你可以按下鼠标左键,将它拖到任意位置。如果你厌烦它不停移动,你可以双击鼠标左键,它会老老实实地呆在原地不动,只要你用鼠标轻轻一点,它又会高高兴兴地上路,当你单击“再见”时,桌面小精灵就会消失,你不想一试身手吗?请跟我来!运行后效果图生成一窗体,设置窗体属性如下:Name属性为Form1,BorderStyle属性为bsNone,FormStyle属性为StyOnTop,Height属性值240,Width属性值209。窗体上分别添加组件,设置属性如下:(1)添加两个Image组件,Name属性分别设为Image1、Image2,Align属性均设为alClient (以使Image组件充满整个窗体),Image1的Enabled为False,Image2的Enabled为True,然后通过Picture属性为Image1、Image2添加图片(适合的图片格式:BMP、JPG )。(2)在Image上再添加两个Timer组件,Name属性分别为Timer1、Timer2,Enabled属性均为True,Interval属性均为1000毫秒。(3)在Image上再添加一个Label组件,Name:=Label1,Caption:=“马到成功!”,Enabled:=True,Font属性为“华文行楷,粗斜体,三号字,红色”(根据你的图片设置适当的字体、字号、字体颜色)。(4)在Image上再添加一个Panel组件,设置属性:Name:=Panel1。Caption:=时间;Color:=clBlue ; Font设为:华文彩云、三号、黄色。添加源代码如下:/用Timer1控制两图片、标签及时间的显示procedure TForm1.Timer1Timer(Sender: TObject);beginif (form1.Image1.Visible =true) thenbeginImage1.Visible :=false ;Image2.Visible :=true ;Label1.Visible :=false;panel1.Caption :=再见!;endelsebeginImage1.Visible :=true;Image2.Visible :=false;Label1.visible:=true;panel1.caption :=timetostr(time();end;end;/用Timer2控制窗体的移动procedure TForm1.Timer2Timer(Sender: TObject); begin if form1.Left>=750 thenbeginform1.Top :=350;form1.Left:=0;endelseform1.Left:=form1.Left+5;form1.Top :=form1.Top -3;end;procedure TForm1.Panel1Click(Sender: TObject);beginclose;end;/实现用鼠标点住窗体的任意位置,拖动窗体procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);beginReleaseCapture;Perform(WM_SYSCOMMAND,0)end;/设置窗体的初始化位置procedure TForm1.FormCreate(Sender: TObject);beginleft:=0;top:=350;end;/单击Image1、Image2时,Timer2重新开始工作,实现窗体的再移动procedure TForm1.Image1Click(Sender: TObject);begintimer2.Enabled :=true;end;procedure TForm1.Image2Click(Sender: TObject);begintimer2.Enabled :=true;end;/双击Image1、Image2时,Timer2停止工作,实现窗体的固定不动效果procedure TForm1.Image1DblClick(Sender: TObject);begintimer2.Enabled :=false;end;procedure TForm1.Image2DblClick(Sender: TObject);begintimer2.Enabled :=false;end;end.用Delphi 50编写在线播放器 -对于RealPlayer网络播放软件大家一定不会陌生。其强大的网络视频、音频等媒体播放功能让人很是羡慕。如果自己也能做一个,心里肯定感觉不错。RealPlayer软件本身有一个RealPlayer插件。由于它采用的是Active技术,这就为我们创建自己的RealPlayer播放器创造了条件。因为应用ActiveX技术做成的插件,可以很方便地应用到任何支持ActiveX技术的开发语言中,并作为一个普通组件加以使用。我们在下面 就以Delphi 5.0为例,制作一个属于自己的RealPlayer网络影视播放器。添加RealPlayerActive插件到组件栏ActiveX项中,以备使用。选择主菜单ComponentImport ActiveX Control项,将出现一个Import ActiveX窗口,该窗口的上部选择列表中存放了本计算机系统中已经拥有的各种Active插件。如果你安装了RealPlayer软件,就从中找到RealPlayer ActiveX Control Library一项并选定,然后选择窗口下部的Install.按钮,出现Install窗口,保持默认值,选择OK,即可添加完成。回到组件栏ActiveX项中,你会发现RealPlayer软件的图标。这样,RealPlayer就可当作一个普通组件使用。图1 RealPlayer Active新建一个Delphi应用程序,然后在窗口中把组件栏ActiveX项中的RealPlayer组件拉入窗口中,命名为RealAudio1,出现一个简化的RealPlayer界面。但它只有控制界面,没有视频图像界面。这不要紧,在RealPlayer组件的Controls属性中加入“ImageWindow”,然后点击下面的窗口,视频图像开始出现,在“ImageWindow”后接着添加“ControlPanel”属性值(用逗号分开)。这样控制界面出现,还可以在后面继续添加“Statuabar”值,出现状态条。将RealPlayer组件拉动到适当大小,在窗口中添加一命令按钮并命名为Play。然后在按钮的单击事件中添加以下代码:procedure TForm1.Button1Click(Sender: TObject);beginRealAudio1.source= c:A.rm ; /播放的电影源。RealAudio1.doplay; /开始播放电影end;一个RealPlayer播放器就做完了,简单吧!不过本文只是简单介绍RealPlayer组件,它还拥有许多属性和方法,诸君可以自由发挥想像力,设计一个更加完善的播放器。用Delphi再现Windows纸牌游戏 -使用过Windows 98的用户对其自带的纸牌游戏一定不会陌生,在您的鼠标点击、拖动等操作之下,扑克牌上下翻飞、腾挪组合;在您不经意的操作中,其实您已经触发了一系列预设事件,这些事件过程的响应最终让您体会到成功的喜悦和失败的痛苦。但您想不想体会一下借助于某种开发工具自己去编程实现的感觉呢,充分体会Delphi的事件驱动机制,这将是另外一番享受,并且理解了事件驱动机制后,再作其他更深层次的开发,这样您会变得更加得心应手。一、单张牌的实现Delphi编程环境中提供了图形按钮控件,设计时采用了一个按钮就是一张牌,我们可以将选定的图形(如BMP图形,大小合适)作为其背面和前面。在Delphi中,图形的装入显示的方法为:图形按钮.glyph.loadfromfile(图形文件路径+文件名)在设计中可以事先准备52张扑克正面图形和几张背景图形,用控件(控件数组)动态生成的方法(Create(Self)逐一调用。二、关于图形按钮在游戏中要对扑克牌进行正确的操作还要借助在其图形按钮上增加几个属性(如图1) 图1HS:标识一张牌的花色(方块、黑桃、红心或梅花)。DS:标识一张牌的点数(1-13即A-K)。HB:标识一张牌的黑色和红色。Over:标识本张牌上面是否有牌压着。Look:标识本张牌的正面或背面。Area:指定本张牌的操作区域,在设计中将各操作区定义为如图2所示各操作区。发牌源区(Source):即左上角两叠牌。 回归区(Home):即右上角四门回收处。操作拖放区(Operate):即下排(7叠)主要拖放区。PTR属性:用于支持多张扑克牌的拖动操作,为一指针,指向单张牌。笔者用此属性来实现一叠牌的拉单向链表。也可以再加一属性拉双向链表方便操作。三、扑克牌的操作扑克牌的操作多数是通过Delphi提供的事件驱动编程实现的,开始一个拖动牌操作:Delphi是从OnMouseDown事件开始。请参考OnMouseDown模块。接受/拒绝被拖动的牌:这里由OnDragOver事件决定,要接受被拖动的牌,必须把图形按钮的Accept属性设为TRUE。释放处理被拖动的牌:这里由EndDrag和DragDrop事件被激发来处理,这里选用了DragDrop事件来处理,因为该事件只有当DragOver事件的Accept设为TRUE时,只有这个事件被激发。图2另外,扑克牌的位置改动是通过Top和Left属性实现的。 这里在设计时,52个控件共享Click、OnMouseDown、OnDragOver、OnDragDrop事件。在运行时是动态赋予的。程序中如下例赋予事件代码:Mainpki.OnMouseDown:=pk1mousedown;Mainpki.OnDragOver:=pk1DragOver;Mainpki.OnDragDrop:=pk1Dragdrop;Mainpki.OnClick:=pk1Click;四、程序的实现程序开始时先动态生成52张牌(图形按钮),赋予花色、点数、正面图形等,接着利用Delphi提供的随机函数RANDOM(), 将52张牌次序打乱,完成洗牌。接着开始发牌,动态赋予事件代码。之后由接受用户选择进入游戏,游戏处理过程实际上就是相应事件代码在运作。游戏调试通过后,笔者还查阅了其他相关资料,有的系统还提供了专门的关于扑克牌方面类库或API函数供程序员直接调用,减少了程序员的设计复杂性,有兴趣的读者也可以不妨一试。在Delphi里播放Flash动画 -在Flash大行其道的今天,是否想过在你的程序里也加入几幅Flash动画炫一炫呢?OK,心动不如行动,让我们现在就开始吧!首先,你的机器里要装有Flash播放软件(你的IE能显示Flash)。IE之所以能显示Flash是安装了由Macromedia公司提供的sw#3/introduction/focus/flash.shtml target=_blank>flash3#.ocx控件,我们可以在Win98的SystemMacromed Flash中或在W in2000中的System32 MacromedFlash中找到它。ActiveX控件在Windows里是通用的,Delphi也同样支持。运行Delphi后,选择选单ComponentImport ActiveX Control,找到SWFlash.OCX 文件进行安装。安装完成后,ActiveX面板里出现TShockwaveFlash控件,这是Delphi对SWFlash.OCX的封装,现在我们就可以用这个控件来播放Flash了。拖一个Flash过来,放在Form上,指定其Movie属性为d: est.SWF,并按F9键加以运行即可。怎么样,运行效果不错吧?下面,笔者将具体介绍TShockwaveFlash主要属性、方法和事件,以便于读者开发。TShockwaveFlash主要属性如下:ReadyState:读一个flash文件时的状态,其中包括0=Loading、1=Uninitialized、2=Loaded、3=Interactive和4=Complete;TotalFrames:总帧数,只有当ReadyState = 4时才能访问该属性;FrameNum:当前播放的帧;Playing:播放或暂停一个flash;Quality:指定当前渲染的质量,包括0=Low, 1=High、2=AutoLow、3=AutoHigh;ScaleMode:缩放模式,0=ShowAll、1= NoBorder、2 = ExactFit;AlignMode:对齐模式,Left=+1、Right=+2、Top=+4、Bottom=+8;BackgroundColor:背景色,-1为默认颜色;Loop:是否循环;Movie:指定播放的flash文件路径,可以为一个URL。TShockwaveFlash主要方法如下:Play():开始播放动画;Stop();停止播放动画;Back();播放前一帧动画;Forward():播放后一帧动画;Rewind():播放第一帧动画;SetZoomRect(int left, int top, int right, int bottom):设置缩放的区域;Zoom(int percent):按百分比缩放;Pan(int x, int y, int mode):缩放播放面板,其中模式0为按像数、1为按窗口百分比。TShockwaveFlash主要事件如下:OnProgress(int percent):读取一个flash时触发;OnReadyStateChange(int state):状态改变时触发。states的值可以为0=Loading、1=Uninitialized、2=Loaded、3=Interactive和4=Complete。利用Delphi实现系统状态栏图标 -下面以一个具体的例子,详细介绍一下利用Delphi实现系统状态栏图标的步骤和方法。1.创建一个应用程序,在主窗体上增加一个TpopupMenu组件。并为该弹出选单组件增加选单项Exit,标题为“退出”。2.在Uses中添加ShellAPI,因为在系统状态栏中增加图标时需调用ShellAPI中的函数 Shell_NotifyIconA。该函数需要两个参数,其中一个是TnotifyIconDataA结构,需在主窗体中增加TnotifyIconDataA类型的全局变量ntida。3.定义消息mousemsg,并编写主窗体的mousemessage消息处理函数,此函数说明在图标上用鼠标左键单击时,会打开应用程序窗口;用鼠标右键单击时,会弹出一个选单。下面给出步骤2和3的实现代码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls, Menus, shellapi;constmousemsg = wm_user + 1; /自定义消息,用于处理用户在图标上点击鼠标的事件iid = 100; /用户自定义数值,在TnotifyIconDataA类型全局变量ntida中使用typeTForm1 = class(TForm).private/自定义消息处理函数,处理鼠标点击图标事件procedure mousemessage(var message: tmessage); message mousemsg;public Public declarations end;varForm1: TForm1;ntida: TNotifyIcondataA;/用于增加和删除系统状态图标implementation.DFMprocedure TForm1.mousemessage(var message: tmessage);varmousept: TPoint; /鼠标点击位置begininherited;if message.LParam = wm_rbuttonup then begin /用鼠标右键点击图标getcursorpos(mousept); /获取光标位置popupmenu1.popup(mousept.x, mousept.y);/在光标位置弹出选单end;if message.LParam = wm_lbuttonup then begin /用鼠标左键点击图标/显示应用程序窗口ShowWindow(Handle, SW_SHOW);/在任务栏上显示应用程序窗口ShowWindow(Application.handle, SW_SHOW);SetWindowLong(Application.Handle, GWL_EXSTYLE,not (GetWindowLong(Application.handle, GWL_EXSTYLE)or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW);end;message.Result := 0;end 4.编写FormCreate的代码如下:procedure TForm1.FormCreate(Sender: TObject);beginntida.cbSize := sizeof(tnotifyicondataa); /指定ntida的长度ntida.Wnd := handle; /取应用程序主窗体的句柄ntida.uID := iid; /用户自定义的一个数值,在uCallbackMessage参数指定的消息中使ntida.uFlags := nif_icon + nif_tip + nif_message;/指定在该结构中uCallbackMessage、hIcon和szTip参数都有效ntida.uCallbackMessage := mousemsg;/指定的窗口消息ntida.hIcon := Application.Icon.handle;/指定系统状态栏显示应用程序的图标句柄ntida.szTip := Icon;/当鼠标停留在系统状态栏该图标上时,出现该提示信息shell_notifyicona(NIM_ADD, ntida);/在系统状态栏增加一个新图标end; 5.编写Tform1.OnClose的代码如下:procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);beginAction := caNone; /不对窗体进行任何操作ShowWindow(Handle, SW_HIDE); /隐藏主窗体/隐藏应用程序窗口在任务栏上的显示ShowWindow(Application.Handle, SW_HIDE);SetWindowLong(Application.Handle, GWL_EXSTYLE,GetWindowLong(Application.handle, GWL_EXSTYLE)or WS_EX_TOOLWINDOW AND NOT WS_EX _APPWINDOW);end; 6.编写Exit代码如下:当用户点击Exit时实现完全退出应用程序。具体代码如下:procedure TForm1.ExitClick(Sender: TObject);begin/为ntida赋值,指定各项参数ntida.cbSize := sizeof(tnotifyicondataa);ntida.wnd := handle;ntida.uID := iid;ntida.uFlags := nif_icon + nif_tip + nif_message;ntida.uCallbackMessage := mousemsg;ntida.hIcon := Application.Icon.handle;ntida.szTip := Icon;shell_notifyicona(NIM_DELETE, ntida);/删除已有的应用程序图标Application.Terminate;/中断应用程序运行,退出应用程序end 通过以上步骤,我们即可用Delphi轻松实现系统状态栏图标。用Delphi编写SMTP邮件发送程序 -构件组成Delphi 5构件板的FastNet页中,提供了TNMSmtp构件,它的功能就在于将邮件发送到指定的邮件服务器。其最常用的属性和方法如下:Host:SMTP邮件服务器的地址,如SMTP.SINA.COM.CNPort:SMTP邮件服务器的端口号,一般用其默认值25即可UserID:用户名,当与邮件服务器建立连接时,需验证用户名PostMessage.FromAddress:发件人地址PostMessage.ToAddress:收件人地址PostMessage.Attachments:邮件附件的文件列表PostMessage.Body:邮件的正文PostMessage.Subject:邮件的主题Connect方法:建立与SMTP服务器的连接,连接前需指定Host和UserIDDisconnect方法:断开与服务器之间的连接SendMail方法:将当前邮件发送到服务器当然,TNMSmtp构件还有很多其它的属性、方法、事件,在这里我们不作介绍,需要时大家可以查阅相关资料或Delphi的帮助信息。实现方式首先在Form1中加入相应的TLabel、TEdit、TMemo、TButton、TListBox、TOpenDialog和TNMSmtp构件。其中,TMemo用于书写邮件内容,TListBox显示附件项目,TOpenDialog(文件打开对话框)用于选择附件文件,按钮Button1添加附件,按钮Button2连接服务器并发送邮件。程序的具体代码如下:procedure TForm1.Button1Click(Sender: TObject);beginif OpenDialog1.Execute then ListBox1.Items.Add(OpenDialog1.FileName);/将选择的文件项添加到ListBox1中,作为附件end;procedure TForm1.Button2Click(Sender: TObject);beginNMSmtp1.Host:=Edit3.Text; /SMTP服务器地址NMSmtp1.UserID:=Edit4.Text; /你在对应服务器上的注册用户名NMSmtp1.Connect; /与服务器建立连接NMSmtp1.PostMessage.FromAddress:=Edit5.Text; /发件人的邮件地址NMSmtp1.PostMessage.Subject:=Edit2.Text; /邮件主题NMSmtp1.PostMessage.ToAddress.Add(Edit1.Text); /收件人的邮件地址NMSmtp1.PostMessage.Attachments.AddStrings(ListBox1.Items); /附件NMSmtp1.PostMessage.Body.Assign(Memo1.Lines); /邮件的正文NMSmtp1.SendMail; /发送邮件NMSmtp1.Disconnect; /断开连接ShowMessage(发送完毕!); /发送完时显示提示信息end;以作者为例:我的一个邮箱为/email,利用SMTP.163.com邮件服务器向中国电脑教育报编辑部发信时,在Edit1中填入编辑部的地址/email,Edit2中写上主题,Edit3中填入SMTP.163.com,Edit4中填入用户名dyhuyz,Edit5中填入我的地址/email,添加附件后,单击发送按钮,一切OK了!注意事项需要特别说明的是:目前部分网站的SMTP邮件服务器要对发送邮件的用户进行身份验证,即要求给出用户名和密码信息,否则无法发送,包括163.net,263.net,,等均在此列。而Delphi 5的TNMSmtp构件本身未提供“密码”属性,采用以上简单方法,不能利用这些服务器发送邮件,否则会出现错误信息;Delphi 6中用Indy构件组取代了Delphi 5中的FastNet构件组,其中的SMTP包含有身份验证的相关信息,可以很方便地解决这个问题。另一部分网站,如C,163.com等,则不要求身份验证,利用本程序,尽可畅通无阻。如何在Delphi中使用资源文件 -资源也是数据,它相当于我们熟悉的只读数据。在应用程序的可执行代码中,它是单独存储的,当其被调用时才载入程序,在程序执行完后又退出。Delphi中的资源有很多类型,适用于不同的地方,大致有以下几类:图标资源:是一种小型位图,用户常常用不同的图标代替不同的应用程序。光标资源:也是小型的位图,不过它适用的颜色不多。Delphi已经给光标指定了一个光标图案集,就是我们操作中常用到的Cursor属性,同时用户也可自定义光标图案。位图资源:Delphi只是将位图资源存入资源文件中,在使用时从资源文件中调出。字符串资源:将字串符文件存储于资源文件中。本文通过实例程序来说明资源在Delphi中的用法,所有示例程序均在Delphi 4中调试通过。1、生成资源文件在Delphi中提供了一个图形编辑器(Image Editor),通过该编辑器可以编辑生产Bitmap、Icon和Cursor三种资源文件,也可以直接绘制ICO、CUR和BMP文件。该编辑器不能进行文字处理,具体文字处理在后面介绍。编辑图形类资源文件时,首先启动Image Editor,选择:File->New->Resource File;在弹出的窗口中用鼠键右键单击“Contents”,再弹出的菜单中单击:New;选择需要编辑的资源文件的类型(Bitmap、Icon或Cursor)。2、装载与使用资源文件资源文件编辑生成后(文件名后缀为.res),要使用这些资源文件,首先要通过添加代在表单文件的implementation关键字中加入: *.DFM资源文件名.RES 定义了资源文件并且在单元文件中包括了资源文件名,需要调用Windows的API函数调用资源文件里的内容,如:LoadIcon,LoadString,LoadBitmap,LoadResource等。例如:下面的语句装入了一个名为mybmp.bmp的文件:Bmp.Handle := LoadBitmap(Hinstance , mybmp.bmp); 下面示例程序说明了图标、光标和位图资源的使用方法,在资源文件TEST.RES中定义了两个光标(cur1和cur2)、两个位图(bmp1和bmp2)以及两个图标(in1和in2),在程序中对这些资源都进行了调用。并利用定时器使位图和图标的显示有类似动画的感觉。当鼠标移动到Ladel1上时,光标会变成你定义的第一个光标形状;当单击Button1后,再把光标移到Ladel1上时,光标会变成你定义的第二个光标形状。unit testtes;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls, ExtCtrls;typeTForm1 = class(TForm)Label1: TLabel;Button1: TButton;Image1: TImage;Timer1: TTimer;procedure FormCreate(Sender: TObject);procedure Button1Click(Sender: TObject);procedure Timer1Timer(Sender: TObject);privatebmp12 : Integer; Private declarations public Public declarations end;varForm1: TForm1;implementation *.DFM TEST.RESconstcrMycur1 = 1;crMycur2 = 2;procedure TForm1.FormCreate(Sender: TObject);varbmp : TBitmap;ico : TIcon;beginScreen.CursorscrMycur1 := LoadCursor(Hinstance,CUR1);Screen.CursorscrMycur2 := LoadCursor(Hinstance,CUR2);Label1.Cursor := crMycur1;bmp := TBitmap.Create ;bmp.Handle := LoadBitmap(Hinstance,BMP1);Image1.Width := bmp.Width + 10;Image1.Height := bmp.Height + 10;Image1.Canvas.Draw(4,8,bmp);bmp12 := 1;ico := TIcon.Create ;ico.Handle := LoadIcon(Hinstance,IN1);Icon := ico;end;procedure TForm1.Button1Click(Sender: TObject);beginLabel1.Cursor := crMycur2;end;procedure TForm1.Timer1Timer(Sender: TObject);varbmp:TBitmap;ico : TIcon;beginbmp := TBitmap.Create ;ico := TIcon.Create ;if bmp12=1 then bmp12 := 2 else bmp12 :=1;bmp.Handle := LoadBitmap(Hinstance,PChar(BMP+IntToStr(bmp12);ico.Handle := LoadIcon(Hinstance,PChar(IN+IntToStr(bmp12);Image1.Width := bmp.Width + 10;Image1.Height := bmp.Height + 10;Image1.Canvas.Draw(4,6,bmp);Icon := ico;end;end. 3、字符串资源的定义与使用字符串的存储在应用程序中是独立的,应用程序只有在使用资源时载入,使用完之后清除,从而节省内存,同时字符串也可以用于翻译,一些汉化软件都利用了字符串。编辑的字符串放在一个文本文件中,可以使用Delphi中的:File->New->Text,编辑字符串文件,字符串文件的格式如下:stringtablebegin1,"book"2,"apple"3,"desk"4,"pen"5,"computer"end 编辑完字符串文件后,选择Save as,注意要将文件类型改为资源编译文件(.RC),这还不是资源文件,它还必须经过编译才能成为资源文件(.RES)。编译命令为Dos提示符下的BRCC32,其路径为:D:Program FilesBorlandDelphi4Binrcc32.exe;例如上面的字符串资源编译文件名为:StrRes.rc,在DOS提示符下输入:brcc32 mydirStrRes.rc;则编译后会生成一个名为:StrRes.res的资源文件,使用该文件即可访问字符串资源。具体使用见下例:unit teststr;interfaceusesWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Label1: TLabel;procedure Button1Click(Sender: TObject);procedure FormCreate(Sender: TObject);privatecount : integer; Private declarations public Public declarations end;varForm1: TForm1;implementation *.DFM StrRes.RESconstwordcount = 5;procedure TForm1.Button1Click(Sender: TObject);varstrword : string;beginif count>wordcount then count := 1;strword := LoadStr(count);label1.Caption := strword;count := count + 1;end;procedure TForm1.FormCreate(Sender: TObject);beginlabel1.Caption := LoadStr(1);count := 2;end;end. 程序中常量wordcount用来记录字符串资源文件中字符串的数量,变量count用来记录显示的字符串编号。程序运行后单击Button1按钮,则将循环显示字符串资源文件中的每一个字符串。Delphi开发用DOA运行存储过程 -用Delphi开发C/S结构的Oracle数据库软件时,为提高效率,通常将大批量的数据处理交给后台存储过程来完成。由于Delphi需通过BDE才能操作和处理各种数据库文件,这样不仅效率低,而且存在一定局限性,所以考虑采用第三方工具DOA来提高交互效率,方便前后台信息的传递。DOA(即Direct Oracle Access的缩写)是荷兰Allround Automations公司开发的访问O racle的工具,运用DOA构件可以在Delphi或C+Builder开发环境下跳过BDE,而直接通过SQLNet访问Oracle。初次接触DOA,一些编程人员对怎样运用DOA调用存储过程感到困惑,笔者将结合电信综合管理系统中数据加工审核这一具体实例,详细阐述其具体的方法和步骤。实现方法1.用TOraclePackage的CallProcedure / CallXXXFunction 用TOraclePackage的CallProcedure方法,我们就可简单地调用Oracle存储过程,该方法中参数以数组的形式传递。当TOraclePackage的ParameterMode属性为pmNamed时要按照名称传递参数,每个参数前面必须有指定名称的字符串,其格式为:CallProcedure(ProcedureName, ParameterName1, Parameter1, ParameterName2, Parameter2);当TOraclePackage的ParameterMode属性为pmPositional时,要按照位置传递参数:CallProcedure(ProcedureName,Parameter1, Parameter2,);输出参数通过传递parString、parInteger、parFloat、parDate或parBoolean常数来定义,输出参数值在过程调用后用GetParameter方法获得,格式为:PackageName.CallProcedure(ProcedureName,parString);GetParameter(ParameterId);如果没有参数,则用parNone获得:PackageName.CallProcedure(ProcedureName, parNone);与上面类似,我们用TOraclePackage的Call.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论