delphi技术文档(系统编程技巧)

合集下载

Delphi7的开发调试技巧及快捷键.

Delphi7的开发调试技巧及快捷键.

(转 Delphi7的开发调试技巧及快捷键Delphi 开发的调试技巧1、设置调试选项Delphi 主菜单。

【 Project 】 ->【 Options 】 , 或单击工程管理器中的【 Project Options 】按钮。

显示 Project Options,选择 Complier<1>选中 Debug Information :把调试信息嵌入到 DCU 单元文件,会加大编译后的DCU 文件,但不会影响最后生成的 exe 的大小和执行速度。

同时激活【 Search 】菜单中的【 Find Error 】命令。

当文件中包含调试信息并得到一个运行时错误 (run-time error, 记录下 Delphi 提供的 16进制地址,在【 Search 】->【 Find Error 】中输入, Delphi 将重新编译程序,并停留在产生错误的命令行。

<2>Local symbols:决定调试器能否看到在 Implementation 中定义的局部变量。

<3>Reference infoj选项 /Definition Only选项是否产生应用程序中对象标识符的引用信息。

信息和对象代码存在 dcu 文件中, 可以使用对象浏览器查看。

如果 Definition Only 选项同时选中,编译器将生成标识符定义位置的信息,能够激活对象浏览器的 Refenrence 页。

如果不选, Dcu 文件更小。

编辑器命令{$D} Debug Information{$L} Local Information{$Y} Symbol Information{$C} Assertions2、使用内部调试器<1> 命令行参数在【 Run 】->【 Parameters 】中设置<2>断点条件断点使源代码断点只有在满足某个条件时才有效。

在【 View 】->[Debug windows]->【 BreakPoints 】打开“BreakPoint List”对话框, 右击断点,从弹出菜单中选择属性。

delphi 教程

delphi 教程

delphi 教程在此篇Delphi教程中,我们将介绍一些基本的Delphi编程知识。

Delphi是一种可视化的集成开发环境,用于创建Windows应用程序。

它支持面向对象编程,具有强大的图形用户界面设计工具和简化的应用程序开发工具。

首先,我们需要了解Delphi的安装和设置过程。

您可以从Embarcadero官网下载Delphi安装程序。

安装完成后,您可以根据需要配置Delphi的界面和选项。

接下来,让我们了解Delphi中的一些基本概念。

Delphi使用对象、类和单位的概念来组织代码。

对象是程序的实体,类是对象的模板,单位是一种将相关类和对象组织在一起的方式。

Delphi中的代码以过程和函数的形式组织。

过程是一段代码块,用于执行特定的任务,而函数是返回一个值的过程。

您可以使用Delphi的集成开发环境编写和编辑代码。

Delphi支持多种数据类型,包括整数、浮点数、字符和字符串。

您可以使用这些数据类型创建变量,并对其进行操作。

在Delphi中,您可以使用条件语句(如if语句和case语句)和循环语句(如for循环和while循环)来控制程序的执行流程。

这样,您可以根据条件执行不同的动作,或者重复执行一段代码。

Delphi还提供了丰富的图形用户界面设计工具。

您可以使用这些工具创建窗体和控件,并将它们放置在窗体上。

您可以使用属性编辑器更改控件的属性,并为控件添加事件处理程序,以响应用户的操作。

最后,让我们谈谈Delphi中的调试和错误处理。

Delphi提供了一些调试工具,可以帮助您查找和修复程序中的错误。

您可以使用调试器跟踪程序的执行过程,并在运行时查看变量的值。

您还可以使用异常处理机制捕捉和处理程序中的异常。

这就是本篇Delphi教程的简要概述。

通过学习这些基本概念,您将能够开始使用Delphi开发Windows应用程序。

希望这篇教程对您有所帮助!。

DELPHI编程技巧集锦(5)

DELPHI编程技巧集锦(5)
if ObjectAssigned then
VCLComObject := Pointer (RefCountedObject);
try
// GetInterface calls ShowMeObject's _Release
// & _AddRef, which is
// implemented by RefCountedObject.
DELPHI
董占山
(中国农科院棉花研究所,河南安阳,455112)
L
在Delphi中重用代码是十分容易的,但是写一个存取常用代码的VCL是十分复杂的,为什么不写一个类单元呢?在一个大型项目中,维护和调试一个类是比较容易的,因为每个类是自包含的,没有全局变量的干扰。下面是一个类的框架:
unit cls_mine;
当前年份
TwoDigitCenturyWindow取值
TwoDigitYearCenturyWindow决定将字符串日期中的两位数年份转换为数值日期时使用的世纪数。在提取世纪之前,用当前年份减去这个值。这种方法可以延长使用两位数记年的软件的寿命。其实,对Y2K问题的最好解决办法是不接受两位数记年法,在输入日期时要求4位数,以排除世纪的混淆。下表列出了使用TwoDigitYearCenturyWindow进行世纪数转换的方法。
Key:=#0; end
end;
Key:=#0语句使在非文本输入时强迫程序发嘟嘟声。
O
在使用RichEdit组件时,希望仅仅获得其中的一部分文本,但是不想设置选择区间和使用SelText属性,可以使用如下代码实现:
{overrides wrong TTextRange definition in RichEdit.pas}

delphi操纵word(完整版)[精华]

delphi操纵word(完整版)[精华]

一、Delphi程序启动Word采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:首先使用GetActiveOleObject('Word.Application')判断当前内存中是否存在Word程序,如果存在,则直接连接,如果没有Word程序,则使用CreateOleObject('Word.Application')启动Word二、Delphi程序新建Word文稿格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)Template:使用模板的名称,NewTemplate:新建文档的类型,True表示为模板,False表示为文档DocumentType:文档类型,默认为空白文档Visible:打捞的窗口是否可见举例:Doc_Handle:=Word_Ole.Documents.Add(Template:='C:\Temlate.dot',NewTemplate:=False );三、Delphi程序打开Word文稿格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,PasswordTemplate,Revent,WritePasswordDocument,WritePassWordTemplate,Format,Encoding,Visible)FileName:文档名(包含路径)Confirmconversions:是否显示文件转换对话框ReadOnly:是否以只读方式打开文档AddToRecentFiles:是否将文件添加到"文件"菜单底部的最近使用文件列表中PassWordDocument:打开此文档时所需要的密码PasswordTemplate:打开此模板时所需要的密码Revert:如果文档已经,是否重新打开文档WritePasswordDocument:保存对文档更改时所需要的密码WritePasswordTemplate:保存对模板进行更改时所需要的密码Format:打开文档时所需使用的文件转换器Encoding:所使用的文档代码页Visible:打开文档的窗口是否可见举例:Doc_Handle:=Word_Ole.Documents.open(FileName:=Doc_File,ReadOnly:=False,AddToRecentFiles:=False);四、Delphi程序保存Word文稿格式:WordDocuments.SaveAs(FileName, FileFormat, LockComments, Password,AddToRecentFiles, WritePassword, ReadOnlyRecommended,EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter)FileName:文件名。

