Delphi编程技巧集锦

2016-02-19 15:13 1 1 收藏

下面是个简单易学的Delphi编程技巧集锦教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

【 tulaoshi.com - 编程语言 】

  ◇[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_MACHINESoftwareMicrosoftWindowsCurrentVersion

  SystemRoot键,取得如: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('command.com /c copy *.* c:',SW_Normal);winexec('start abc.txt');ShellExecute或ShellExecuteEx//启动文件关联程序function executefile(const filename,params,defaultDir:string;showCmd:integer):THandle;ExecuteFile('C:abca.txt','x.abc','c:abc',0);ExecuteFile('http://tingweb.yeah.net','','',0);ExecuteFile('mailto:tingweb@wx88.net','','',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]关于类型转换函数

FloatToStr//浮点转字符串FloatToStrF//带格式的浮点转字符串IntToHex//整数转16进制TimeToStrDateToStrDateTimeToStrFmtStr//按指定格式输出字符串FormatDateTime('YYYY-MM-DD,hh-mm-ss',DATE);

  ◇[DELPHI]字符串的过程和函数 

  Insert(obj,target,pos);//字符串target插入在pos的位置。如插入结果大于target最大长度,多出字符将被截掉。如Pos在255以外,会产生运行错。例如,st:='Brian',则Insert('OK',st,2)会使st变为'BrOKian'。 

  Delete(st,pos,Num);//从st串中的pos(整型)位置开始删去个数为Num(整型)个字符的子字串。例如,st:='Brian',则Delete(st,3,2)将变为Brn。 

  Str(value,st);//将数值value(整型或实型)转换成字符串放在st中。例如,a=2.5E4时,则str(a:10,st)将使st的值为' 25000'。 

  Val(st,var,code);//把字符串表达式st转换为对应整型或实型数值,存放在var中。St必须是一个表示数值的字符串,并符合数值常数的规则。在转换过程中,如果没有检测出错误,变量code置为0,否则置为第一个出错字符的位置。例如,st:=25.4E3,x是一个实型变量,则val(st,x,code)将使X值为25400,code值为0。 

  Copy(st.pos.num);//返回st串中一个位置pos(整型)处开始的,含有num(整型)个字符的子串。如果pos大于st字符串的长度,那就会返回一个空串,如果pos在255以外,会引起运行错误。例如,st:='Brian',则Copy(st,2,2)返回'ri'。 

  Concat(st1,st2,st3,stn);//把所有自变量表示出的字符串按所给出的顺序连接起来,并返回连接后的值。如果结果的长度255,将产生运行错误。例如,st1:='Brian',st2:=' ',st3:='Wilfred',则Concat(st1,st2,st3)返回'Brian Wilfred'。 

  Length(st);//返回字符串表达式st的长度。例如,st:='Brian',则Length(st)返回值为5。 

  Pos(obj,target);//返回字符串obj在目标字符串target的第一次出现的位置,如果target没有匹配的串,Pos函数的返回值为0。例如,target:='Brian Wilfred',则Pos('Wil',target)的返回值是7,Pos('hurbet',target)的返回值是0。 

  ◇[DELPHI]关于处理注册表

uses Registry;var reg:Tregistry;reg:=Tregistry.create;reg.rootkey:='HKey_Current_User';reg.openkey('Control PanelDesktop',false);reg.WriteString('Title Wallpaper','0');reg.writeString('Wallpaper',filelistbox1.filename);reg.closereg;reg.free;

  ◇[DELPHI]关于键盘常量名

VK_BACK/VK_TAB/VK_RETURN/VK_SHIFT/VK_CONTROL/VK_MENU/VK_PAUSE/VK_ESCAPE/VK_SPACE/VK_LEFT/VK_RIGHT/VK_UP/VK_DOWNF1--F12:$70(112)--$7B(123)A-Z:$41(65)--$5A(90)0-9:$30(48)--$39(57)

  ◇[DELPHI]初步判断程序母语

  DELPHI软件的DOS提示:This Program Must Be Run Under Win32.

  VC++软件的DOS提示:This Program Cannot Be Run In DOS Mode.

  ◇[DELPHI]操作Cookie

response.cookies("name").domain:='http://www.ddvip.com';with response.cookies.add dobeginname:='username';value:='username';end

  ◇[DELPHI]增加到文档菜单连接

  uses shellapi,shlOBJ;

  shAddToRecentDocs(shArd_path,pchar(filepath));//增加连接

  shAddToRecentDocs(shArd_path,nil);//清空

  ◇[杂类]备份智能ABC输入法词库

  windowssystemuser.rem

  windowssystemmmr.rem

  ◇[DELPHI]判断鼠标按键

  if GetAsyncKeyState(VK_LButton)0 then ... //左键

  if GetAsyncKeyState(VK_MButton)0 then ... //中键

  if GetAsyncKeyState(VK_RButton)0 then ... //右键

  ◇[DELPHI]设置窗体的最大显示

  onFormCreate事件

  self.width:=screen.width;

  self.height:=screen.height;

  ◇[DELPHI]按键接受消息

OnCreate事件中处理:Application.OnMessage:=MyOnMessage;procedure TForm1.MyOnMessage(var MSG:TMSG;var Handle:Boolean);beginif msg.message=256 then ... //ANY键if msg.message=112 then ... //F1if msg.message=113 then ... //F2end;

  ◇[杂类]隐藏共享文件夹

  共享效果:可访问,但不可见(在资源管理、网络邻居中)

  取共享名为:direction$

  访问://computer/dirction/

  ◇[Java Script]Java Script网页常用效果

  网页60秒定时关闭

  script language="java script"!--

  settimeout('window.close();',60000)

  --/script

  关闭窗口

  a href="/" onclick="javascript:window.close();return false;"关闭

  定时转URL

  meta http-equiv="refresh" content="40;url=http://www.086net.com"

  设为首页

  a onclick="this.style.behavior='url(#default#homepage)';this.sethomepage('http://086net.com');"href="http://cms.ddvip.com/index.php#"设为首页

  收藏本站

  a href="javascript:window.external.addfavorite('http://086net.com','[未名码头]')"收藏本站

  加入频道

  a href="javascript:window.external.addchannel('http://086net.com')"加入频道

  ◇[DELPHI]文本编辑相关

checkbox1.checked:=not checkbox1.checked;if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsBold] else richedit1.font.style:=richedit1.font.style-[fsBold]//粗体if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsItalic] else richedit1.font.style:=richedit1.font.style-[fsItalic]//斜体if checkbox1.checked then richedit1.font.style:=richedit1.font.style+[fsUnderline] else richedit1.font.style:=richedit1.font.style-[fsUnderline]//下划线memo1.alignment:=taLeftJustify;//居左memo1.alignment:=taRightJustify;//居右memo1.alignment:=taCenter;//居中

  ◇[DELPHI]随机产生文本色

  randomize;//随机种子

  memo1.font.color:=rgb(random(255),random(255),random(255));

  ◇[DELPHI]DELPHI5 UPDATE升级补丁序列号

  1000003185

  90X25fx0

  ◇[DELPHI]文件名的非法字符过滤

