随笔分类 -  delphi

摘要:两种方法,一是用ADO连接,问题是Excel文件内容要规则,二是用OLE打开,但操作就没有象操作数据库那么方便了.一、用ADO连接:设置属性ConnetionString 选择 Microsoft Jet 4.0 OLE DB provider Select or enter a datasorce name -> 选择你要打开Excel文件 User name默认是Admin 密码默认为空,可以不用理会 Extended properties 设为:Excel 8.0 sql语句 select * from [yourtablename] (注意要有[]) 二、用OLE打开(以下是一个 阅读全文
posted @ 2012-09-27 16:25 马儿快跑 阅读(20856) 评论(1) 推荐(0)
摘要:前几天问过这个问题,很多朋友给了我回答。本以为解决了。但现在新问题又来了。 代码如下: ... ExcelApp,workbook: Variant; ... ExcelApp:=CreateOleObject( 'Excel.Application '); workbook:=CreateOleObject( 'Excel.sheet '); 上次大家给我的代码是: workbook.close; ExcelApp.quit; workbook:=unassigned; excelapp:=unassigned; 这些代码放在窗口的onclose方法里没问题, 阅读全文
posted @ 2012-09-27 16:08 马儿快跑 阅读(4583) 评论(0) 推荐(0)
摘要://邮件发送typeTEmailState = (esBegin,esSending,esEnd,esFaild);EMailState = TEmailState;TSendEmail= class private FHost:string;//主机 FUserName:String;//用户名 FEmail: TStringList;//收件人邮箱列表 FEmailMsg: string; //邮件正文 FSenderEmail: string;//发送人 FSubject: string;//主题 FiPort: Integer;//端口 ... 阅读全文
posted @ 2012-09-23 16:23 马儿快跑 阅读(3572) 评论(0) 推荐(0)
摘要:function sendarp(ipaddr:ulong;temp:dword;ulmacaddr:pointer;ulmacaddrleng:pointer) : Dword; StdCall; External 'Iphlpapi.dll' Name 'SendARP';function GetMACByIP(const Ip:string):string;var MyIp:ulong; MyMac:array[0..5] of byte; MyMacLength:ulong; ErrCode:integer;begin Myip:=inet_addr(P 阅读全文
posted @ 2012-09-20 14:49 马儿快跑 阅读(1006) 评论(0) 推荐(0)
摘要:Delphi 中的MD5实现方法及delphi2009和delphi2010中用法在Delphi自带的Indy控件中其实是提供了MD2,MD4,MD5对象的,我们可以直接使用它们来完成MD5的签名算法。而不需要再去找其它的DLL或是Pas了。 在Uses单元中引用 IdHashMessageDigest,IdGlobal, IdHash 单元,再写如下代码即可以达到MD5的实现。 示例代码 procedure TForm1.Button1Click(Sender: TObject); var MyMD5: TIdHashMessageDigest5; Digest: T4x4LongWordR 阅读全文
posted @ 2012-09-20 10:33 马儿快跑 阅读(463) 评论(0) 推荐(0)
摘要:(** 单元说明: 文件/流的加密解密方法(For Delphi 6-7)** 软件来源: http://www.go-neumann.com/* http://www.inbytes.net/** 作 者: neumann@163.com** 使用说明: 此文件的代码可以直接编译使用,* 您可以根据需要编写自己的加密/解密代码.** 声 明: 以下代码属作者原创, 请转载时保留本信息. **)unit uCompress;interfaceusesWindows, Messages, SysUtils, Variants, Classes, ComCtrls, Dialogs;/... 阅读全文
posted @ 2012-09-20 08:50 马儿快跑 阅读(1449) 评论(0) 推荐(0)
摘要:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;type //定义一个事件格式,要传参数的格式 后面必须要加上of object TeacherArgnyEvent = procedure(ErrorCount: Integer) of object;typeTTeacher = class(TObject)private FStudentErrorCount: Integer; FOnTeacherArngy: 阅读全文
posted @ 2012-09-06 14:39 马儿快跑 阅读(1591) 评论(0) 推荐(0)
摘要:typeTCurFlagItem = class(TObject) //定义一个ITEM对象,用来存储ITEM; Flag:Integer; Clocked:Boolean; Note:string; end; TCurFlag=class(TStringList) //定义一个LIST型对象,用来处理上面的ITEM; private { Private declarations } FItemIndex: Integer; FClocked: Boolean; FFlag: Integer; FNote: string; FOnItemIndexChange: TNotifyEvent; p 阅读全文
posted @ 2012-09-06 14:35 马儿快跑 阅读(2655) 评论(0) 推荐(0)
摘要:为什么我们点击按钮,就会执行按钮的onclick事件?这个事件是怎么和我们自己的代码关联起来的。相信很多人都有这个疑问。那么我们就通过一个自定义事件来了解这里面得运行原理。以乘法运算来显示,如果乘数大于100,就提示用户,太大了。这个事件用自定义事件定义。 大家先看一下最终效果,我添加了三个文本框,一个按钮,当第一或者第二个文本框的数>100时,点求积按钮,提示Too Big 对话框。完成自定义事件需要5步来做:1.定义TNotifyEvent类型私有变量 Code highlighting produced by Actipro CodeHighlighter (freeware)ht 阅读全文
posted @ 2012-09-06 14:22 马儿快跑 阅读(10150) 评论(0) 推荐(0)
摘要:Delphi ListView基本用法大全//增加项或列(字段)ListView1.Clear;ListView1.Columns.Clear;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Add;ListView1.Columns.Items[0].Caption:='id';ListView1.Columns.Items[1].Caption:='type';ListView1.Columns.Items[2].Caption:='title';ListView1. 阅读全文
posted @ 2012-09-05 11:47 马儿快跑 阅读(407) 评论(0) 推荐(0)
摘要:需要截获LVM_SETCOLUMN消息。例子: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, CommCtrl, StdCtrls; type TMyListView = class(TListView) protected procedure LVMSETCOLUMN(var Message: TMessage); message ... 阅读全文
posted @ 2012-09-05 11:09 马儿快跑 阅读(598) 评论(0) 推荐(0)
摘要:网络摘抄//刚封装的ini文件类。保存为unicode的。解决delphi xe的TiniFile保存后不为unicode的问题//今天发现delphi xe的TiniFile类保存后的文件不是以unicode存储的,//所以就自己写了个和他功能类似的类,可能比原版的TIniFile少了一些方法。//其他的方法属性等我的工程都没用到,所以就没写其他的函数。函数只有如下,正常情况下够用了//考虑到时间问题就就用了tstringlist类了。所以效率不怎么样。很一般。//很垃圾的代码,不嫌弃的人拿去用吧!//function ReadString(const cSection, cIdent, c 阅读全文
posted @ 2012-08-30 13:27 马儿快跑 阅读(2270) 评论(1) 推荐(0)
摘要:使用Delphi2010中的TStrings或Memo的SaveToFile方法保存UTF8/Unicode编码的字符串时,保存后丢失编码信息,仔细查看,原来在保存时增加了编码设置:aStrings.SaveToFile(aFileName,TEncoding.Unicode);//可以是TEncoding.UTF8,根据需要另:unicode文本文件:头两个字符分别是FF FE(16进制) utf-8文本文件:头两个字符分别是EF BB(16进制) 阅读全文
posted @ 2012-08-30 13:27 马儿快跑 阅读(3524) 评论(0) 推荐(0)
摘要:下面是一个通用过程,根据INI文件中的资源改变界面语言(仅Caption和Hint属性)参数一:为一Component,一般为TForm,此过程将循环列举其子Component并查找是否具有相关属性,有的话则从INI文件读取信息并设置属性参数二:为INI文件全名//引用TypInfo,IniFiles/TntInifiles单元//声明的资源,默认的,防止变量出现空值resourcestringS_Menu = 'Menu';S_AppName = 'Window View Tool';S_Null = '(Null)';S_About = &# 阅读全文
posted @ 2012-08-30 11:52 马儿快跑 阅读(1289) 评论(0) 推荐(0)
摘要:越来越多的程序使用了多国语言切换,虽然DELPHI自带多语言包的添加和配置,但是那种方法在切换语言时界面会出现闪烁,而且实现起来很麻烦,这里我介绍给大家的是利用INI文件来读取界面的语种文字,用这种方法,不但简单易行,而且在切换的时候不会出现界面的闪烁。我们从一个例子出发,看看怎么实现语言的切换。首先建立一个新工程。放置如下组件:MainMenu1: TMainMenu;File1: TMenuItem;Exit1: TMenuItem;Label1: TLabel;Button1: TButton;CheckBox1: TCheckBox;CheckBox2: TCheckBox;Butto 阅读全文
posted @ 2012-08-30 10:21 马儿快跑 阅读(904) 评论(0) 推荐(0)
摘要:其实要了解这些东西,适当的学些反汇编,WINDOWS内存管理机制,PE结构,看下李维的VCL架构剖析可以很好理解type TMyEvent = procedure of object;这是一种数据类型的定义,他定义了一个可以在类中使用的函数类型区别于type TMyProc = procedure;TMyEvent 和 TMyProc 都定义了一个函数类型,他们的差别是,TMyProc 不可以用在类中定义事件,TMyEvent 却可以。如果你想知道问什么,那就需要深入了解事件类型以及函数类型到底是个什么?procedure a();begin ShowMessage()end;var Func 阅读全文
posted @ 2012-08-28 10:15 马儿快跑 阅读(8745) 评论(0) 推荐(0)
摘要:((WebBrowser1.Document as IHTMLDocument3).getElementsByName('input_authnum').item(0,'') as IHTMLControlElement).focus; if WebBrowser1.Document <> nil then IHTMLWindow2(IHTMLDocument2(WebBrowser1.Document).ParentWindow).focus 刚找到了更简单的方法,也许是最简单的: if WebBrowser1.Document <> 阅读全文
posted @ 2012-08-24 22:22 马儿快跑 阅读(2630) 评论(0) 推荐(0)
摘要:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1unitUnit1;23interface45uses6Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,7Dialogs,ComCtrls,StdCtrls;89type10TForm1=class(TForm)11ListView1:TListView;12procedureFormCreate(Sende 阅读全文
posted @ 2012-08-23 16:02 马儿快跑 阅读(395) 评论(0) 推荐(0)
摘要:{取应用程式的版本号程式,如有版本号,返回值为版本号的值,否则返回值为空 返回值的格式为如1.0.0.0 } function GetFileVersion(FileName: string): string; type PVerInfo = ^TVS_FIXEDFILEINFO; TVS_FIXEDFILEINFO = record dwSignature: longint; dwStrucVersion: longint; dwFileVersionMS: longint; dwFileVersionLS: longint; dwFileFlagsMask: longin... 阅读全文
posted @ 2012-08-23 11:38 马儿快跑 阅读(6633) 评论(0) 推荐(0)
摘要:查找某目录下的所有文件(1)查找指定扩展名的文件procedure TForm1.Button1Click(Sender: TObject);var sr: TSearchRec;begin ListBox1.Items.Clear ; if FindFirst('D:\work\*.*', faAnyFile, sr) = 0 then begin repeat if pos('.xls',lowercase(sr.Name))>0 then ListBox1.Items.Add(sr.Name) ; until FindNext(sr) <> 阅读全文
posted @ 2012-08-23 10:36 马儿快跑 阅读(346) 评论(0) 推荐(0)