delphi操作系统编程

delphi操作系统编程

var
tmp: integer;
begin
tmp := 0;
//屏蔽 Alt-Tab
SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @tmp, 0);
//屏蔽 Ctrl-Alt-Del
{鼠标 属性}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL Main.cpl', 9);
{多媒体 属性-音频}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL Mmsys.cpl,,0', 9);
{显示 属性-屏幕保护程序}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1', 9);
{显示 属性-外观}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2', 9);
更改Windows95的墙纸。
在Delphi中你可以很方便地更改墙纸,请参考以下的程序。
procedureChangeIt;
var
Reg:TregIniFile;
begin
Reg:ΚTRegIniFile.Create(′ControlPanel′);
{游戏控制器-一般}
x := winexec('rundll32.exe shell32.dll,Control_RunDLL Joy.cpl,,0', 9);

delphi常用技巧

delphi常用技巧

delphi常用技巧
Delphi是一种强大的编程语言,有许多有用的技巧和功能可以帮助提高开发效率。

以下是一些Delphi常用的技巧:
1. 使用快捷键:Delphi支持许多快捷键,使用这些快捷键可以快速完成常见的任务,如Ctrl+C用于复制,Ctrl+V用于粘贴等。

2. 快速查找和替换:使用Ctrl+Shift+F可以打开查找和替换对话框,输入要查找的文本,然后输入要替换的文本,最后点击“全部替换”即可。

3. 调试技巧:在调试时,可以使用断点、观察表达式、单步执行等技巧来检查程序的运行情况。

4. 自定义控件:Delphi支持自定义控件,可以创建自己的控件来满足特定的需求。

5. 使用第三方控件:Delphi有许多第三方控件可用,这些控件可以提供更多的功能和更好的用户体验。

6. 优化代码:使用一些技巧可以优化代码的运行速度和可读性,例如使用局部变量、避免不必要的对象创建等。

7. 使用异常处理:在Delphi中,可以使用异常处理来处理运行时错误和异常情况。

8. 使用多线程:Delphi支持多线程编程,可以使用多线程来提高程序的性能和响应速度。

9. 使用数据库:Delphi支持多种数据库连接方式,可以使用数据库来存储和检索数据。

10. 使用第三方库:Delphi有许多第三方库可用,这些库可以提供更多的功能和更好的性能。

希望这些技巧可以帮助你更好地使用Delphi进行开发。

delphi编程技巧

delphi编程技巧

DELPHI编程技巧一一、Delphi集成环境与代码调试A 修改Delphi的系统信息默认的Delphi消息、警告和例外描述都是英文的,将这些内容翻译成另一种语言或修改它们使其适合你的需要的最简单方法是编辑资源文件并改变相应的字符串,这些文件位于BIN 目录。

主要资源文件有:SysUtils单元的信息(文件没有找到、转换错误信息等)在sysutils.res 中,数据库错误信息在dbconsts.res中,VCL信息在consts.res中。

注意一些字符串使用格式字符,如%s或%d,来产生最终的字符串,在这种情况下,应将这些字符保留在适当的位置。

B 如何清除无用代码Delphi提供了自动清除源代码中无用代码的强大功能,一般来说,当你保存文件时,Delphi 自动将源代码中空的类方法删除,保证了源代码的清洁。