for i:=1 to length(s) doif s[i] in ['','/',':','*','?','','','|'] then

  ◇[DELPHI]转换函数的定义及说明 

  datetimetofiledate (datetime:Tdatetime):longint; 将Tdatetime格式的日期时间值转换成DOS格式的日期时间值 

  datetimetostr (datetime:Tdatetime):string; 将Tdatatime格式变量转换成字符串,如果datetime参数不包含日期值,返回字符串日期显示成为00/00/00,如果datetime参数中没有时间值,返回字符串中的时间部分显示成为00:00:00 AM 

  datetimetostring (var result string;

  const format:string;

  datetime:Tdatetime); 根据给定的格式字符串转换时间和日期值,result为结果字符串,format为转换格式字符串,datetime为日期时间值 

  datetostr (date:Tdatetime) 使用shortdateformat全局变量定义的格式字符串将date参数转换成对应的字符串 

  floattodecimal (var result:Tfloatrec;value:

  extended;precision,decimals:

  integer); 将浮点数转换成十进制表示 

  floattostr (value:extended):string 将浮点数value转换成字符串格式,该转换使用普通数字格式,转换的有效位数为15位。 

  floattotext (buffer:pchar;value:extended;

  format:Tfloatformat;precision,

  digits:integer):integer; 用给定的格式、精度和小数将浮点值value转换成十进制表示形式,转换结果存放于buffer参数中,函数返回值为存储到buffer中的字符位数,buffer是非0结果的字符串缓冲区。 

  floattotextfmt (buffer:pchar;value:extended;

  format:pchar):integer 用给定的格式将浮点值value转换成十进制表示形式,转换结果存放于buffer参数中,函数返回值为存储到buffer中的字符位数。 

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  inttohex (value:longint;digits:integer):

  string; 将给定的数值value转换成十六进制的字符串。参数digits给出转换结果字符串包含的数字位数。 

  inttostr (value:longint):string 将整数转换成十进制形式字符串 

  strtodate (const S:string):Tdatetime 将字符串转换成日期值,S必须包含一个合法的格式日期的字符串。 

  strtodatetime (const S:string):Tdatetime 将字符串S转换成日期时间格式,S必须具有MM/DD/YY HH:MM:SS[AM|PM]格式,其中日期和时间分隔符与系统时期时间常量设置相关。如果没有指定AM或PM信息,表示使用24小时制。 

  strtofloat (const S:string):extended; 将给定的字符串转换成浮点数,字符串具有如下格式:

  [+|-]nnn[.]nnn[+|-E|e+|-nnnn] 

  strtoint (const S:string):longint 将数字字符串转换成整数,字符串可以是十进制或十六进制格式,如果字符串不是一个合法的数字字符串,系统发生ECONVERTERROR异常 

  strtointdef (const S:string;default:

  longint):longint; 将字符串S转换成数字,如果不能将S转换成数字,strtointdef函数返回参数default的值。 

  strtotime (const S:string):Tdatetime 将字符串S转换成TDATETIME值,S具有HH:MM:SS[AM|PM]格式,实际的格式与系统的时间相关的全局变量有关。 

  timetostr (time:Tdatetime):string; 将参数TIME转换成字符串。转换结果字符串的格式与系统的时间相关常量的设置有关。 

  ◇[DELPHI]程序不出现在ALT+CTRL+DEL

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  在implementation后添加声明:

