<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[看点、学点、写点、吃点、喝点 - Delphi]]></title>
<link>http://www.pckno.com/</link>
<description><![CDATA[站在局外看人事]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[tenysw@163.com(tenysw)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>看点、学点、写点、吃点、喝点</title>
	<url>http://www.pckno.com/images/logos.gif</url>
	<link>http://www.pckno.com/</link>
	<description>看点、学点、写点、吃点、喝点</description>
</image>

			<item>
			<link>http://www.pckno.com/article/admin20100402201344.html</link>
			<title><![CDATA[IdHTTP ＋ RegExpr]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Fri,02 Apr 2010 20:13:44 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=86</guid>
		<description><![CDATA[目的：取得Web页面中的链接及链接文字。<br/><br/>操作：<br/><br/>&nbsp;&nbsp;1.使用IdHTTP获取网页的源码。<br/><br/>&nbsp;&nbsp;2.使用RegExpr定义正则表达式，获取网页中的链接及链接文字。<br/><br/><br/>实现方法如下：<br/><br/>//使用正则表达式，匹配网页源码，抽取内容。<br/>procedure GetLinkFromHtml(Const SourceHtmlTxt,Pattern:String; var aList:TStringList);<br/>var RegExp : TRegExpr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;HasMatch:Boolean;<br/>begin<br/>&nbsp;&nbsp;RegExp := TRegExpr.Cr&#101;ate;<br/><br/>&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;RegExp.Expression := Pattern;&nbsp;&nbsp; //范式<br/>&nbsp;&nbsp;&nbsp;&nbsp;HasMatch:=RegExp.Exec(SourceHtmlTxt);<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;while HasMatch do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//aList.Add(RegExp.Match[0]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aList.Add(RegExp.Match[2]+&#39;=&#39;+RegExp.Match[1]);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HasMatch := RegExp.ExecNext;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;finally<br/>&nbsp;&nbsp;&nbsp;&nbsp; FreeAndNil(RegExp);<br/>&nbsp;&nbsp;end;<br/>end;<br/><br/>//解析网页源码内容，用正则表达式读取所需链接。<br/>procedure ParsePageContent(pageText:String; var aList:TStringList);<br/>var aPattern:String;<br/>begin<br/>&nbsp;&nbsp; //正则表达式<br/>&nbsp;&nbsp; //链接形如：&lt;A href=&#34;<a href="http://ex01/public/abcdf.doc?attach=1" target="_blank" rel="external">http://ex01/public/abcdf.doc?attach=1</a>&#34; TARGET=&#34;_blank&#34; &gt;&lt;FONT color=&#34;#000000&#34;&gt;附件1.doc(37KB)&lt;/FONT&gt;&lt;/A&gt;<br/>&nbsp;&nbsp; aPattern:= &#39;&lt;A\s+href\s*=\s*&#34;&#34;{0}([^&gt;].*?)\?attach=1&#34;&#34;{0}\s*TARGET\s*=\s*&#34;&#34;{0}_blank&#34;&#34;{0}\s*&gt;\s*&lt;FONT\s+color\s*=\s*&#34;&#34;{0}#000000&#34;&#34;{0}&gt;(.*?)\(([\d]+)KB\)\s*&lt;/FONT&gt;\s*&lt;/A&gt;&#39;;<br/><br/>&nbsp;&nbsp; GetLinkFromHtml(pageText,aPattern,aList); //使用正则表达式，匹配网页内容。<br/>end;<br/><br/><br/>//读取网页源码，从网页中得到文件的链接地址以及文件名称等内容。<br/>//返回参数：HrefList。<br/>procedure GetLinkList(EFileLink,Domain,UserName,PassWD:string; var HrefList:TStringList);<br/>var aIdHTTP:TIdHTTP;<br/>&nbsp;&nbsp;&nbsp;&nbsp;WebHTTPContent:String;<br/>begin<br/>&nbsp;&nbsp; aIdHTTP:=TIdHTTP.Cr&#101;ate(nil);<br/><br/>&nbsp;&nbsp; try<br/>&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.BasicAuthentication:=True;&nbsp;&nbsp;//设置权限<br/>&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Username:=Domain+&#39;\&#39;+UserName;<br/>&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Password:=PassWD;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; //识别浏览器<br/>&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.UserAgent:=&#39;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Accept:=&#39;image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.ContentType:=&#39;text/xml; charset=&#39;&#39;UTF-8&#39;&#39;&#39;;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Connection:=&#39;Keep-Alive&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; aIdHTTP.Request.Method:=(hmGet);//设置Request的方法<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; //得到网页的内容（以OWA方式可打开）<br/>&nbsp;&nbsp;&nbsp;&nbsp; //EFileLink:=&#39;<a href="http://ex01/public/" target="_blank" rel="external">http://ex01/public/</a>工作流程/关于调整设备类型的通知.EML&#39;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; WebHTTPContent:=aIdHTTP.Get(EFileLink);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; //UTF8解码<br/>&nbsp;&nbsp;&nbsp;&nbsp; WebHTTPContent:=Utf8Decode(WebHTTPContent);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; //解析网页源码 <br/>&nbsp;&nbsp;&nbsp;&nbsp; ParsePageContent(WebHTTPContent, HrefList);<br/>&nbsp;&nbsp; finally<br/>&nbsp;&nbsp;&nbsp;&nbsp; FreeAndNil(aIdHTTP);<br/>&nbsp;&nbsp; end;<br/>end;<br/> ]]></description>
		</item>
		
			<item>
			<link>http://www.pckno.com/article/FengLeShiChangTaiZhuan.html</link>
			<title><![CDATA[疯了，是常态 （转）]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Fri,02 Apr 2010 20:04:25 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=85</guid>
		<description><![CDATA[&lt;一&gt;<br/><br/>用D7写了一个调用C#的WebService客户端程序。开了一个线程，定时访问WebSerice的接口。<br/><br/>程序在我的本本上（WINXP）测试时，跑的很欢畅。<br/><br/>&lt;二&gt;<br/><br/>昨天晚上，把这个WebService客户端以NT服务的形式注册部署到服务器上（Win2003 Server）。<br/><br/>这样开机后便可以服务方式自动运行，不用人工监管。<br/><br/>待部署完毕后，启动服务。但执行时间一到，日志中监测到报错：调用WebService时异常。<br/><br/>可原本好好的，咋这就纳闷了呢！？<br/><br/>并且这是个很简单的东东，于是，郁闷。<br/><br/>服务器没有IDE环境，Debug非常痛苦，日志记录跟踪。<br/><br/>跟踪发现，得到WebService对象的时候是没有问题的，但在调用其接口的时候产生了异常。<br/><br/>又单独写了WebService客户端可执行的测试程序，在服务器上运行。<br/><br/>结果Throw出的Exception是“Access violation at address 00E24255. Write of address 00E24255”。<br/><br/>晕菜。这就是出名的“Access violation”。<br/><br/>没办法，解决问题吧。<br/><br/>通常访问对象（内存地址）不存在或COM异常时会有这种报错。<br/><br/>先在网上搜，看看是不是WebService的问题。<br/><br/>baidu＋google，搜个底朝天，无解，继续郁闷。<br/><br/>“Access Violation”果真是大名鼎鼎－－“最令人气恼的Windows程序遇到的错误之一”。<br/><br/>关于“Access violation”，的确有N多条记录被搜到，但无对症的。<br/><br/>其中说法不一，各有特色。<br/><br/>有关于系统dll的，有关于硬件设备及其驱动的。<br/><br/>还有一贴，好像是老猫写的，关于Delphi Access violations 问题的解决之道，亦非我所需者。<br/><br/>另有一贴，说是线程中访问ADO的问题，但我已经初试化了COM接口。<br/><br/>于是打开程序，把线程排查看了一边，没问题，好好的。<br/><br/>另外，一般关于Delphi打造WebService客户端的例子中，都会提到THTTPRIO的。<br/><br/>而我一向是不用这个东东的，嫌麻烦。<br/><br/>莫非是这个小东东在搞鬼，它也就是起到接口转换的作用。<br/><br/>我加了一个。转了一下。试了一次。<br/><br/>徒增加了一点郁闷。<br/><br/>&lt;三&gt;<br/><br/>接下来琢磨：程序在笔记本上无误，但部署在到服务器上出错。说明服务器的环境有问题，而非程序本身之过。<br/><br/>莫非在线程中调用WebService服务，在客户端需要部署什么插件或注册什么东东乎？<br/><br/>就象部署MIDAS的时候，需要注册midas.dll一样。<br/><br/>于是乎，狂搜。<br/><br/>在CSDN上发现了一个哥们说－－<br/><br/>&nbsp;&nbsp;&gt;使用Delphi在客户端调用WebService<br/>&nbsp;&nbsp;&gt;确保你的电脑上装了SoapToolkit<br/>&nbsp;&nbsp;&gt;新建项目，要Uses ComObj<br/><br/>很好奇：SoapToolkit。<br/><br/>于是乎，搜。下载。<br/><br/>把“SoapToolkit30.EXE”，装到服务器上。<br/><br/>然，问题依然。<br/><br/>可选择的：急死，或气死。<br/><br/>&lt;四&gt;<br/><br/>时值深夜，大雨如注。<br/><br/>抓耳挠腮，百思不解。<br/><br/>蚊虫袭来，浑然不觉。<br/><br/>青灯古佛，颇有禅意。<br/><br/>凄凄惨惨戚戚中，我只能独自一遍一遍大喊：买嘎的！买嘎的！<br/><br/>再想办法~~<br/><br/>待从头，收拾旧山河。<br/><br/>&lt;五&gt;<br/><br/>想来想去，没办法了。换台机子试试。<br/><br/>于是找了一台PC，同样是Win2003 Server。<br/><br/>试了。没有问题。<br/><br/>信心大增。<br/><br/>突然，慢着－－莫非是Delphi的问题？－－这台PC上装有D7的IDE，而服务器上没有安装Delphi。<br/><br/>莫非在Delphi在安装的时候，注册了什么东东，这样WebService客户端就可以运行了。<br/><br/>而没有安装IED的机器就不能运行？－－按说不会，调用WebService不会太依赖客户端的环境。<br/><br/>但，总结以往血淋淋的教训，从业的经验告诉过我们－－这是值得试试的。<br/><br/>高人曾说过：绝望的时候，稻草是可以救命的。<br/><br/>&lt;六&gt;<br/><br/>我的稻草是一张D7的安装光盘，哪怕是盗版的。 *_*<br/><br/>But，就在这个深夜－－华南的多雨的闷热的深夜里－－我的稻草没有在身边。 :(<br/><br/>（转折句，的确能够加强语感，我喜欢！）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>它在光盘包里。光盘包在行李箱里。而行李箱在住所。<br/><br/>住所在X公里外（X&gt;=5）。<br/><br/>&lt;七&gt;<br/><br/>坐上车的时候，雨已经停了。<br/><br/>回到住所，巴西正对克罗地亚。<br/><br/>那群跳桑巴舞的家伙在拼命的时候，WK，我也在北京时间里奋斗。<br/><br/>不过，对不起了，兄弟们！你们继续，俺洗洗睡了。<br/><br/>天生对某些运动不敢兴趣。<br/><br/>辗转反侧。<br/><br/>绕树三匝。<br/><br/>终于睡去。<br/><br/>&lt;八&gt;<br/><br/>7点01分，短信。是昨夜比赛结果。免费赠的。<br/><br/>起床。<br/><br/>D7光盘。<br/><br/>吃点喝点。<br/><br/>上班。<br/><br/>&lt;九&gt;<br/><br/>D7在哪里？D7在光盘上。光盘在光驱中。<br/><br/>光盘是好光盘。光驱是好光驱。不错。<br/><br/>茶叶还没有泡展，已安装完毕。<br/><br/>对一些人来说，我们深爱着D7－－我们吃饭的家伙。<br/><br/>欣欣然。<br/><br/>D7的启动画面已经在Win2003 Server的服务器上出现了。<br/><br/>但是，报错了－－<br/><br/>是“Can&#39;t load package:dclite70.bpl”的异常。<br/><br/>同样显示的，还有“Access Violation”的错误。<br/><br/>我，脸绿了。<br/><br/>不止是简单的faint！<br/><br/>难道安装出有问题了？在安装时没有报错。<br/><br/>第一次遇到这种问题－－我信赖的D7啊！<br/><br/>要有怀疑精神。怀疑自己安装错了。<br/><br/>卸载。<br/><br/>OS重启。<br/><br/>再次安装。<br/><br/>再次安装完毕。<br/><br/>再次启动D7。<br/><br/>再次是“Can&#39;t load package:dclite70.bpl”的异常。<br/><br/>再次显示的，还有“Access Violation”的错误。<br/><br/>于是，开始缺氧＋眩晕。<br/><br/>&lt;十&gt;<br/><br/>从昏厥中醒来，深深太平洋的深深质疑 Win2003 Server ＋ D7 的组合。<br/><br/>而且，这个还是个“刀片”服务器。<br/><br/>当时，有了一个决定。<br/><br/>凡遇到用Win2003者，先爆打一顿，弄成半死不活，半身不遂，半条命，爆头。<br/><br/>然后再用“刀片”想法弄成酱。<br/><br/>酱油也行。<br/><br/>:&#34;(<br/><br/>&lt;十一&gt;<br/><br/>行走江湖。安全第一。<br/><br/>风平浪静。海阔天空。<br/><br/>平时对Win2003使用不多，了解不深。<br/><br/>看了看系统，是Standard Edition ＋ Service Pack 1的。<br/><br/>上网了解了一下，N个人曾在Win2003 Server下遇到过各种各样的“Access Violation”。<br/><br/>打过各种各样的补丁。<br/><br/>又特意去看了看那台PC，装的是Enterprise Edition ＋ Service Pack 1的。<br/><br/>版本果然不一样。<br/><br/>于是，找补丁。<br/><br/>期待－－蓦然回首。那X却X。<br/><br/>&lt;十二&gt;<br/><br/>百二秦关终属楚。<br/><br/>三千越甲可吞吴。<br/><br/>微软的补丁可真及时，勘比宋押司。<br/><br/>补丁号码是：KB904639<br/><br/>名称是：Windows Server 2003（32 位 x86）更新程序 (KB904639)<br/><br/>快速描述：安装本更新程序可以解决一个使某些应用程序无法在 64 位环境中运行的问题。<br/><br/>文件名： WindowsServer2003-KB904639-x86-CHS.exe<br/> <br/>版本： 904639<br/><br/>知识库 (KB) 文章： KB904639 <br/><br/>发布日期： 2005/10/24<br/><br/>语言： 简体中文<br/> <br/>下载大小： 560 KB<br/><br/>概述：<br/>安装本更新程序可以解决一个使某些应用程序无法在 64 位环境中运行的问题。<br/>尝试运行使用 Microsoft 数据访问组件 (MDAC) 2.8 的接口远程处理组件的 64 位应用程序时，<br/>您可能会收到“access violation”（访问冲突）错误消息，<br/>或者在使用任务管理器查看时 dllhost.exe 进程可能会显示 100% CPU 占用率。<br/>安装本更新程序之后，可能需要重新启动计算机。<br/><br/><br/>莫非这就是传说中的Cut the Gordian Knot的亚历山大之剑？抑或是达摩克利斯之剑？<br/><br/>试。<br/><br/>果然－－不爽。<br/><br/>念去去。<br/><br/>千里烟波。<br/><br/>凝噎。无语。崩溃。<br/><br/>&lt;十三&gt;<br/><br/>又找其他的补丁。<br/><br/>没有合格的。<br/><br/>D7仍启动仍报错：Can&#39;t load package:dclite70.bpl。<br/><br/>但在PC机上（Enterprise Edition ＋ Service Pack 1）是可以的。<br/><br/>诅咒Microsoft。<br/><br/>废池乔木。<br/><br/>犹厌言兵。<br/><br/>崩溃中。<br/><br/>&lt;十四&gt;<br/><br/>怎么办？<br/><br/>接着搜。<br/><br/>随便。摧残。<br/><br/>飞沙走石。天昏地暗。<br/><br/>风雨如晦。鸡鸣不已。<br/><br/>黄河之水天上来。<br/><br/>一片孤城万仞山。<br/><br/>两岸猿声啼不住。<br/><br/>日照香炉升紫烟。<br/><br/>如履薄冰。如临深渊。<br/><br/>如芒在背。如坐针毡。<br/><br/>如切如磋。如琢如磨。<br/><br/>&lt;十五&gt;<br/><br/>最是那一低头的温柔，恰似水莲花不胜凉风的娇羞。<br/><br/>以dclite70.bpl为关键字，搜索。<br/><br/>感谢互联网吧！<br/><br/>感谢搜索引擎吧！<br/><br/>感谢发贴回贴的兄弟吧！<br/><br/>俺的神啊上帝以及老天爷啊！<br/><br/>亚历山大来了！<br/><br/>在52SDN找到一个标题为“delphi 7 能不能在windows 2003 server上安装？”的帖子。<br/><br/>内容如下：<br/><br/>安装在2003上想试试，没想到打开提示dclite70.bpl访问非法地址。<br/><br/>后果就是项目的选项窗口打不开（访问非法地址）。<br/><br/>那位兄弟有解决办法？<br/><br/>------------<br/><br/>安装过的兄弟提示一下，谢谢！<br/><br/>------------<br/><br/>可以...我装过了...<br/><br/>------------<br/><br/>对delphi 关闭数据执行保护就好了 :)<br/><br/>------------<br/><br/>看到最后一行！<br/><br/>疯了！<br/><br/>&lt;十六&gt;<br/><br/>右击“我的电脑”。单击“属性”。<br/><br/>在“系统属性”中单击“高级”。<br/><br/>在“性能”中单击“设置”。<br/><br/>在“性能选项”中单击“数据执行保护”。<br/><br/>单击“添加”。选择要运行的程序。<br/><br/>OK。就这么简单。<br/><br/>&lt;十七&gt;<br/><br/>借用温大侠的话。<br/><br/>如鹤临风。<br/><br/>如鸢凌空。<br/><br/>如鸾舞松。<br/><br/>如鹏回峰。<br/><br/>疯了！<br/><br/>&lt;十八&gt;<br/><br/>小项，before Game Over，say：天亡我，非用兵之罪也。<br/><br/>Windows 2003 Standard Edition。<br/><br/>今天，你疯了没有！？]]></description>
		</item>
		
			<item>
			<link>http://www.pckno.com/article/DelphiCaoZuoexcel.html</link>
			<title><![CDATA[delphi操作excel]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Tue,30 Mar 2010 09:15:08 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=80</guid>
		<description><![CDATA[一) 使用动态创建的方法<br/><br/>首先创建 Excel 对象，使用ComObj:<br/>var ExcelApp: Variant;<br/>ExcelApp := Cr&#101;ateOleObject( &#39;Excel.Application&#39; );<br/><br/>1) 显示当前窗口：<br/>ExcelApp.Visible := True;<br/><br/>2) 更改 Excel 标题栏：<br/>ExcelApp.Caption := &#39;应用程序调用 Microsoft Excel&#39;;<br/><br/>3) 添加新工作簿：<br/>ExcelApp.WorkBooks.Add;<br/><br/>4) 打开已存在的工作簿：<br/>ExcelApp.WorkBooks.Open( &#39;C:\Excel\Demo.xls&#39; );<br/><br/>5) 设置第2个工作表为活动工作表：<br/>ExcelApp.WorkSheets[2].Activate;<br/>或<br/>ExcelApp.WorksSheets[ &#39;Sheet2&#39; ].Activate;<br/><br/>6) 给单元格赋值：<br/>ExcelApp.Cells[1,4].Value := &#39;第一行第四列&#39;;<br/><br/>7) 设置指定列的宽度（单位：字符个数），以第一列为例：<br/>ExcelApp.ActiveSheet.Columns[1].ColumnWidth := 5;<br/><br/>8) 设置指定行的高度（单位：磅）（1磅＝0.035厘米），以第二行为例：<br/>ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米<br/><br/>9) 在第8行之前插入分页符：<br/>ExcelApp.WorkSheets[1].Rows.PageBreak := 1;<br/><br/>10) 在第8列之前删除分页符：<br/>ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;<br/><br/>11) 指定边框线宽度：<br/>ExcelApp.ActiveSheet.Range[ &#39;B3:D4&#39; ].Borders[2].Weight := 3;<br/>1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )<br/><br/>12) 清除第一行第四列单元格公式：<br/>ExcelApp.ActiveSheet.Cells[1,4].ClearContents;<br/><br/>13) 设置第一行字体属性：<br/>ExcelApp.ActiveSheet.Rows[1].Font.Name := &#39;隶书&#39;;<br/>ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;<br/>ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;<br/>ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;<br/><br/>14) 进行页面设置：<br/><br/>a.页眉：<br/>ExcelApp.ActiveSheet.PageSetup.CenterHeader := &#39;报表演示&#39;;<br/>b.页脚：<br/>ExcelApp.ActiveSheet.PageSetup.CenterFooter := &#39;第&amp;P页&#39;;<br/>c.页眉到顶端边距 2cm：<br/>ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;<br/>d. 页脚到底端边距3cm：<br/>ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;<br/>e.顶边距2cm：<br/>ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;<br/>f.底边距2cm：<br/>ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;<br/>g.左边距2cm：<br/>ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;<br/>h.右边距2cm：<br/>ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;<br/>i.页面水平居中：<br/>ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;<br/>j.页面垂直居中：<br/>ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;<br/>k.打印单元格网线：<br/>ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;<br/><br/>15) 拷贝操作：<br/><br/>a. 拷贝整个工作表：<br/>ExcelApp.ActiveSheet.Used.Range.Copy;<br/>b.拷贝指定区域：<br/>ExcelApp.ActiveSheet.Range[ &#39;A1:E2&#39; ].Copy;<br/>c.从A1位置开始粘贴：<br/>ExcelApp.ActiveSheet.Range.[ &#39;A1&#39; ].PasteSpecial;<br/>d.从文件尾部开始粘贴：<br/>ExcelApp.ActiveSheet.Range.PasteSpecial;<br/><br/>16) 插入一行或一列：<br/>a. ExcelApp.ActiveSheet.Rows[2].Ins&#101;rt;<br/>b. ExcelApp.ActiveSheet.Columns[1].Ins&#101;rt;<br/><br/>17) 删除一行或一列：<br/>a. ExcelApp.ActiveSheet.Rows[2].Del&#101;te;<br/>b. ExcelApp.ActiveSheet.Columns[1].Del&#101;te;<br/><br/>18) 打印预览工作表：<br/>ExcelApp.ActiveSheet.PrintPreview;<br/><br/>19) 打印输出工作表：<br/>ExcelApp.ActiveSheet.PrintOut;<br/><br/>20) 工作表保存：<br/>if not ExcelApp.ActiveWorkBook.Saved then<br/>ExcelApp.ActiveSheet.PrintPreview;<br/><br/>21) 工作表另存为：<br/>ExcelApp.SaveAs( &#39;C:\Excel\Demo1.xls&#39; );<br/><br/>22) 放弃存盘：<br/>ExcelApp.ActiveWorkBook.Saved := True;<br/><br/>23) 关闭工作簿：<br/>ExcelApp.WorkBooks.Close;<br/><br/>24) 退出 Excel：<br/>ExcelApp.Quit;<br/><br/>(二) 使用Delphi 控件方法<br/>在Form中分别放入 ExcelApplication, ExcelWorkbook和ExcelWorksheet。<br/>正在装载数据……<br/><br/><br/>1） 打开Excel<br/>ExcelApplication1.Connect;<br/><br/>2) 显示当前窗口：<br/>ExcelApplication1.Visible[0]:=True;<br/><br/>3) 更改 Excel 标题栏：<br/>ExcelApplication1.Caption := &#39;应用程序调用 Microsoft Excel&#39;;<br/><br/>4) 添加新工作簿：<br/>ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));<br/><br/>5) 添加新工作表：<br/>var Temp_Worksheet: _WorkSheet;<br/>begin<br/>Temp_Worksheet:=ExcelWorkbook1.<br/>WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;<br/>ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);<br/>End;<br/><br/>6) 打开已存在的工作簿：<br/>ExcelApplication1.Workbooks.Open (c:\a.xls<br/>EmptyParam,EmptyParam,EmptyParam,EmptyParam,<br/>EmptyParam,EmptyParam,EmptyParam,EmptyParam,<br/>EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)<br/><br/>7) 设置第2个工作表为活动工作表：<br/>ExcelApplication1.WorkSheets[2].Activate; 或<br/>ExcelApplication1.WorksSheets[ &#39;Sheet2&#39; ].Activate;<br/><br/>8) 给单元格赋值：<br/>ExcelApplication1.Cells[1,4].Value := &#39;第一行第四列&#39;;<br/><br/>9) 设置指定列的宽度（单位：字符个数），以第一列为例：<br/>ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;<br/><br/>10) 设置指定行的高度（单位：磅）（1磅＝0.035厘米），以第二行为例：<br/>ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米<br/><br/>11) 在第8行之前插入分页符：<br/>ExcelApplication1.WorkSheets[1].Rows.PageBreak := 1;<br/><br/>12) 在第8列之前删除分页符：<br/>ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0;<br/><br/>13) 指定边框线宽度：<br/>ExcelApplication1.ActiveSheet.Range[ &#39;B3:D4&#39; ].Borders[2].Weight := 3;<br/>1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )<br/><br/>14) 清除第一行第四列单元格公式：<br/>ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;<br/><br/>15) 设置第一行字体属性：<br/>ExcelApplication1.ActiveSheet.Rows[1].Font.Name := &#39;隶书&#39;;<br/>ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue;<br/>ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True;<br/>ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True;<br/><br/>16) 进行页面设置：<br/>a.页眉：<br/>ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := &#39;报表演示&#39;;<br/>b.页脚：<br/>ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := &#39;第&amp;P页&#39;;<br/>c. 页眉到顶端边距2cm：<br/>ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;<br/>d.页脚到底端边距3cm：<br/>ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;<br/>e.顶边距2cm：<br/>ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035;<br/>f.底边距2cm：<br/>ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035;<br/>g.左边距2cm：<br/>ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035;<br/>h.右边距2cm：<br/>ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035;<br/>i.页面水平居中：<br/>ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;<br/>j.页面垂直居中：<br/>ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035;<br/>k. 打印单元格网线：<br/>ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True;<br/><br/>17) 拷贝操作：<br/><br/>a.拷贝整个工作表：<br/>ExcelApplication1.ActiveSheet.Used.Range.Copy;<br/><br/>b.拷贝指定区域：<br/>ExcelApplication1.ActiveSheet.Range[ &#39;A1:E2&#39; ].Copy;<br/><br/>c.从A1位置开始粘贴：<br/>ExcelApplication1.ActiveSheet.Range.[ &#39;A1&#39; ].PasteSpecial;<br/><br/>d. 从文件尾部开始粘贴：<br/>ExcelApplication1.ActiveSheet.Range.PasteSpecial;<br/><br/>18) 插入一行或一列：<br/>a. ExcelApplication1.ActiveSheet.Rows[2].Ins&#101;rt;<br/>b. ExcelApplication1.ActiveSheet.Columns[1].Ins&#101;rt;<br/><br/>19) 删除一行或一列：<br/>a. ExcelApplication1.ActiveSheet.Rows[2].Del&#101;te;<br/>b. ExcelApplication1.ActiveSheet.Columns[1].Del&#101;te;<br/><br/>20) 打印预览工作表：<br/>ExcelApplication1.ActiveSheet.PrintPreview;<br/><br/>21) 打印输出工作表：<br/>ExcelApplication1.ActiveSheet.PrintOut;<br/><br/>22) 工作表保存：<br/>if not ExcelApplication1.ActiveWorkBook.Saved then<br/>ExcelApplication1.ActiveSheet.PrintPreview;<br/><br/>23) 工作表另存为：<br/>ExcelApplication1.SaveAs( &#39;C:\Excel\Demo1.xls&#39; );<br/><br/>24) 放弃存盘：<br/>ExcelApplication1.ActiveWorkBook.Saved := True;<br/><br/>25) 关闭工作簿：<br/>ExcelApplication1.WorkBooks.Close;<br/><br/>26) 退出 Excel：<br/>ExcelApplication1.Quit;<br/>ExcelApplication1.Disconnect;<br/><br/>(三) 使用Delphi 控制Excle二维图<br/>在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet<br/>var asheet1,achart, range:variant;<br/><br/>1）选择当第一个工作薄第一个工作表<br/>asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1];<br/><br/>2）增加一个二维图<br/>achart:=asheet1.chartobjects.add(100,100,200,200);<br/><br/>3）选择二维图的形态<br/>achart.chart.charttype:=4;<br/><br/>4）给二维图赋值<br/>series:=achart.chart.seriescollection;<br/>range:=sheet1!r2c3:r3c9;<br/>series.add(range,true);<br/><br/>5）加上二维图的标题<br/>achart.Chart.HasTitle:=True;<br/>achart.Chart.ChartTitle.Characters.Text:=’ Excle二维图’<br/><br/><br/>//////////////////////////////////////////////////////////////////////////////////////<br/>列居中<br/>ExcelApp.ActiveSheet.Columns[19].horizontalalignment :=3;<br/>行居中<br/>ExcelApp.ActiveSheet.Rows[1].horizontalalignment :=3; //列头居中<br/>cell居中<br/>ExcelApp.ActiveSheet.cells[1,2].horizontalalignment :=3;<br/><br/>//////////////////////////////////////////////////////////////////<br/>ExcelApp.Cells[i,j].Value :=&#39;&#39;&#39;&#39; + sgRet.Cells[j-1,i-1] //不使用科学记数法]]></description>
		</item>
		
			<item>
			<link>http://www.pckno.com/article/DelphiCaoZuoExcelMingLing.html</link>
			<title><![CDATA[Delphi操作Excel命令]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Tue,30 Mar 2010 09:09:33 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=79</guid>
		<description><![CDATA[<br/><br/>使用Excel最好用Comobj方式，它能够达到完全控制excel的目的。<br/><br/>不过这种方式在Delphi中没有代码提示,而使用Server控件的方式有！<br/>下边是使用comobj的，使用Server 的就不放进来了！另外用完Variant要释放掉<br/>这样比较好（ExcelApp:=Unassigned;）<br/><br/>use Comobj<br/>(一) 使用动态创建的方法<br/>首先创建 Excel 对象,使用ComObj:<br/>var ExcelApp: Variant;<br/>ExcelApp := Cr&#101;ateOleObject( &#39;Excel.Application&#39; );<br/>1) 显示当前窗口:<br/>ExcelApp.Visible := True;<br/>2) 更改 Excel 标题栏:<br/>ExcelApp.Caption := &#39;应用程序调用 Microsoft Excel&#39;;<br/>3) 添加新工作簿:<br/>ExcelApp.WorkBooks.Add;<br/>4) 打开已存在的工作簿:<br/>ExcelApp.WorkBooks.Open( &#39;C:\Excel\Demo.xls&#39; );<br/>5) 设置第2个工作表为活动工作表:<br/>ExcelApp.WorkSheets[2].Activate;<br/>或<br/>ExcelApp.WorksSheets[ &#39;Sheet2&#39; ].Activate;<br/>6) 给单元格赋值:<br/>ExcelApp.Cells[1,4].Value := &#39;第一行第四列&#39;;<br/>7) 设置指定列的宽度(单位:字符个数),以第一列为例:<br/>ExcelApp.ActiveSheet.Columns[1].ColumnWidth := 5;<br/>8) 设置指定行的高度(单位:磅)(1磅＝0.035厘米),以第二行为例:<br/>ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米<br/>9) 在第8行之前插入分页符:<br/>ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;<br/>10) 在第8列之前删除分页符:<br/>ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;<br/>11) 指定边框线宽度:<br/>ExcelApp.ActiveSheet.Range[ &#39;B3:D4&#39; ].Borders[2].Weight := 3;<br/>1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )<br/>12) 清除第一行第四列单元格公式:<br/>ExcelApp.ActiveSheet.Cells[1,4].ClearContents;<br/>13) 设置第一行字体属性:<br/>ExcelApp.ActiveSheet.Rows[1].Font.Name := &#39;隶书&#39;;<br/>ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;<br/>ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;<br/>ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;<br/>14) 进行页面设置:<br/>a.页眉:<br/>ExcelApp.ActiveSheet.PageSetup.CenterHeader := &#39;报表演示&#39;;<br/>b.页脚:<br/>ExcelApp.ActiveSheet.PageSetup.CenterFooter := &#39;第&amp;P页&#39;;<br/>c.页眉到顶端边距2cm:<br/>ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;<br/>d.页脚到底端边距3cm:<br/>ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;<br/>e.顶边距2cm:<br/>ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;<br/>f.底边距2cm:<br/>ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;<br/>g.左边距2cm:<br/>ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;<br/>h.右边距2cm:<br/>ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;<br/>i.页面水平居中:<br/>ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;<br/>j.页面垂直居中:<br/>ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;<br/>k.打印单元格网线:<br/>ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;<br/>15) 拷贝操作:<br/>a.拷贝整个工作表:<br/>ExcelApp.ActiveSheet.Used.Range.Copy;<br/>b. 拷贝指定区域:<br/>ExcelApp.ActiveSheet.Range[ &#39;A1:E2&#39; ].Copy;<br/>c.从A1位置开始粘贴:<br/>ExcelApp.ActiveSheet.Range.[ &#39;A1&#39; ].PasteSpecial;<br/>d.从文件尾部开始粘贴:<br/>ExcelApp.ActiveSheet.Range.PasteSpecial;<br/>16) 插入一行或一列:<br/>a. ExcelApp.ActiveSheet.Rows[2].Ins&#101;rt;<br/>b. ExcelApp.ActiveSheet.Columns[1].Ins&#101;rt;<br/>17) 删除一行或一列:<br/>a. ExcelApp.ActiveSheet.Rows[2].Del&#101;te;<br/>b. ExcelApp.ActiveSheet.Columns[1].Del&#101;te;<br/>18) 打印预览工作表:<br/>ExcelApp.ActiveSheet.PrintPreview;<br/>19) 打印输出工作表:<br/>ExcelApp.ActiveSheet.PrintOut;<br/>20) 工作表保存:<br/>if not ExcelApp.ActiveWorkBook.Saved then<br/>ExcelApp.ActiveSheet.PrintPreview;<br/>21) 工作表另存为:<br/>ExcelApp.SaveAs( &#39;C:\Excel\Demo1.xls&#39; );<br/>22) 放弃存盘:<br/>ExcelApp.ActiveWorkBook.Saved := True;<br/>23) 关闭工作簿:<br/>ExcelApp.WorkBooks.Close;<br/>24) 退出 Excel:<br/>ExcelApp.Quit;]]></description>
		</item>
		
			<item>
			<link>http://www.pckno.com/article/DelphiKongZhiExcelDeChongYaoShuXingHeFangFa.html</link>
			<title><![CDATA[Delphi控制Excel的重要属性和方法]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Tue,30 Mar 2010 09:08:16 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=78</guid>
		<description><![CDATA[<div class="codeText">
<div class="codeHead">Delphi代码</div>
<ol start="1" class="dp-delphi">
    <li class="alt"><span><span>在delphi中调用excel有四种方式，我们选取其中的一种用OleObject来装载excel工作表的方式来谈delphi控制&nbsp;excel的重要属性和方法。&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　首先给出通过OLE创建的一些主要代码步进行简单说明：&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　创建OLE对象：&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　Var&nbsp;olecon:&nbsp;TOleContainer;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　Olecon:=&nbsp;TOleContainer<span class="number">.</span><span>Create(self);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　&nbsp;Olecon<span class="number">.</span><span>oleobject:=&nbsp;Olecon</span><span class="number">.</span><span>CreateObject(</span><span class="string">'excel.sheet'</span><span>,</span><span class="keyword">false</span><span>)；&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　&nbsp;　或选择导入一个excel文件来创建OLE对象：&nbsp;&nbsp;</span></li>
    <li><span>Olecon<span class="number">.</span><span>oleobject:=&nbsp;Olecon</span><span class="number">.</span><span>CreateObjectFromFile(xlsname,</span><span class="keyword">false</span><span>)；&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　最好隐藏excel的几个工具条,这样就好象是嵌在你的程序中的一个表而已了：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　Olecon<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>CommandBars[</span><span class="string">'Standard'</span><span>].Visible:=</span><span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　Olecon<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>CommandBars[</span><span class="string">'Formatting'</span><span>].Visible:=</span><span class="keyword">false</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　Olecon<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>CommandBars[</span><span class="string">'Reviewing'</span><span>].Visible:=</span><span class="keyword">false</span><span>；&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　然后显示并激活excel表,对TOleContainer定义的对象：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　Olecon<span class="number">.</span><span>show;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　Olecon<span class="number">.</span><span>doverb(</span><span class="number">0</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　这样基本可以了，但TOleContainer有个不好的地方，就是当你一点击其它控件是就它就失去焦点，然后就自动退出，其实并没有真的退出，只是需&nbsp;要你再次激活它而已，关键是当它失去焦点的时候就excel对象就不见了，可以用Timage控件把TOleContainer所在的地方有EXCEL时&nbsp;候的区域图片截下来骗骗用户，我们这里主要不是讲这个，就不详述了。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　下面我们就开始讲Excel_TLB中的接口的常用属性和方法，主&nbsp;要是针对导出和设定报表格式的一些接口元素。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　单元格的读写属性：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　olecon<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>cells</span><span class="number">.</span><span>item[</span><span class="number">1</span><span>,</span><span class="number">1</span><span>];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　&nbsp;olecon<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>cells(</span><span class="number">1</span><span>,</span><span class="number">1</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　&nbsp;olecon<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>cells[</span><span class="number">1</span><span>,</span><span class="number">1</span><span>].Value;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　上面三种都可以对工作表的&lsquo;A1&rsquo;单元进行读写。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>在delphi中对单元格(集)，区域，工作表等所有对象的操作都是要Variant来实现的。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　自己的程序中选定区域赋给&nbsp;Range:&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　Var&nbsp;range,sheet:Variant;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　Range:=&nbsp;olecon<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>Range[</span><span class="string">'A1:C3'</span><span>];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　或者：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　Sheet:=&nbsp;olecon<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>Activesheet;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　Range:=&nbsp;olecon<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>Range[sheet</span><span class="number">.</span><span>cells[</span><span class="number">1</span><span>,</span><span class="number">1</span><span>],sheet</span><span class="number">.</span><span>cells[</span><span class="number">3</span><span>,</span><span class="number">3</span><span>]];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　对上面的Range合并单元格：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　&nbsp;Range<span class="number">.</span><span>merge;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　Range.&nbsp;FormulaR1C1:=&rsquo;合并区&rsquo;；<span class="comment">//合并后写入文本</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　注意以后要读合并的单元格里面的文本就是读合并区域的左上角的那个单元格的文本&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　在excel表中选定区域赋给range：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>range:=excel_grid1<span class="number">.</span><span>OleObject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>selection;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　&nbsp;　拆分单元格：&nbsp;&nbsp;</span></li>
    <li><span>Range<span class="number">.</span><span>unmerge;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　合并后设定单元格（集）的格式：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　&nbsp;Range<span class="number">.</span><span>HorizontalAlignment:=&nbsp;xlCenter;</span><span class="comment">//&nbsp;文本水平居中方式</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　&nbsp;Range<span class="number">.</span><span>VerticalAlignment:=&nbsp;xlCenter</span><span class="comment">//文本垂直居中方式</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　&nbsp;Range<span class="number">.</span><span>WrapText:=</span><span class="keyword">true</span><span>;</span><span class="comment">//文本自动换行</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　Range<span class="number">.</span><span>Borders</span><span class="number">.</span><span>LineStyle:=</span><span class="number">1</span><span class="comment">//加边框</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　Range<span class="number">.</span><span>Interior</span><span class="number">.</span><span>ColorIndex:=</span><span class="number">39</span><span>;</span><span class="comment">//填充颜色为淡紫色</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　Range<span class="number">.</span><span>Font</span><span class="number">.</span><span>name:=&rsquo;&nbsp;隶书&rsquo;;</span><span class="comment">//字体</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　　Range<span class="number">.</span><span>Font</span><span class="number">.</span><span>Color:=clBlue;</span><span class="comment">//字体颜色</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>常用格式也就这些，以上这些对于单个单元格也适用。&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　在excel表中寻找前后上下的单元格：&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　Var&nbsp;u1,u2,u3,u4,u5:Variant;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　&nbsp;U1:=olecon<span class="number">.</span><span>oleobject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>activecell;</span><span class="comment">//获取当前格；</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　&nbsp;U2:=u1<span class="number">.</span><span>previous;</span><span class="comment">//非特殊情况就是u1左边的一格；</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　U3:=ui<span class="number">.</span><span>next;</span><span class="comment">//非特殊情况就是u2右边的一格；</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　&nbsp;　U4:=olecon<span class="number">.</span><span>oleobject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>cells[u1</span><span class="number">.</span><span>cells</span><span class="number">.</span><span>row-</span><span class="number">1</span><span>,u1</span><span class="number">.</span><span>cells</span><span class="number">.</span><span>column];&nbsp;</span><span class="comment">//非特殊情况为上面一格</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　&nbsp;U5:=olecon<span class="number">.</span><span>oleobject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>cells[u1</span><span class="number">.</span><span>cells</span><span class="number">.</span><span>row+</span><span class="number">1</span><span>,u1</span><span class="number">.</span><span>cells</span><span class="number">.</span><span>column];&nbsp;</span><span class="comment">//非特殊情况为下面一格</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　删除和插入一行和一列：&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　&nbsp;Olecon<span class="number">.</span><span>oleobject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>rows[</span><span class="number">2</span><span>].delete;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　&nbsp;Olecon<span class="number">.</span><span>oleobject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>columns[</span><span class="number">2</span><span>].delete;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　&nbsp;Olecon<span class="number">.</span><span>oleobject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>rows[</span><span class="number">2</span><span>].insert;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　　&nbsp;Olecon<span class="number">.</span><span>oleobject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>columns[</span><span class="number">2</span><span>].insert;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>　&nbsp;　复制指定区域：&nbsp;&nbsp;</span></li>
    <li><span>Olecon<span class="number">.</span><span>oleobject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>range[&lsquo;A1:C3&rsquo;].copy;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>　&nbsp;　从指定单元格开始粘贴：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>Olecon<span class="number">.</span><span>oleobject</span><span class="number">.</span><span>application</span><span class="number">.</span><span>range[&lsquo;A4&rsquo;].PasteSpecial;&nbsp;&nbsp;</span></span></li>
    <li><span>常用的就这些了，对delphi中server面板下的EXEL控件和创建EXCEL<span class="number">.</span><span>Application&nbsp;COM对象的方式都适用&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>]]></description>
		</item>
		
			<item>
			<link>http://www.pckno.com/article/GDIZaiDelphiChengXuDeYingYongZhiZuoShuiYinXiaoGuoTuPian.html</link>
			<title><![CDATA[ GDI+ 在Delphi程序的应用 -- 制作水印效果图片]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Thu,18 Mar 2010 07:59:20 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=61</guid>
		<description><![CDATA[<p>&nbsp; 利用GDI+可以很方便的制作带水印效果的图片，网上介绍这方面的文章也很多，但鲜有Delphi的，本文参照网上文章<a href="http://www.codeproject.com/kb/gdi-plus/watermark.aspx">http://www.codeproject.com/KB/GDI-plus/watermark.aspx</a>介 绍的方法，用Delphi 2007制作水印效果图片，原代码如下：</p>
<div class="codeText">
<div class="codeHead">Delphi代码</div>
<ol start="1" class="dp-delphi">
    <li class="alt"><span><span class="keyword">unit</span><span>&nbsp;Main;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">interface</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">uses</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;Windows,&nbsp;Messages,&nbsp;SysUtils,&nbsp;Variants,&nbsp;Classes,&nbsp;Graphics,&nbsp;Controls,&nbsp;Forms,&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;Dialogs,&nbsp;Gdiplus,&nbsp;StdCtrls;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">type</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;TMainForm&nbsp;=&nbsp;<span class="keyword">class</span><span>(TForm)&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Button1:&nbsp;TButton;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">procedure</span><span>&nbsp;FormPaint(Sender:&nbsp;TObject);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">procedure</span><span>&nbsp;FormCreate(Sender:&nbsp;TObject);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">procedure</span><span>&nbsp;FormDestroy(Sender:&nbsp;TObject);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">procedure</span><span>&nbsp;Button1Click(Sender:&nbsp;TObject);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">private</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">{&nbsp;Private&nbsp;declarations&nbsp;}</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Photo:&nbsp;TGpImage;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;PhWidth:&nbsp;Integer;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;PhHeight:&nbsp;Integer;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Watermark:&nbsp;TGpImage;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;WmWidth:&nbsp;Integer;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;WmHeight:&nbsp;Integer;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Bmp:&nbsp;TGpBitmap;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">{&nbsp;Public&nbsp;declarations&nbsp;}</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;MainForm:&nbsp;TMainForm;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="keyword">implementation</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="keyword">uses</span><span>&nbsp;GdipTypes;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="directive">{$R&nbsp;*.dfm}</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="keyword">procedure</span><span>&nbsp;TMainForm</span><span class="number">.</span><span>Button1Click(Sender:&nbsp;TObject);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;Clsid:&nbsp;TGUID;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;Parameters:&nbsp;TEncoderParameters;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;Quality:&nbsp;Integer;&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;设置图像品质编码参数</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;Parameters<span class="number">.</span><span>Count&nbsp;:=&nbsp;</span><span class="number">1</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;Parameters<span class="number">.</span><span>Parameter[</span><span class="number">0</span><span>].Guid&nbsp;:=&nbsp;EncoderQuality;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;Parameters<span class="number">.</span><span>Parameter[</span><span class="number">0</span><span>].ValueType&nbsp;:=&nbsp;EncoderParameterValueTypeLong;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;Parameters<span class="number">.</span><span>Parameter[</span><span class="number">0</span><span>].NumberOfValues&nbsp;:=&nbsp;</span><span class="number">1</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="comment">//&nbsp;设置参数的值：品质等级，最高为100，图像文件大小与品质成正比</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;Quality&nbsp;:=&nbsp;<span class="number">100</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;Parameters<span class="number">.</span><span>Parameter[</span><span class="number">0</span><span>].Value&nbsp;:=&nbsp;@Quality;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;GetEncoderClsid(</span><span class="string">'image/jpeg'</span><span>,&nbsp;Clsid)&nbsp;</span><span class="keyword">then</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Bmp<span class="number">.</span><span>Save(</span><span class="string">'WatermarkPhoto.jpg'</span><span>,&nbsp;Clsid,&nbsp;@Parameters);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">procedure</span><span>&nbsp;TMainForm</span><span class="number">.</span><span>FormCreate(Sender:&nbsp;TObject);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">const</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;ColorMatrix:&nbsp;TColorMatrix&nbsp;=&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;(&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="number">1.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>),&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="number">0.0</span><span>,&nbsp;</span><span class="number">1.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>),&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">1.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>),&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.3</span><span>,&nbsp;</span><span class="number">0.0</span><span>),&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">0.0</span><span>,&nbsp;</span><span class="number">1.0</span><span>)&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;WorkingDirectory&nbsp;=&nbsp;<span class="string">'....Media'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;copyright&nbsp;=&nbsp;<span class="string">'Copyright&nbsp;&copy;&nbsp;2008&nbsp;-&nbsp;Maozefa'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;gp:&nbsp;TGpGraphics;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;imageAttr:&nbsp;TGpImageAttributes;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;strFormat:&nbsp;TGpStringFormat;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;font:&nbsp;TGpFont;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;x,&nbsp;y:&nbsp;Single;&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;读取原始图片</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;Photo&nbsp;:=&nbsp;TGpImage<span class="number">.</span><span>Create(WorkingDirectory&nbsp;+&nbsp;</span><span class="string">'100_0349.jpg'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;PhWidth&nbsp;:=&nbsp;Photo<span class="number">.</span><span>Width;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;PhHeight&nbsp;:=&nbsp;Photo<span class="number">.</span><span>Height;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;读取水印图片</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;Watermark&nbsp;:=&nbsp;TGpImage<span class="number">.</span><span>Create(WorkingDirectory&nbsp;+&nbsp;</span><span class="string">'Watermark.bmp'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;WmWidth&nbsp;:=&nbsp;Watermark<span class="number">.</span><span>Width;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;WmHeight&nbsp;:=&nbsp;Watermark<span class="number">.</span><span>Height;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;建立一个新的位图，分辨率为72</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;Bmp&nbsp;:=&nbsp;TGpBitmap<span class="number">.</span><span>Create(PhWidth,&nbsp;PhHeight,&nbsp;pf32bppArgb);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;Bmp<span class="number">.</span><span>SetResolution(</span><span class="number">72</span><span>,&nbsp;</span><span class="number">72</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="comment">//&nbsp;建立新位图的画布，并设置图像显示质量和文本显示质量</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;gp&nbsp;:=&nbsp;TGpGraphics<span class="number">.</span><span>Create(Bmp);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;gp<span class="number">.</span><span>SmoothingMode&nbsp;:=&nbsp;smAntiAlias;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;gp<span class="number">.</span><span>TextRenderingHint&nbsp;:=&nbsp;thAntiAlias;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="comment">//&nbsp;在画布上画原始图片</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;gp<span class="number">.</span><span>DrawImage(Photo,&nbsp;GpRect(</span><span class="number">0</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;PhWidth,&nbsp;PhHeight),&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">0</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;PhWidth,&nbsp;PhHeight,&nbsp;utPixel);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;建立图像显示辅助类</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;imageAttr&nbsp;:=&nbsp;TGpImageAttributes<span class="number">.</span><span>Create;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;设置透明颜色为水印图片四角的底色，水印图显示为圆角图片</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;imageAttr<span class="number">.</span><span>SetColorKey(</span><span class="number">$ff00ff00</span><span>,&nbsp;</span><span class="number">$ff00ff00</span><span>,&nbsp;ctBitmap);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;设置水印图片不透明度为0.3</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;imageAttr<span class="number">.</span><span>SetColorMatrix(ColorMatrix,&nbsp;cfDefault,&nbsp;ctBitmap);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;在画布左上角画水印图</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;gp<span class="number">.</span><span>DrawImage(Watermark,&nbsp;GpRect(</span><span class="comment">{PhWidth&nbsp;-&nbsp;WmWidth&nbsp;-&nbsp;}</span><span class="number">10</span><span>,&nbsp;</span><span class="number">10</span><span>,&nbsp;WmWidth,&nbsp;WmHeight),&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">0</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;WmWidth,&nbsp;WmHeight,&nbsp;utPixel,&nbsp;imageAttr);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="comment">//&nbsp;设置文本字体和显示格式</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;font&nbsp;:=&nbsp;TGpFont<span class="number">.</span><span>Create(</span><span class="string">'arial'</span><span>,&nbsp;</span><span class="number">16</span><span>,&nbsp;[fsBold]);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;strFormat&nbsp;:=&nbsp;TGpStringFormat<span class="number">.</span><span>Create;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;strFormat<span class="number">.</span><span>Alignment&nbsp;:=&nbsp;saCenter;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="comment">//&nbsp;在画布下方居中显示阴影文本</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;x&nbsp;:=&nbsp;PhWidth&nbsp;/&nbsp;<span class="number">2</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;y&nbsp;:=&nbsp;PhHeight&nbsp;-&nbsp;<span class="number">26</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;gp<span class="number">.</span><span>DrawString(copyright,&nbsp;font,&nbsp;Brushs[</span><span class="number">$99000000</span><span>],&nbsp;x&nbsp;+&nbsp;</span><span class="number">1</span><span>,&nbsp;y&nbsp;+&nbsp;</span><span class="number">1</span><span>,&nbsp;strFormat);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;gp<span class="number">.</span><span>DrawString(copyright,&nbsp;font,&nbsp;Brushs[</span><span class="number">$99ffffff</span><span>],&nbsp;x,&nbsp;y,&nbsp;strFormat);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;font<span class="number">.</span><span>Free;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;strFormat<span class="number">.</span><span>Free;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;imageAttr<span class="number">.</span><span>Free;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;gp<span class="number">.</span><span>Free;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">procedure</span><span>&nbsp;TMainForm</span><span class="number">.</span><span>FormDestroy(Sender:&nbsp;TObject);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;Photo<span class="number">.</span><span>Free;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;Watermark<span class="number">.</span><span>Free;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;Bmp<span class="number">.</span><span>Free;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="keyword">procedure</span><span>&nbsp;TMainForm</span><span class="number">.</span><span>FormPaint(Sender:&nbsp;TObject);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">var</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;g:&nbsp;TGpGraphics;&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;g&nbsp;:=&nbsp;TGpGraphics<span class="number">.</span><span>Create(Canvas</span><span class="number">.</span><span>Handle);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="comment">//&nbsp;显示原始图片</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;g<span class="number">.</span><span>DrawImage(Photo,&nbsp;</span><span class="number">0</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;PhWidth,&nbsp;PhHeight);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="comment">//&nbsp;显示水印原始图片</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;g<span class="number">.</span><span>TranslateTransform(</span><span class="number">0</span><span>,&nbsp;PhHeight&nbsp;+&nbsp;</span><span class="number">5</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;g<span class="number">.</span><span>DrawImage(Watermark,&nbsp;</span><span class="number">0</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;WmWidth,&nbsp;WmHeight);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="comment">//&nbsp;显示带水印和文本的图像</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;g<span class="number">.</span><span>TranslateTransform(PhWidth,&nbsp;-(PhHeight&nbsp;+&nbsp;</span><span class="number">5</span><span>));&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;g<span class="number">.</span><span>DrawImage(Bmp,&nbsp;</span><span class="number">0</span><span>,&nbsp;</span><span class="number">0</span><span>,&nbsp;PhWidth,&nbsp;PhHeight);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;g<span class="number">.</span><span>Free;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="keyword">end</span><span>.&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp; 代码中已经进行了注释，不再累叙，针对本文所参考的文章内容（Addr:<a href="http://www.codeproject.com/kb/gdi-plus/watermark.aspx">http://www.codeproject.com/KB/GDI-plus/watermark.aspx</a>）， 作几点说明：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;1、在参考的文章中，对文本字体、显示位置进行了测试和计算，本文为强调主要内容，对这些代码进行了简化；</p>
<p>&nbsp;&nbsp;&nbsp;  2、在水印底色透明处理中，原文采用的是TGpImageAttributes.SetRemapTable方法，而本文采用的则是 TGpImageAttributes.SetColorKey方法，效果是一样的，具体原理可参照我的文章《<a target="_blank" href="http://blog.csdn.net/maozefa/archive/2007/01/30/1498217.aspx"><font color="#336699">GDI+ 在Delphi程序的应用 -- 图像的透明显示技巧</font></a>》；</p>
<p>&nbsp;&nbsp;&nbsp; 3、因图片保存为jpeg格式文件时，GDI+自动对图像进行压缩，导致图片效果较差，所以本文保存图片时设置了图像品质编码参数；</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;4、本文采用的GDI+单元介绍和下载地址见《<a target="_blank" href="http://blog.csdn.net/maozefa/archive/2007/11/12/1880484.aspx"><font color="#336699">GDI+ for VCL基础 -- GDI+ 与 VCL</font></a>》。</p>
<p>&nbsp;&nbsp;&nbsp; 如有错误或者指教，请来信：<a href="http://www.pckno.com/mailto:maozefa@hotmail.com">maozefa@hotmail.com</a></p>
<p><font color="#ff0000">后记：有朋友用C++写本文代码，编译时出现<font color="#000080">LINK  Error: unresolved external '_EncoderQuality' referenced ...</font>错误，其原 因是EncoderQuality是用DEFINE_GUID宏定义的GUID，而编译器误认为外部变量，所以出现链接错误。解决的办法是： 在#include &lt;gdiplus.h&gt;前添加#include &lt;initguid.h&gt;。(2008.5.16&nbsp;  12:48)</font></p>]]></description>
		</item>
		
			<item>
			<link>http://www.pckno.com/article/DelphiYuSQLMoHuChaXun.html</link>
			<title><![CDATA[Delphi与SQL模糊查询]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Tue,16 Mar 2010 19:38:20 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=41</guid>
		<description><![CDATA[<div class="codeText">
<div class="codeHead">Delphi代码</div>
<ol start="1" class="dp-delphi">
    <li class="alt"><span><span>模糊查询&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="number">1</span><span>．用变量进行模糊查询&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>对数据进行模糊查询主要用SQL语句LIKE来实现。该语句放在Where语句的后面，使用标识符&ldquo;%&rdquo;、&ldquo;_&rdquo;、&ldquo;[]&rdquo;、&ldquo;[^]&rdquo;对数据进行模糊查询。&nbsp;&nbsp;</span></li>
    <li><span>例如，对姓名为&ldquo;王&rdquo;，并且姓名为两个字的学生信息。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>Select&nbsp;*&nbsp;FROM&nbsp;MR_Student&nbsp;where&nbsp;姓名&nbsp;like&nbsp;<span class="string">'林_'</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>例如，查询数学成绩在<span class="number">70</span><span>~</span><span class="number">79</span><span>之间的学生信息。&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>Select&nbsp;*&nbsp;FROM&nbsp;MR_Student&nbsp;where&nbsp;数学&nbsp;like&nbsp;<span class="string">'7[0123456789]'</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>例如，查询除三年级二班的所有学生信息。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>Select&nbsp;*&nbsp;FROM&nbsp;MR_Student&nbsp;where&nbsp;班级&nbsp;like&nbsp;<span class="string">'三年[^二]_'</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>例如，查询三年级的所有学生信息。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>Select&nbsp;*&nbsp;FROM&nbsp;MR_Student&nbsp;where&nbsp;班级like&nbsp;<span class="string">'三*'</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>下面对姓名进行模糊查询，只要在&ldquo;姓名&rdquo;文本框中输入名字中的任意一个字，便可以查找相关人员的信息。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDateTimePicker、TDataSource、TButton和TDBGrid等组件。&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery1&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;close;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Select&nbsp;*&nbsp;FROM&nbsp;MR_Student&nbsp;where&nbsp;姓名&nbsp;like&nbsp;'</span><span>+</span><span class="string">''</span><span class="string">''</span><span>+</span><span class="string">'%'</span><span>+Trim(edit1</span><span class="number">.</span><span>Text)+</span><span class="string">'%'</span><span>+</span><span class="string">''</span><span class="string">''</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;open;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>上面的SQL语句也可以写成如下形式：&nbsp;&nbsp;</span></li>
    <li><span>SQL<span class="number">.</span><span>Add(</span><span class="string">'Select&nbsp;*&nbsp;FROM&nbsp;MR_Student&nbsp;where&nbsp;姓名&nbsp;like&nbsp;'</span><span class="string">'%'</span><span>+Trim(edit1</span><span class="number">.</span><span>Text)+</span><span class="string">'%'</span><span class="string">''</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="number">2</span><span>．使用参数进行模糊查询&nbsp;&nbsp;</span></span></li>
    <li><span>在Delphi中进行模糊查询时，可以用TADOQuery组件来向SQL语句中传递参数。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>其格式为：&ldquo;Like:参数名&rdquo;。&nbsp;&nbsp;</span></li>
    <li><span>利用TADOQuery组件的ParamByName方法将值传递给参数。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>*&nbsp;注意：在Like后面必须加空格。&nbsp;&nbsp;</span></li>
    <li><span>下面用TADOQuery组件进行参数传递，并对数据进行模糊查询。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDateTimePicker、TDataSource、TButton和TDBGrid等组件。&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery1&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;close;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Select&nbsp;*&nbsp;FROM&nbsp;MR_Student&nbsp;where&nbsp;姓名&nbsp;like&nbsp;:aa'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Parameters<span class="number">.</span><span>ParamByName(</span><span class="string">'aa'</span><span>).Value:=</span><span class="string">'%'</span><span>+trim(Edit1</span><span class="number">.</span><span>text)+</span><span class="string">'%'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;open;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span><span class="number">3</span><span>．复杂模糊查询&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>在对信息进行模糊查询的时候，也可以通过逻辑运算符（AND、OR、NOT）插入其他的查询条件来提高查询的速度。&nbsp;&nbsp;</span></li>
    <li><span>下面是模糊查询和其他查询方法相结合而形成的复杂模糊查询。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDateTimePicker、TDataSource、TButton、TComboBox和TDBGrid等组件。&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;CheckBox1</span><span class="number">.</span><span>Checked=</span><span class="keyword">true</span><span>&nbsp;</span><span class="keyword">then</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;Str&nbsp;:=&nbsp;<span class="string">'&nbsp;and&nbsp;班级='</span><span>+</span><span class="string">''</span><span class="string">''</span><span>+ComboBox1</span><span class="number">.</span><span>Text+</span><span class="string">''</span><span class="string">''</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">else</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;ComboBox1<span class="number">.</span><span>Enabled&nbsp;:=&nbsp;False;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery1&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;close;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Select&nbsp;*&nbsp;FROM&nbsp;MR_Student&nbsp;where&nbsp;姓名&nbsp;like&nbsp;'</span><span class="string">'%'</span><span>+Trim(edit1</span><span class="number">.</span><span>Text)+</span><span class="string">'%'</span><span class="string">''</span><span>+Str);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;open;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
</ol>
</div>]]></description>
		</item>
		
			<item>
			<link>http://www.pckno.com/article/DelphiYuSQLCunChuGuoCheng.html</link>
			<title><![CDATA[Delphi与SQL存储过程]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Tue,16 Mar 2010 19:37:10 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=40</guid>
		<description><![CDATA[<div class="codeText">
<div class="codeHead">Delphi代码</div>
<ol start="1" class="dp-delphi">
    <li class="alt"><span><span>存&nbsp;储&nbsp;过&nbsp;&nbsp;程&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="number">1</span><span>．创建存储过程&nbsp;&nbsp;</span></span></li>
    <li><span>创建存储过程主要用SQL语句Create&nbsp;PROCEDURE来实现，并用&ldquo;Exec语句+存储过程名&rdquo;来执行已创建的存储过程。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>本示例是用存储过程来执行多表合并的操作。&nbsp;&nbsp;</span></li>
    <li><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TEdit和TDBGrid等组件。&nbsp;&nbsp;</span></span></li>
    <li><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery1&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Close;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>add(</span><span class="string">'create&nbsp;procedure&nbsp;'</span><span>+Edit1</span><span class="number">.</span><span>Text);&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//创建存储过程</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQl<span class="number">.</span><span>Add(</span><span class="string">'as&nbsp;'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'select&nbsp;k.学生编号,k.学生姓名,j.外语&nbsp;FROM&nbsp;tb_stu&nbsp;AS&nbsp;k&nbsp;INNER&nbsp;JOIN&nbsp;tb_mark&nbsp;AS&nbsp;j&nbsp;ON&nbsp;k.学生编号&nbsp;=&nbsp;j.学生编号&nbsp;Where&nbsp;(((k.学生编号)=[j].[学生编号]))'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;ExecSQL;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Exec&nbsp;'</span><span>+Edit1</span><span class="number">.</span><span>Text);&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//执行存储过程</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Open;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="number">2</span><span>．对存储过程进行加密&nbsp;&nbsp;</span></span></li>
    <li><span>在创建存储过程时，可以为存储过程加密，这样用户可以隐藏存储过程的文本，避免其他用户在存储过程属性中查看其语句，主要用WITH&nbsp;ENCRYPTION选项实现。在对存储过程加密前必须对已有的存储过程进行删除。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>下面用存储过程的WITH&nbsp;ENCRYPTION选项来创建一个加密存储过程。&nbsp;&nbsp;</span></li>
    <li><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TEdit、TMemo和TDBGrid等组件。&nbsp;&nbsp;</span></span></li>
    <li><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery1&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;close;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'if&nbsp;EXISTS(Select&nbsp;name&nbsp;FROM&nbsp;sysobjects&nbsp;Where&nbsp;name='</span><span>+QuotedStr(Trim(Edit1</span><span class="number">.</span><span>Text))+</span><span class="string">'&nbsp;AND&nbsp;type&nbsp;=&nbsp;'</span><span class="string">'p'</span><span class="string">')'</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//判断存储过程是否存在</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Drop&nbsp;PROCEDURE&nbsp;'</span><span>+Trim(Edit1</span><span class="number">.</span><span>Text));&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//删除已有的存储过程</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;EXECSQL;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;close;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//为存储过程加密</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Create&nbsp;PROCEDURE&nbsp;'</span><span>+Edit1</span><span class="number">.</span><span>Text+</span><span class="string">'&nbsp;WITH&nbsp;ENCRYPTION&nbsp;AS&nbsp;'</span><span>+Trim(Memo1</span><span class="number">.</span><span>Text));&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;EXECSQL;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span><span class="number">3</span><span>．用存储过程附加数据库&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>使用存储过程附加数据库可以方便地将没有连接的数据库附加到当前服务器上，只是在附加数据库前先将存储过程所在的数据库以手动方式附加到服务器上。附加数据库主要用系统存储过程sp_attach_db来实现。在存储过程中不可以用占位符N。&nbsp;&nbsp;</span></li>
    <li><span>下面用存储过程将服务器以外的数据库附加到服务器上，只适用于英文数据库名。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton和TEdit等组件。&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li><span>创建一个含有参数的存储过程。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery1&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;close;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Create&nbsp;PROCEDURE&nbsp;'</span><span>+Trim(Edit4</span><span class="number">.</span><span>Text));&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'@Table&nbsp;varchar(20),'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'@date&nbsp;varchar(200),'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'@LOG&nbsp;varchar(200)'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'AS'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'EXEC&nbsp;sp_attach_db&nbsp;@dbname=@Table,@filename1=@date,@filename2&nbsp;=@LOG'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;EXECSQL;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>执行带参数的存储过程。&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery1&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;close;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'if&nbsp;EXISTS(Select&nbsp;name&nbsp;FROM&nbsp;sysobjects&nbsp;Where&nbsp;name='</span><span>+QuotedStr(Trim(Edit4</span><span class="number">.</span><span>Text))+</span><span class="string">'&nbsp;AND&nbsp;type&nbsp;=&nbsp;'</span><span class="string">'p'</span><span class="string">')'</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//判断存储过程是否存在</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//以传参的形式调用存储过程</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'EXEC&nbsp;'</span><span>+Trim(Edit4</span><span class="number">.</span><span>Text)+</span><span class="string">'&nbsp;@Table='</span><span>+QuotedStr(Trim(Edit1</span><span class="number">.</span><span>Text))+</span><span class="string">',@date='</span><span>+QuotedStr(Trim(Edit2</span><span class="number">.</span><span>Text))+&nbsp;</span><span class="string">',@LOG='</span><span>+QuotedStr(Trim(Edit3</span><span class="number">.</span><span>Text)));&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;EXECSQL;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="number">4</span><span>．用存储过程备份数据库&nbsp;&nbsp;</span></span></li>
    <li><span>备份数据库与附加数据库所用的方法基本相同，只是备份数据库用SQL语句BACKUP&nbsp;DATABASE来实现，而附加数据库则用系统存储过程sp_attach_db来实现。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>下面利用存储过程对服务器上的任意数据库进行备份。&nbsp;&nbsp;</span></li>
    <li><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton和TEdit等组件。&nbsp;&nbsp;</span></span></li>
    <li><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>创建一个含有参数的存储过程。&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery1&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;close;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Create&nbsp;PROCEDURE&nbsp;'</span><span>+Trim(Edit3</span><span class="number">.</span><span>Text));&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'@name&nbsp;varchar(20),'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'@way&nbsp;varchar(200)'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'AS'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'backup&nbsp;database&nbsp;@name&nbsp;to&nbsp;disk=@way'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;EXECSQL;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Showmessage(<span class="string">'存储过程'</span><span>+Edit3</span><span class="number">.</span><span>Text+</span><span class="string">'创建成功。'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>执行存储过程备份数据库。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery1&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;close;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'if&nbsp;EXISTS(Select&nbsp;name&nbsp;FROM&nbsp;sysobjects&nbsp;Where&nbsp;name='</span><span>+QuotedStr(Trim(Edit3</span><span class="number">.</span><span>Text))+</span><span class="string">'&nbsp;AND&nbsp;type&nbsp;=&nbsp;'</span><span class="string">'p'</span><span class="string">')'</span><span>);&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//判断存储过程是否存在</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//以传参的形式调用存储过程</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'EXEC&nbsp;'</span><span>+Trim(Edit3</span><span class="number">.</span><span>Text)+</span><span class="string">'&nbsp;@name='</span><span>+Trim(ComboBox1</span><span class="number">.</span><span>Text)+</span><span class="string">',@way='</span><span>+QuotedStr(Trim(Edit2</span><span class="number">.</span><span>Text)));&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;EXECSQL;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
</ol>
</div>]]></description>
		</item>
		
			<item>
			<link>http://www.pckno.com/article/DelphiYuSQLChuFaQi.html</link>
			<title><![CDATA[Delphi与SQL触发器]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Tue,16 Mar 2010 19:35:05 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=38</guid>
		<description><![CDATA[<div class="codeText">
<div class="codeHead">Delphi代码</div>
<ol start="1" class="dp-delphi">
    <li class="alt"><span><span>触发器&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="number">1</span><span>．利用触发器添加数据&nbsp;&nbsp;</span></span></li>
    <li><span>用触发器对相关表添加数据时，所添加的记录将存储在系统临时表&ldquo;inserted&rdquo;中，可以将该表中的字段信息添加到其他表的相应字段中。在用触发器向其他表添加数据时，应注意表中的字段是否有不为空的记录。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>下面利用触发器在&ldquo;tb_Stu&rdquo;表中添加记录后，在&ldquo;tb_Mark&rdquo;表中会自动添加相应的记录。&nbsp;&nbsp;</span></li>
    <li><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TEdit和TDBGrid等组件。&nbsp;&nbsp;</span></span></li>
    <li><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery3&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Close;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Create&nbsp;TRIGGER&nbsp;'</span><span>+Edit1</span><span class="number">.</span><span>Text+</span><span class="string">'&nbsp;ON&nbsp;dbo.tb_Stu'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'FOR&nbsp;Insert'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'AS'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'DECLARE&nbsp;@id&nbsp;Int,@name&nbsp;varChar(10)'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Select&nbsp;@id=学生编号,@name=学生姓名&nbsp;&nbsp;from&nbsp;inserted'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Insert&nbsp;INTO&nbsp;tb_Mark&nbsp;(学生编号,学生姓名,高数,外语,计算机文化基础,马经,数据库管理,数据结构,软件工程)&nbsp;VALUES&nbsp;(@id,@name,0,0,0,0,0,0,0)'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;EXECSQL;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="number">2</span><span>．利用触发器更新数据&nbsp;&nbsp;</span></span></li>
    <li><span>在表中更新数据时，将更新前的数据存放在系统临时表&ldquo;deleted&rdquo;中，将更新后的数据存放在系统临时表&ldquo;inserted&rdquo;中。在触发器中可以根据&ldquo;deleted&rdquo;表中的字段对相关表进行查询，并用&ldquo;inserted&rdquo;表中的数据修改相关表中的信息。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>下面利用触发器在&ldquo;tb_Stu&rdquo;表中更新记录后，在&ldquo;tb_Mark&rdquo;表中会自动更新相关的数据。&nbsp;&nbsp;</span></li>
    <li><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TEdit和TDBGrid等组件。&nbsp;&nbsp;</span></span></li>
    <li><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery3&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Close;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Create&nbsp;TRIGGER&nbsp;'</span><span>+Edit1</span><span class="number">.</span><span>Text+</span><span class="string">'&nbsp;ON&nbsp;dbo.tb_Stu'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'FOR&nbsp;Update'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'AS'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'DECLARE&nbsp;@id&nbsp;Int,@name&nbsp;varchar(10)'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'select&nbsp;@id=学生编号&nbsp;from&nbsp;deleted'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'select&nbsp;@name=学生姓名&nbsp;from&nbsp;Inserted'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Update&nbsp;tb_Mark&nbsp;SET&nbsp;学生姓名=@name&nbsp;Where&nbsp;学生编号&nbsp;=&nbsp;@id'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;EXECSQL;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span><span class="number">3</span><span>．利用触发器删除数据&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>在对表中的数据进行删除时，会将删除的记录存入系统临时表&ldquo;deleted&rdquo;中，触发器将利用该表中的信息在相关表中进行查询，并删除符合条件的记录。&nbsp;&nbsp;</span></li>
    <li><span>*&nbsp;注意：如果某两个表是一对一的关系，那么触发器应创建在从表中。&nbsp;&nbsp;</span></li>
    <li class="alt"><span>下面利用触发器在&ldquo;tb_Stu&rdquo;表中删除记录后，&ldquo;tb_Mark&rdquo;表将自动删除相关的记录。&nbsp;&nbsp;</span></li>
    <li><span>操作步骤如下：&nbsp;&nbsp;</span></li>
    <li class="alt"><span>（<span class="number">1</span><span>）运行Delphi，在窗体中添加TADOConnection、TADOQuery、TDataSource、TButton、TEdit和TDBGrid等组件。&nbsp;&nbsp;</span></span></li>
    <li><span>（<span class="number">2</span><span>）主要程序代码如下：&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">with</span><span>&nbsp;ADOQuery3&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Close;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Clear;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Create&nbsp;TRIGGER&nbsp;'</span><span>+Edit1</span><span class="number">.</span><span>Text+</span><span class="string">'&nbsp;ON&nbsp;dbo.tb_Stu'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'FOR&nbsp;Delete&nbsp;'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'AS'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'DECLARE&nbsp;@id&nbsp;Int,@name&nbsp;varchar(10)'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'select&nbsp;@id=学生编号,@name=学生姓名&nbsp;from&nbsp;deleted'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;SQL<span class="number">.</span><span>Add(</span><span class="string">'Delete&nbsp;tb_Mark&nbsp;where&nbsp;学生编号=@id&nbsp;and&nbsp;学生姓名=@name'</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;EXECSQL;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
</ol>
</div>]]></description>
		</item>
		
			<item>
			<link>http://www.pckno.com/article/HanZiFanYiChengPinYinJianXie.html</link>
			<title><![CDATA[汉字翻译成拼音简写]]></title>
			<author>tenysw@163.com(admin)</author>
			<category><![CDATA[Delphi]]></category>
			<pubDate>Sun,14 Mar 2010 16:02:13 +0800</pubDate>
			<guid>http://www.pckno.com/default.asp?id=32</guid>
		<description><![CDATA[<div class="codeText">
<div class="codeHead">Delphi代码</div>
<ol start="1" class="dp-delphi">
    <li class="alt"><span><span>在数据库输入中,怎样使&quot;中文名称&quot;输入翻译成&quot;简码&quot;存入另一字段?以便以后查询使用?&nbsp;&nbsp;</span></span></li>
    <li><span>如:&nbsp;&quot;工资处&quot;译成&quot;GZC&quot;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="comment">//这个函数拿去用（我刚写好，已测试通过）</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">function</span><span>&nbsp;GetHzPy(</span><span class="keyword">const</span><span>&nbsp;AHzStr:&nbsp;</span><span class="keyword">string</span><span>):&nbsp;</span><span class="keyword">string</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">const</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;ChinaCode:&nbsp;<span class="keyword">array</span><span>[</span><span class="number">0..25</span><span>,&nbsp;</span><span class="number">0..1</span><span>]&nbsp;</span><span class="keyword">of</span><span>&nbsp;Integer&nbsp;=&nbsp;((</span><span class="number">1601</span><span>,&nbsp;</span><span class="number">1636</span><span>),&nbsp;(</span><span class="number">1637</span><span>,&nbsp;</span><span class="number">1832</span><span>),&nbsp;(</span><span class="number">1833</span><span>,&nbsp;</span><span class="number">2077</span><span>),&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="number">2078</span><span>,&nbsp;</span><span class="number">2273</span><span>),&nbsp;(</span><span class="number">2274</span><span>,&nbsp;</span><span class="number">2301</span><span>),&nbsp;(</span><span class="number">2302</span><span>,&nbsp;</span><span class="number">2432</span><span>),&nbsp;(</span><span class="number">2433</span><span>,&nbsp;</span><span class="number">2593</span><span>),&nbsp;(</span><span class="number">2594</span><span>,&nbsp;</span><span class="number">2786</span><span>),&nbsp;(</span><span class="number">9999</span><span>,&nbsp;</span><span class="number">0000</span><span>),&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="number">2787</span><span>,&nbsp;</span><span class="number">3105</span><span>),&nbsp;(</span><span class="number">3106</span><span>,&nbsp;</span><span class="number">3211</span><span>),&nbsp;(</span><span class="number">3212</span><span>,&nbsp;</span><span class="number">3471</span><span>),&nbsp;(</span><span class="number">3472</span><span>,&nbsp;</span><span class="number">3634</span><span>),&nbsp;(</span><span class="number">3635</span><span>,&nbsp;</span><span class="number">3722</span><span>),&nbsp;(</span><span class="number">3723</span><span>,&nbsp;</span><span class="number">3729</span><span>),&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="number">3730</span><span>,&nbsp;</span><span class="number">3857</span><span>),&nbsp;(</span><span class="number">3858</span><span>,&nbsp;</span><span class="number">4026</span><span>),&nbsp;(</span><span class="number">4027</span><span>,&nbsp;</span><span class="number">4085</span><span>),&nbsp;(</span><span class="number">4086</span><span>,&nbsp;</span><span class="number">4389</span><span>),&nbsp;(</span><span class="number">4390</span><span>,&nbsp;</span><span class="number">4557</span><span>),&nbsp;(</span><span class="number">9999</span><span>,&nbsp;</span><span class="number">0000</span><span>),&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;(<span class="number">9999</span><span>,&nbsp;</span><span class="number">0000</span><span>),&nbsp;(</span><span class="number">4558</span><span>,&nbsp;</span><span class="number">4683</span><span>),&nbsp;(</span><span class="number">4684</span><span>,&nbsp;</span><span class="number">4924</span><span>),&nbsp;(</span><span class="number">4925</span><span>,&nbsp;</span><span class="number">5248</span><span>),&nbsp;(</span><span class="number">5249</span><span>,&nbsp;</span><span class="number">5589</span><span>));&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">var</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;i,&nbsp;j,&nbsp;HzOrd:&nbsp;<span class="keyword">integer</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;Hz:&nbsp;<span class="keyword">string</span><span>[</span><span class="number">2</span><span>];&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;i&nbsp;:=&nbsp;<span class="number">1</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">while</span><span>&nbsp;i&nbsp;&lt;=&nbsp;Length(AHzStr)&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(AHzStr[i]&nbsp;&gt;=&nbsp;#</span><span class="number">160</span><span>)&nbsp;</span><span class="keyword">and</span><span>&nbsp;(AHzStr[i&nbsp;+&nbsp;</span><span class="number">1</span><span>]&nbsp;&gt;=&nbsp;#</span><span class="number">160</span><span>)&nbsp;</span><span class="keyword">then</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HzOrd&nbsp;:=&nbsp;(Ord(AHzStr[i])&nbsp;-&nbsp;<span class="number">160</span><span>)&nbsp;*&nbsp;</span><span class="number">100</span><span>&nbsp;+&nbsp;Ord(AHzStr[i&nbsp;+&nbsp;</span><span class="number">1</span><span>])&nbsp;-&nbsp;</span><span class="number">160</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;j&nbsp;:=&nbsp;</span><span class="number">0</span><span>&nbsp;</span><span class="keyword">to</span><span>&nbsp;</span><span class="number">25</span><span>&nbsp;</span><span class="keyword">do</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(HzOrd&nbsp;&gt;=&nbsp;ChinaCode[j][</span><span class="number">0</span><span>])&nbsp;</span><span class="keyword">and</span><span>&nbsp;(HzOrd&nbsp;&lt;=&nbsp;ChinaCode[j][</span><span class="number">1</span><span>])&nbsp;</span><span class="keyword">then</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;:=&nbsp;Result&nbsp;+&nbsp;<span class="keyword">char</span><span>(</span><span class="keyword">byte</span><span>(</span><span class="string">'A'</span><span>)&nbsp;+&nbsp;j);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inc(i);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">end</span><span>&nbsp;</span><span class="keyword">else</span><span>&nbsp;Result&nbsp;:=&nbsp;Result&nbsp;+&nbsp;AHzStr[i];&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;Inc(i);&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li><span><span class="comment">///////////////////////////////////////</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>这个函数用户识别单独汉字的简码&nbsp;字符串的简码函数请自行制作&nbsp;&nbsp;</span></li>
    <li><span><span class="keyword">function</span><span>&nbsp;GetPYIndexChar(hzchar:</span><span class="keyword">string</span><span>):</span><span class="keyword">char</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">begin</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">case</span><span>&nbsp;WORD(hzchar[</span><span class="number">1</span><span>])&nbsp;</span><span class="keyword">shl</span><span>&nbsp;</span><span class="number">8</span><span>&nbsp;+&nbsp;WORD(hzchar[</span><span class="number">2</span><span>])&nbsp;</span><span class="keyword">of</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$B0A1</span><span>..</span><span class="number">$B0C4</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'A'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$B0C5</span><span>..</span><span class="number">$B2C0</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'B'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$B2C1</span><span>..</span><span class="number">$B4ED</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'C'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$B4EE</span><span>..</span><span class="number">$B6E9</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'D'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$B6EA</span><span>..</span><span class="number">$B7A1</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'E'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$B7A2</span><span>..</span><span class="number">$B8C0</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'F'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$B8C1</span><span>..</span><span class="number">$B9FD</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'G'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$B9FE</span><span>..</span><span class="number">$BBF6</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'H'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$BBF7</span><span>..</span><span class="number">$BFA5</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'J'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$BFA6</span><span>..</span><span class="number">$C0AB</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'K'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$C0AC</span><span>..</span><span class="number">$C2E7</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'L'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$C2E8</span><span>..</span><span class="number">$C4C2</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'M'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$C4C3</span><span>..</span><span class="number">$C5B5</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'N'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$C5B6</span><span>..</span><span class="number">$C5BD</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'O'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$C5BE</span><span>..</span><span class="number">$C6D9</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'P'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$C6DA</span><span>..</span><span class="number">$C8BA</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'Q'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$C8BB</span><span>..</span><span class="number">$C8F5</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'R'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$C8F6</span><span>..</span><span class="number">$CBF9</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'S'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$CBFA</span><span>..</span><span class="number">$CDD9</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'T'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$CDDA</span><span>..</span><span class="number">$CEF3</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'W'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$CEF4</span><span>..</span><span class="number">$D188</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'X'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$D1B9</span><span>..</span><span class="number">$D4D0</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'Y'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="number">$D4D1</span><span>..</span><span class="number">$D7F9</span><span>&nbsp;:&nbsp;result&nbsp;:=&nbsp;</span><span class="string">'Z'</span><span>;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">else</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;:=&nbsp;<span class="keyword">char</span><span>(</span><span class="number">0</span><span>);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;<span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="keyword">end</span><span>;&nbsp;&nbsp;</span></span></li>
</ol>
</div>]]></description>
		</item>
		
</channel>
</rss>