在没有编译和保存文件的前提下,也可以清除无用代码,方法是:在Delphi 3/4中单击“File”*癝ave As...”菜单命令(在Delphi 1/2中单击“File”*“Save File As...”菜单命令),打开“Save As...”对话窗口,单击“取消”按钮即可。

C 在Delphi 4集成环境中不使用浮动功能你无疑知道Delphi 4集成环境支持大多数窗口的浮动功能。

但是,有时你不想让一个窗口具有浮动功能。

浮动窗口在需要时,十分有用,但在不需要时,也十分恼人。

有两种方法可以改变一个窗口的浮动属性。

第一种方法是:每个可浮动窗口具有一个本地菜单项目---Dockable,如果你不希望一个特定的窗口具有浮动功能,简单地用鼠标右键单击窗口,选空Dockable菜单项目。

这个窗口的浮动功能就关闭了,直到你再选中Dockable项目为止。

这一技术可以防止特定的窗口可停靠。

但有时,你仅仅希望暂时关闭浮动功能,这时,只需要按下<Ctrl>键,再拖动窗口。

D 在工具菜单中添加项目在Delphi集成环境中按F1键可以打开多数Delphi帮助标题,这种方法可以快速打开相关标题的帮助窗口。

delphi十个小技巧

delphi十个小技巧

delphi十个小技巧1、判断一个字符串是否包含于另外一个字符串的方法例如:if pos('ab','abcd')<>0 thenmessagedlg('ab是包含于abcd',mtConfirmation,[mbYes, mbNo],0);pos(obj,target) 在target字符串中找出第一个出现obj的第一个字符位置,如果找不到,返回0.2、如何使窗口全屏,类似游戏一样,而不是窗口的最大化!(1)BorderStyle 为 bsNone(2)Windowstate 为 wsMaximized(3) 退出时可加一个按钮之类的,写上 close 即可退出。

3、数字格式化输出format('%8.2f',[123.456]),返回字符串'123.46'。

4、播放一个wav文件usemmsystem;SndPlaySound('hello.wav',SND_FILENAME or SND_SYNC);5、InputBox,InputQuery和ShowMessage函数的威力usesdialogs;vars,s1:string;b:boolean;begins:=trim(Inputbox('NewPassword','Password','masterkey'));b:=s<>'';s1:=s;if b then b:=InputQuery('ConfirmPassword','Password',s1);if not b or (s1<>s) thenShowMessage('Password Failed');end;6、几个有关子目录的操作的过程MkDir(str); ChDir(str); GetDir(DriveID,str); SetCurrentDir(str);IOResult --上面几个过程调用成功即返回0值7、将一个可视控件变成图形类型例如将一个带背景的LABEL变成一个TIMAGE图片类型,可以这样做:image1.width:=label1.width;image1.height:=label1.height;label1.perform(WM_PAINT,image1.Canvas.Handle,0);8、如何得到字符的ASCII值得到字符的ASCII值,可以用如下语句:var: a:integer;string1:string;beginstring1:='ABC';a:=byte(string[1]); {此时就得到'A'的ASCII值}end;9、动态更新DBGrid的颜色例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。

Delphi常用技巧

Delphi常用技巧

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属性为“华文行楷,粗斜体,三号字,红色”(根据你的图片设置适当的字体、字号、字体颜色)。

Delphi编程技巧

Delphi编程技巧