function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏RegisterServiceProcess(GetCurrentProcessID, 0);//显示

  用ALT+DEL+CTRL看不见

  ◇[DELPHI]程序不出现在任务栏

uses windowsvarExtendedStyle : Integer;beginApplication.Initialize;

来源:https://www.tulaoshi.com/n/20160219/1609169.html

延伸阅读
控制Windows的桌面壁纸是一些看图工具常有的功能,要实现该功能是非常容易的,以下的程序使壁纸换为我们想要的图片,如果THEPCHAR为空,那么就取消壁纸,变为Win默认色彩;但这种方法只是暂时的,在WINDOWS重新启动后还是恢复原来的位图,所以要永久保留还需要对WIN.INI文件进行改写操作,才能保存住我们改动的图片不被替换。但这种暂时性...
在Delphi中使用TidIcmpClient控件可以非常简单的实现图形界面的Ping! 新建一个工程,命名为 PingGUI.dpr ,窗口命名为“frmPing”,加入如下组件:     lstReplies: TListBox;     ICMP: TIdIcmpClient;     Panel1: TPanel;     btnPing: TButton; &nbs...
SQL语言作为关系数据库管理系统中的一种通用的结构查询语言,已经被众多的数据库管理系统所采用,如ORACLE、Sybase、Informix等数据库管理系统,它们都支持SQL 语言。Delphi与使用SQL语言的数据库管理系统兼容,在使用Delphi开发数据库应用程序时,我们可以使用SQL语言编程,支持SQL编程是Delphi的一个重要特征,这也是体现Delphi作为一个...
在Delphi中,专门定义了一组对象和部件用以绘制图形,完成一些简单的图像功能。利用这些对象、部件的方法,可以方便地绘制各种常用图形;通过设置它们的属性,能得到不同风格的图形。另外,通过对鼠标事件的定义,可以方便的设计图形绘制程序。 本章将介绍以下内容: 1. TCanvas,TPen,TBrush,TColor对象的方法及属性; 2. ...
财务软件中总少不了大写的金额表示方式,如下为一个简单的小写金额转换为大写的函数,其思路简单(可以说烂吧,居然利用了位置来转换),但是它却几乎可以无限制的转换,只要你能读得出来和写得进去: function Tform1.SmallTOBig(small:real):string;var SmallMonth,BigMonth:string;wei1,qianwei1:string[2];wei,qianwei,dianweizh...

经验教程

349

收藏

16
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部