◇[DELPHI]网络邻居复制文件uses shellapi;copyfile(pchar('newfile.txt'),pchar('//computername/direction/targer.txt'),false);◇[DELPHI]产生鼠标拖动效果通过MouseMove事件、DragOver事件、EndDrag事件实现,例如在PANEL上的LABEL:var xpanel,ypanel,xlabel,ylabel:integer;PANEL的MouseMove事件:xpanel:=x;ypanel:=y;PANEL的DragOver事件:xpanel:=x;ypanel:=y;LABEL的MouseMove事件:xlabel:=x;ylabel:=y;LABEL的EndDrag事件:label.left:=xpanel-xlabel;label.top:=ypanel-ylabel;◇[DELPHI]取得WINDOWS目录uses shellapi;var windir:array[0..255] of char;getwindowsdirectory(windir,sizeof(windir));或者从注册表中读取,位置:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersionSystemRoot键,取得如:C:\WINDOWS◇[DELPHI]在FORM或其他容器上画线var x,y:array [0..50] of integer;canvas.pen.color:=clred;canvas.pen.style:=psDash;form1.canvas.moveto(trunc(x[i]),trunc(y[i]));form1.canvas.lineto(trunc(x[j]),trunc(y[j]));◇[DELPHI]字符串列表使用var tips:tstringlist;tips:=tstringlist.create;tips.loadfromfile('filename.txt');edit1.text:=tips[0];tips.add('last line addition string');tips.insert(1,'insert string at NO 2 line');tips.savetofile('newfile.txt');tips.free;◇[DELPHI]简单的剪贴板操作richedit1.selectall;richedit1.copytoclipboard;richedit1.cuttoclipboard;edit1.pastefromclipboard;◇[DELPHI]关于文件、目录操作Chdir('c:\abcdir');转到目录Mkdir('dirname');建立目录Rmdir('dirname');删除目录GetCurrentDir;//取当前目录名,无'\'Getdir(0,s);//取工作目录名s:='c:\abcdir';Deletfile('abc.txt');//删除文件Renamefile('old.txt','new.txt');//文件更名ExtractFilename(filelistbox1.filename);//取文件名ExtractFileExt(filelistbox1.filename);//取文件后缀◇[DELPHI]处理文件属性attr:=filegetattr(filelistbox1.filename);if (attr and faReadonly)=faReadonly then ... //只读if (attr and faSysfile)=faSysfile then ... //系统if (attr and faArchive)=faArchive then ... //存档if (attr and faHidden)=faHidden then ... //隐藏◇[DELPHI]执行程序外文件WINEXEC//调用可执行文件winexec(' /c copy *.* c:\',SW_Normal);winexec('start abc.txt');ShellExecute或ShellExecuteEx//启动文件关联程序function executefile(const filename,params,defaultDir:string;showCmd:integer):THandle; ExecuteFile('C:\abc\a.txt','x.abc','c:\abc\',0);ExecuteFile('','','',0);ExecuteFile('mailto:tingweb@','','',0);◇[DELPHI]取得系统运行的进程名var hCurrentWindow:HWnd;szText:array[0..254] of char;beginhCurrentWindow:=Getwindow(handle,GW_HWndFrist);while hCurrentWindow <> 0 dobeginif Getwindowtext(hcurrnetwindow,@sztext,255)>0 then listbox1.items.add(strpas(@sztext)); hCurrentWindow:=Getwindow(hCurrentwindow,GW_HWndNext);end;end;◇[DELPHI]关于汇编的嵌入Asm End;可以任意修改EAX、ECX、EDX;不能修改ESI、EDI、ESP、EBP、EBX。

delphi编程经验2007(Delphi教程)

delphi编程经验2007(Delphi教程)

delphi编程经验2007 (Delphi教程) delphi编程经验20071).按下ctrl和其它键之后发生一事件。

procedureTForm1.FormKeyDown(Sender: TObject;var Key: Word; Shift: TShiftState); begin if (ssCtrl in Shift) and (key =67) then showmessage('keydown Ctrl+C'); end; (2).Dbgrid中用Enter 键代替Tab键. procedureTForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then if ActiveControl = DBGrid1 then beginTDBGrid(ActiveControl).SelectedIndex :=TDBGrid(ActiveControl).SelectedIndex + 1; Key := #0; end; end;(3).Dbgrid中选择多行发生一事件。

procedure TForm1.Button1Click(Sender: TObject); var i:integer; bookmarklist:Tbookmarklist; bookmark:tbookmarkstr; begin bookmark:=adoquery1.Bookmark; bookmarklist:=dbgrid1.SelectedRows;try begin for i:=0 to bookmarklist.Count-1 do beginadoquery1.Bookmark:=bookmarklist[i]; with adoquery1 do begin edit; fieldbyname('mdg').AsString:=edit2.Text; post; end; end; end; finally adoquery1.Bookmark:=bookmark; end; end; (4).Form的一个出现效果。

2024年度Delphi程序设计实用教程第2版

2024年度Delphi程序设计实用教程第2版
43
系统架构设计思路
2024/2/2
整体架构设计
设计系统的整体架构,包括客户端、服务器端、数据库等组成部 分。
模块划分
将系统划分为多个模块,每个模块负责实现特定的功能,提高系统 的可维护性和可扩展性。
接口设计
定义模块之间的接口,包括数据接口、函数接口等,确保模块之间 的协同工作。
03
包括基于TCP和UDP的Socket编程,可应用于实时聊天、文件
传输等场景。
34
Web应用开发技术
01
02
03
Web服务器
用于处理客户端请求并返 回响应的服务器程序。
2024/2/2
Web开发语言
如HTML、CSS、 JavaScript等,用于构建 Web应用程序的前端界面 和交互逻辑。
Web开发框架
5
Delphi开发环境安装与配置
下载并安装Delphi开 发环境,选择合适的 版本和组件库。
安装和配置数据库连 接驱动,以便在 Delphi中访问数据库 。
2024/2/2
配置开发环境,包括 设置编译器选项、调 试器选项、代码编辑 器风格等。
6
第一个Delphi程序
创建一个新的Delphi项目,选择适当 的项目类型和模板。
构造类型
如数组、记录、集合、文件等复合数据类型 。
变体类型
可存储不同类型数据的灵活数据类型。
10
变量与常量
变量声明与赋值
介绍如何在Delphi中声明变量并 为其赋值。
2024/2/2
常量定义与使用
讲解常量的概念、定义方法及在程 序中的应用。
变量作用域
阐述局部变量、全局变量的概念及 其作用范围。
11

Delphi 第08章_Windows高级编程

Delphi 第08章_Windows高级编程

LoadLibrary函数、GetProcAdrress函数和FreeLibrary函数来实现
DLL文件的动态调用。 1.静态调用
静态调用又称为隐式加载方式,它是通过单元体中Interface部分的
External指示字所列出需要调用DLL文件的过程或函数。这些被指定 的DLL文件中的过程是在程序执行之前被加载进内存的。
8.1.2 创建DLL
通过Delphi XE8主菜单的【File】|【New】|【Other】在弹出的【New Items】对话框 中,选择Dynamic-link Library图标,单击【OK】按钮,系统将自动创建一个DLL项 目。 DLL和Application项目文件的格式对比
DLL项目文件的主要格式如下: Library 项目名; Uses 子句; Exports 子句; //数据接口函数 Begin End. //程序执行体
在Delphi XE8中,存在一个调用约定的问题。调用约定就是指调用例程时参数的传递顺序。 在Delphi XE8中DLL支持的调用约定如表所示。
调用约定 Registe到右 从右到左
Cdecl
Safecall
从右到左
从右到左
使用静态调用方式,有两个缺点:一是当要加载的DLL文件不存在或者没有指定调用的过 程时,程序就会自动停止运行,或可能致使程序出错;二是一旦所需的DLL文件被加载 至内存后,即使不再需要,其仍然停留在应用程序的地址空间中。
8.2.2添加新属性 要给接口增加属性或方法,需要用【View】|【Type Library】| 【Type Library】编辑器,同时在IButtonX上单击鼠标右键,选择
【New】|【Property】。单击该菜单项后,将弹出如图所示的对话

DELPHI编程技巧集锦(2)

DELPHI编程技巧集锦(2)
C
在编辑程序源代码时,不同代码块之间保持不同的缩进距离,可以使代码易于阅读。当程序结构调整之后,需要调整代码的缩进量,通常我们使用上下光标键在不同代码行之间进行切换,用<空格>、<Tab>和<Del>键来增加或减少缩进空间。使用过Turbo Pascal的老用户可能还记得它的集成编辑器提供了一组快捷键来快速切换代码块的缩进量,使用十分方便。其实,Delphi集成编辑器也提供了两个组合键来快速增加或减少多行代码的缩进量。首先选择待改变缩进量的代码块,按<Ctrl+Shift+I>组合键来扩展代码块的缩进量,按<Ctrl+Shift+U>组合键来缩小代码块的缩进量。
2将数据表存取组件放到数据模块窗体上:为应用程序使用的每个数据表都添加一个TTable和TDataSource组件到数据模块窗体上,并正确设置它们的DatabaseName、TableName和DataSet属性。
3在使用数据表的每个窗体上加入对数据模块单元的应用,这样就可以在这些窗体上使用数据控制组件了,将这些组件的DataSource设置为数据模块的合适的TDataSource组件。
C
DBGrid是显示表格数据的好控件,本例旨在演示如何动态地改变其中的文本颜色。例如,我们想用DBGrid中的行来显示国家的信息,如果国家的人口大于2亿,数据行显示将为兰色。在DBGrid组件的OnDrawColumnCell事件处理程序中测试数据并改变颜色,程序代码如下:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
theStringList: TStringList; (*temp storage*)

Delphi实用技巧经验(图文)

Delphi实用技巧经验(图文)

‘’空‘’空格空格调整对齐方式窗体的visible属性设置相当于showmodalaq一行一行执行,所以要把一些语句写在循环里(除了在grid添加数据)Caption,Text:显示名Name:系统名Sql表:create,drop,alter 数据:insert,delete,update数据模块在uses里时用文件名,调用时用系统名全局变量:用于不同表单间的传值。

如在public中定义变量a,使用时把值赋给form.a,具体可参考设置第一列为下拉式菜单Delphi设置切换窗体project-options-forms 字体tools-options-display问题处理属性栏消失按F11Image提示“unknown picture file extension(.jpg) ”在uses中加Jpeg重建某个窗体(如unit2):新建unit1unit2,退出再重建,使之产生dcu文件,再将这三个文件复制到所需目录下,同时删除history 文件夹DBGrid某列的小数位数(at默认会去掉末尾的0,如1.00->1)TFloatField(dbGrid1.Columns[2].Field).DisplayFormat := '0.00'; 函数定位posex(str1, str2,[n]) 在str1在str2从n的位置开始的位置,默认从1开始,输出int类型,必须在uses中加入StrUtils posex('b','abcabcabc',3)=5复制copy(str,2,3),输入输出都是str,如copy(inttostr(1234),2,2)=23长度length(str) 输出int重复dupestring(chr(9),10) 将Tab重复10次,必须在uses中加入StrUtils左取leftstr(str,2),rightstr(str,2),必须在uses中加入StrUtils保留小数位数(2位),会四舍五入FormatFloat('0.00',1.111),str类型格式小数小数定义成real,转换floattoint,inttofloat;floattostr ,strtofloat Asfloat 验证trystrtofloat(同理trystrtoint)Vars: string;x:double;begins:='123.45x';if not trystrtofloat(s,x)then showmessage('数据类型转换出错');end保留小数位数(2位),会四舍五入FormatFloat('0.00',1.111),str类型DBGrid某列的小数位数(默认会去掉末尾的0,如1.00->1,下面语句只改变DBGrid显示格式,若从at取出数据给edit,显示的还是去0,但是sql表中定义成money类型而delphi中提交如1,则sql表中自动转换为 1.00)TFloatField(dbGrid1.Columns[2].Field).DisplayFormat := '0.00';日期定义成date1:TDateTime,转换用datetostr, strtodate [ if not TryStrToDate(str,date1) then...] AsDateTime常见键值vbKeyBack 8 BACKSPACE 键vbKeyTab 9 TAB 键vbKeyReturn 13 ENTER 键警告窗口application.MessageBox('输入内容','标题 ', MB_ICONEXCLAMATION);1.指定讯息视窗上的图示1.1 MB_ICONEXCLAMATION 或 MB_ICONWARNING出现「黄三角形内有一个惊叹号」图示1.2 MB_ICONINFORMATION 或 MB_ICONASTERISK出现「白色椭圆内有一个蓝色小写 i」图示1.3 MB_ICONQUESTION出现「问号」图示1.4 MB_ICONSTOP 或 MB_ICONERROR 或 MB_ICONHAND出现「红色X」图示2.指定讯息视窗出现的按钮2.1 MB_ABORTRETRYIGNORE出现「Abort」「Retry」「Ignore」三个按钮2.2 MB_OK出现「Ok」按钮,为预设值。

delphi编程技巧与实例精解

delphi编程技巧与实例精解

一、概述Delphi是一种基于Pascal语言的集成开发环境,它提供了丰富的工具和功能,使得程序员可以轻松进行Windows应用程序开发。

在Delphi编程中,掌握一些技巧和实例是非常重要的,可以帮助程序员提高开发效率,降低错误率,提升编程水平。

本文将对Delphi编程技巧和实例进行精解,希望能帮助读者更好地掌握这门技术。

二、Delphi编程技巧1. 使用正确的数据类型在Delphi编程中,使用正确的数据类型是非常重要的。

不同的数据类型有不同的大小和范围,选择合适的数据类型可以节省内存空间并提高程序的运行效率。

如果需要存储一个整数,应该选择合适大小的整型而不是使用大整数型,以避免浪费内存空间。

2. 合理使用循环结构循环结构是程序中常用的控制结构之一,合理使用循环结构可以简化程序逻辑,提高代码的可读性。

在Delphi中,有多种循环结构可供选择,如while循环、for循环和repeat-until循环,程序员应根据具体情况选择合适的循环结构。

3. 异常处理在编写程序时,应该考虑到各种异常情况,并做好相应的处理。

Delphi提供了丰富的异常处理机制,程序员可以自定义异常类,并使用try-except结构捕获异常,从而保证程序的稳定性和健壮性。

4. 使用面向对象编程面向对象编程是一种重要的编程范式,它能够提高程序的复用性和可维护性。

在Delphi中,使用面向对象编程可以更好地组织和管理代码,提高编程效率。

5. 性能优化在编写程序时,应该考虑程序的性能问题,并采取相应措施进行优化。

Delphi提供了丰富的性能优化工具和技术,程序员可以通过分析程序的性能瓶颈,改进算法和数据结构,提高程序的性能。

三、Delphi编程实例1. 界面设计界面设计是Delphi编程中的一个重要环节,一个美观、简洁的界面可以提升用户体验。

程序员可以使用Delphi提供的界面设计工具,如VCL控件和FireMonkey框架,快速实现各种界面效果。

DELPHI编程技巧集锦(4)

DELPHI编程技巧集锦(4)
Ext := filename;
ShGetFileInfo(PChar(Ext), 0, SHFileInfo,
SizeOf(SHFileInfo), SHGFI_SMALLICON or
SHGFI_SYSICONINDEX or SHGFI_TYPENAME);
result:= SHFileInfo.iIcon;
end;
下面将系统图象列表连接到TListView控件上。注意我们设置动态建立的图象列表的ShareImages属性为真,这可以确保我们不试图释放Windows系统拥有的图象。在窗体的OnCreate事件处理程序中加上:
with YourListView do
begin
SmallImages := TImageList.CreateSize(16,16);
if (ssCtrl in Shift) and (chr(Key) in ['A', 'a']) then ShowMessage('Ctrl-A');
OnKeyDown事件处理程序将捕获击键,并执行指定的代码。
六、
A
假如编写一个衍生类的初始化例程,并希望将参数传递给基类的初始化例程,一般使用如下方法:
J
假如你需要存取WIN95的系统图象列表,这里给出具体方法。第一个函数将系统图象列表的索引保存到一个特殊类型的文件中:
function GetFileIcoIndex(Filename:String):Integer;
var
Ext: String;
ShFileInfo: TSHFILEINFO;
begin
上述代码只能动态地开关一个菜单的菜单条目,如果要同时动态改变所有菜单的菜单条目,需要使用窗体的Components属性,代码如下:

Delphi编程技巧十则

Delphi编程技巧十则

Delphi编程技巧十则Delphi编程技巧十则裔隽Delphi作为一|丁新起的叭lindows编程语言,由于其集众多的优秀特性于一身,因而越来越得到广大编程人员和发烧友的青睐。

以下十则技巧涉及的面比较广泛,希望能够对Delphi的爱好者有所禅益。

1 类似,于vb中的doevenls功能。

大家或许发现,在Delphi中没有类似于vb 中的doevenls函数,这样有的时候,我们将无法使叭lindows响应多个同时发生的事件。

其实,在Delphi的applica lion对象中包括类似的一个方法ProcessMessage,你可以通过调用Applicalion,ProcessMessage来完成象飞Ib中的doevenls 样的功能。

2 在Delphi中调用NelscapeNavigalor"随着Inlerne的火爆,有没有想过在你的Delphi程序l中启动Nelscape浏览器,显示出你指定的vwvw地址的主页。

下面这个程序能够完成这一功能。

programNelscape;usesDDEMan;procedureGo loURL(sURL,slring)vardde,TDDEClienlConv;begindde,TDDEClienlConv,Creale(nil)wilhddedobegin//specifythelocat旧nofnetscape.exeServiceApplication,'c,ms32lprogrammetscape.exe'//activatetheNetscapeNavigatorSetLinkC' Netscape' ,'VWVW-Activate' )Reques tD ataC'口xFFFFFFFF'),//gotothespecifiedURLSetLinkC' Netscape' ,'叭N叭N-OpenURL'),Reques tD ataCsURL+' ,,OxFFFFFFFF,Ox3,,,'),Close Li nk,end,dde. Free,end,beginGotoURLC' http,///. )end3 格式化整数输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ÊÓƵ½Ì³Ì¸üÐÂÖÐ £¬Çë¹Ø×¢£¡
Delphi面向对象编程的20条规则
2004年2月28日 作者: Delphi空间 浏览选项: 颜色
本文已被浏览 344 次
规则一:为每一个类创建一个单元(One Class,One Unit) 请始终牢记这一点:类的私有(private)和保护(protected)的部分只对于其他单元中的类和过程(procedure)才是隐藏 的.因此,如果你想得到有效的封装性,你应该为每一个类使用一个不同的单元。对于一些简单的类,比如那些继 承其他类的类,你可以使用一个共享的单元。不过共享同一个单元的类的数目是受到限制的:不要在一个简单的单 元里放置超过20个复杂的类,虽然Borland公司的VCL代码曾经这样做过。 如果你使用窗体的时候,Delphi会默认的遵循“一个类使用一个单元”的规则,这对于程序员来说也是十分方便 的。当你向你的项目中添加一个没有窗体的类时,Delphi也会创建一个新的独立的单元。
type TformDialog =class(TForm) private listItems:TlistBox; function GetItems(Index:Integer):String; procedure SetItems(Index:Integer:const value:String); public property Items[Index:Integer]:string; end; function TFormDialog.GetItems(Index:Integer):string; begin if Index >=ListItems.Items.Count then raise Exception.Create(‘TformDialog:Out of Range’); Result:=ListItems.Items[Index]; end; procedure TformDialog.SetItems(Index:Integer;const alue:string); begin if Index >=ListItems.Items.Count then raise Exception.Create(‘TformDialog:Out of Range’); ListItems.Items[Index]:=value; end;
规则14:隐藏组件(Hide Components) 我经常听见那些面向对象编程的狂热追求者抱怨Delphi窗体中包含一些在published部分声明的组件,这是和面向对 象思想的封装性原理不相符合的。他们确实提出了一个重要的议题,但是他们中的大多数人都没有意识到解决方法 其实就在他们手边,完全不用重写Delphi代码,也不用转向其他语言。 Delphi向窗体中添加的组件参照可以被移到private部分,使得其他窗体不能访问他们。如果你这样做,你就有必要 设置一些指向组件的窗体属性(请参见规则11),并且使用它们来访问组件的状态。 Delphi将所有的这些组件都放在published部分,这是因为使用这种方式能够保证这些域一定是在.DFM文件中创建的 组件。当你改变一个组件的名称时,VCL能够自动地将这个组件对象与它在窗体中的参照关联起来。因为delphi使 用RTTI和Tobject方法来实现这种功能,所以如果想要使用这种自动实现功能,就必须把参照放置在published部分 (这也正是为什么delphi将所有的组件都放在published部分的缘故)。 如果你想知道的更详细一点,可以参看下面的代码:
begin
Result:=Edit1.Text;
end;
procedure TformDialog.SetText(const value:Stricle_view.asp?id=499 (2 of 6)2004-05-15 15:55:50
private
function GetText:String;
procedure SetText(const value:String);
public
property Text:String;
read GetText write SetText;
function TformDialog.GetText:String;
规则5:添加窗体构造器(Add Form Constructors) 在运行时创建的第二个窗体除了一个默认的构造器(从Tcomponent 类继承而来)外还会提供其他特殊的构造器。 如果你不需要考虑和Delphi4以前的版本的兼容性问题,我建议你重载(Overload)Create方法,添加必要的初始化 参数。具体代码可参见下面的代码:
规则13:使用属性的附加作用(Use Side-Effects In Properties) 请记住:使用属性而不是访问全局变量(参见规则10、11、12)的好处之一就是当你设置或者读取属性的值时,你 还可能有意想不到的收获。 例如,你可以直接在窗体界面上拖拉组件,设置多个属性的值,调用特殊方法,立即改变多个组件的状态,或者撤 销一个事件(如果需要的话)等等。
规则三:为事件命名(Name Events) 对于事件处理方法给出合适的名字更加重要。如果你对于组件给出了一个合适的名字,那么系统默认的名字 ButtonClick将变成BtnAddClick。虽然从这个名字中我们可以猜到这个事件处理程序的功能,但是我认为使用一个能 够描述该方法的作用的名字,而不是采用Delphi附加的名字是一种更好的方式。例如,BtnAdd按钮的onClick事件可 以命名成AddToList。这会使得你的程序可读性更强,特别是当你在这个类的其他方法中调用这个事件处理程序 时,而且这会帮助程序员为类似的事件或是不同的组件选用相同的方法。不过我必须声明,使用动作(Actions)是 目前开发重要的程序时我最喜欢的方法。
规则四:使用窗体方法(Use Form Methods) 窗体都是一些类,因此窗体的代码是以方法组织的。你可以向窗体中添加事件处理程序,这些处理程序完成一些特 别的功能,而且他们能被其他方法调用。除了事件处理方法外,你还可以向窗体添加完成动作的特别定义的方法以 及访问窗体状态的方法。在窗体中添加一些公共的(Public)方法供其他窗体调用要比其他窗体直接操作他的组件 要好。
规则二:为组件命名(Name Components) 为每一个窗体和单元给出一个有意义的名字是十分重要的。窗体和单元的名字必须是不同的,不过我趋向于为他们 两者使用相似的名字,如对于关于窗体和单元可以为他们使用AboutForm 和About.pas. 为组件使用带有描述性的名字同样十分重要。最常见的命名方式是使用类的小写字母开头,再加上组件的功能,如 BtnAdd 或者editName。采用这样的命名方式为组件命名可能会有很多相似的名字,而且也没有一个最好的名字, 到底应该选择那一个应该依据你的个人爱好而定。
规则8:尽量避免在其他的窗体中使用Form1(Seldom Use Form1 In Other Forms ) 即使在其他窗体的代码中,你也应该尽量避免直接使用全局变量,如Form1.定义一些局部变量或者私有域供其他窗 体使用会比直接调用全局变量要好。 例如,程序的主窗体能够为对话框定义一个私有域。很显然,如果你计划为一个派生窗体创建多个实例,这条规则 将是十分有用。你可以在主窗体的代码范围内保持一份清单,也可以更简单地使用全局Sreen对象的窗体数组。
Delphi空间 - delphi技术文档(系统编程技巧)
Edit1.Text;=value; end;
规则12:属性数组(Array Properties) 如果你需要处理窗体中的一系列变量,你可以定义一个属性数组。如果这些变量是一些对于窗体很重要的信息,你 还可以把他们定义成窗体默认的属性数组,这样你就可以直接使用SpecialForm[3]来访问他们的值了。 下面的代码显示了如何将一个listbox组件的项目定义成窗体默认的属性数组。
规则9:移除Form1(Remove Form1) 事实上,我的建议是在你的程序中移除Delphi自动创建的全局窗体对象。即使你禁止了窗体的自动添加功能,这也 有可能是必要的,因为在Delphi随后仍然可能添加这样的窗体。我给你的建议是应该尽量避免使用全局窗体对象。 我认为对于Delphi新手而言,移除全局窗体对象是十分有用的,这样他们不至于对类和全局对象两者的关系感到疑 惑。事实上,在全局窗体对象被移除后,所有与它有关的代码都会产生错误。
Public Constructor Create(Text:string): reintroduce overload; Constructor TformDialog.Create(Text:string); Begin Inherited Crey58x
规则10:添加窗体属性(Add Form Properties) 正如我已经提到过的,当你需要为你的窗体添加数据时,请添加一个私有域。如果你需要访问其他类的数据,可以 为你的窗体添加属性。使用这种方法你就能够改变当前窗体的代码和数据(包含在它的用户界面中)而不必改变其他 窗体或类的代码。 你还应该使用属性或是方法来初始化派生窗体或是对话框,或是访问他们的最终状态。正如我前文所说的,你应该 使用构造器来完成初始化工作
Delphi空间 - delphi技术文档(系统编程技巧)
加入收藏 免费注册 用户登陆 帮助中心
空间首页资源下载技术文档控件教程源码交易空间论坛空间商城视频教程会员中心 VIP 会员 光盘购买访客留言
今天是: 2004年5月15日 星期六 您现在位于: 首页 → 技术文档 → delphi技术文档(系统编程技 巧)
规则7:永远不要在Tform1类中使用Form1(Never Use Form1 in Tform1) 你应该避免在类的方法中使用一个特定的对象名称,换句话说,你不应该在TForm1类的方法中直接使用Form1.如 果你确实需要使用当前的对象,你可以使用Self关键字。请牢记:大多数时候你都没有必要直接使用当前对象的方 法和数据。 如果你不遵循这条规则,当你为一个窗体类创建多个实例的时候,你会陷入麻烦当中。
相关文档
最新文档