摘要: 类函数\类过程. 它们是直接操作在类上面(没有实例化的对象)下面是Delphi Help 的描述 A class method is a method (other than a constructor) that operates on classes instead of objects. The definition of a class method must begin with the reserved word class. For example, type TFigure = class public class function Supports(Operation: st 阅读全文
posted @ 2013-04-28 15:30 小天1981 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 本文主要基于“Delphi Development Guide”一书的代码标准部分而来,编者参考其它的Delphi代码标准规范,以及结合现目前Delphi社区中流行的程序书写惯例,作了一些修改和裁剪,你也可以根据自己的需要进行裁剪和修改。如果你有什么建议,或是希望编者加上你认为遗漏的东西,欢迎Email至:riceball@cq118.com目录:前言源程序书写规范通用源代码书写规范Object Pascal语句书写规范与用法命名规范过程(Procedure)与函数(Function)变量(Variable)类型(Type)一般类型构造类型类类型(Class)字段方法属性元件类型窗体与对话框类 阅读全文
posted @ 2013-04-28 15:28 小天1981 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 其实系统中的任何事件都是有消息的,U盘的插拨也不例外,让程序去接收这些消息就能知道U盘的状态此处我写了一个Demo程序,用来监视U盘插上或拨下。主要的问题就在如何去接收消息,以及接收什么消息。在DBT单元中,封装了与驱动有关的消息及API,我们只需要稍做研究,即可写出这个程序了。一、接管消息procedure TFormMain.WndProc(var Message: TMessage);varhdr: PDevBroadcastHdr;vol: PDevBroadcastVolume;beginif Message.Msg = WM_DEVICECHANGE thenbegin case 阅读全文
posted @ 2013-04-28 15:26 小天1981 阅读(371) 评论(0) 推荐(0) 编辑
摘要: uses StdCtrls,shlobj,Activex,ComObj;procedure WMDEVICECHANGE(var msgx:Tmessage);message WM_DEVICECHANGE;function GetLastMoveDrive:String;varDrivetype:Integer;root:String;i:Integer;beginResult:='';for i:=67 to 91 do //从C:盘开始到Z:盘beginroot:=char(i)+':\';Drivetype:=GetDriveType(pChar(roo 阅读全文
posted @ 2013-04-28 15:24 小天1981 阅读(510) 评论(0) 推荐(0) 编辑
摘要: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons, DB, ADODB;typeTForm1 = class(TForm) cmbbzxh: TComboBox; bbtnShowName1: TBitBtn; aqrytm: TADOQuery; ADOConnection1: TADOConnection; Memo1: TMemo; bbtnIsExists1: TBitBtn; Edit1 阅读全文
posted @ 2013-04-28 15:23 小天1981 阅读(794) 评论(0) 推荐(0) 编辑
摘要: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons, TypInfo;typeTDemoType = (dta, dtb, dtc);TForm1 = class(TForm) BitBtn1: TBitBtn; Edit1: TEdit; procedure BitBtn1Click(Sender: TObject);private {Private declarations} aDemoType 阅读全文
posted @ 2013-04-28 15:22 小天1981 阅读(481) 评论(0) 推荐(0) 编辑
摘要: (1)控件属性设置RecvBufferSize说明(默认值为8192字节):该属性为整型变量,用于指定连接所用的接受缓冲区大小。这些属性是indyftp里面的。SendBufferSize说明(默认值为32768字节):该属性也为整型变量,用于指定连接所用的发送缓冲区的最大值。该属性在WriteStream方法中 时,可用于TStream指定要发送内容的块数。如果要发送的内容大于本属性值,则发送内容被分为多个块发送。TransferType说明(默认值为ftBinary):该属性为TIdFTPTransferType型变量。用于指定传输内容是二进制文件(ftBinary )还是ASCII文 件 阅读全文
posted @ 2013-04-28 15:02 小天1981 阅读(404) 评论(0) 推荐(0) 编辑
摘要: program FTPServer_console;(*Sample of the usage of the TIdFtpServer component.Also shows how to use Indy in console appsCreated by: Bas Gooijen (bas_gooijen@yahoo.com)Disclaimer:Use it at your own risk, it could contain bugs.Copyright:Freeware for all use*){$APPTYPE console}usesClasses,windows,sysut 阅读全文
posted @ 2013-04-28 14:56 小天1981 阅读(825) 评论(0) 推荐(0) 编辑
摘要: Delphi获得与设置系统时间格式在Delphi中,特别是在写管理系统软件时,经常要用到 FormatDateTime 以将 TDateTime 格式的日期时间转换成字符串形式的值显示或保存起来,或者用 StrToDateTime将字符串形式的日期时间转换成 TDateTime 然后再做其他操作。在进行时间或日期的转换时,会使用系统当前设定的时间日期格式。而如果时间日期格式与字符串中的表示方式不相符,会使转换过程失败。例如当前短日期格式设定为'yyyy/MM/dd',而要转为 '2006-10-20'这样的字符串为日期,就会报错,说这不是一个有效的日期。所以在进 阅读全文
posted @ 2013-04-28 14:54 小天1981 阅读(676) 评论(0) 推荐(0) 编辑
摘要: unit NetFunc;interfaceusesSysUtils, Windows, dialogs, winsock, Classes, ComObj, WinInet, Variants;//错误信息常量constC_Err_GetLocalIp = '获取本地ip失败';C_Err_GetNameByIpAddr = '获取主机名失败';C_Err_GetSQLServerList = '获取SQLServer服务器失败';C_Err_GetUserResource = '获取共享资失败';C_Err_GetGroupL 阅读全文
posted @ 2013-04-28 14:52 小天1981 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 1、保持合适的列宽且充满整个区域cxgrid默认情况下,列有一个属性MinWidth,这个属性默认情况下是20,把它改为0。然后把cxgridview的columnAutoWidth设置为true。这样列宽就会在充满整个区域的基础上,根据设计时候的长度进行微调。再也不会在dataset open之后胡乱变换长度了。2、隔行换色不能在gridDrawCell事件下写类似于这种的着色代码:{if AViewInfo.RecordViewInfo.Index mod 2 = 0 thenbegin ACanvas.Canvas.Brush.Color := rgb(252,240,235); ACa 阅读全文
posted @ 2013-04-28 14:50 小天1981 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 一、使用TfrxReport 组件工作1、加载并存储报表默认情况下,报表窗体同项目窗体构存储在同一个DFM文件中。多数情况下,无须再操作,因而你就不必采用特殊方法加载报表。如果你决定在文件中存储报表窗体或者是数据库的Blob字段(他提供了非常大的弹性,你能够在非编译程序中修改),你必须使用“TfrxReport”提供的加载和存储方法。function LoadFromFile(const FileName: String; ExceptionIfNotFound: Boolean = False): Boolean;从一个给定名字文件中加载报表。如果第二个参数等于“True”并且文件没找到,那 阅读全文
posted @ 2013-04-28 14:36 小天1981 阅读(460) 评论(0) 推荐(0) 编辑
摘要: procedure TForm1.Button1Click(Sender: TObject);varRPrinter:TextFile;i:integer;begin{设置打印机}Assignfile(RPrinter,'lpt1');{准备写文件}Rewrite(RPrinter);{打印}for i := 0 to memo1.lines.Count - 1 doWriteln(RPrinter,memo1.lines[i]);{向后倒纸}Writeln(RPrinter,chr($b)+chr(27)+'K'+chr(40));{向前进纸}Writeln( 阅读全文
posted @ 2013-04-28 14:36 小天1981 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 功用一:在框架里面根据存储在数据表中的方法名来动态调用执行方法。unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject);published procedure Test(Sender: TObject);end;varForm1: TForm1;impleme 阅读全文
posted @ 2013-04-28 14:31 小天1981 阅读(149) 评论(0) 推荐(0) 编辑
摘要: Delphi 異常捕捉的一種方法使用TApplicationEvents控件在OnException()事件裏面添加異常處理代碼If E is EOutOfMemory then // 內存不足……Else if E is EAccessViolation then // 非法訪問內存……異常類型定義在SysUtils.pas單元 阅读全文
posted @ 2013-04-28 14:30 小天1981 阅读(159) 评论(0) 推荐(0) 编辑
摘要: MIS系统权限控制的一个简便方法收藏 新一篇: 创MIS系统的权限又多又复杂,很多人是在用户数据表中设置多个字段,每个字段代表一个权限,或者设置一个字符串,不同的字符组合表示用户的不同权限。简单一点的,可以预先设置几个角色,根据角色来行使预设权限,但又不够灵活。现介绍一个简单灵活的权限分配控制的方法,并无高深见解,只是很多人忽略了它。如果您正在设计权限控制模式,不妨接着往下看。此方法非常简洁,扩充性很好。仅用一个 integer 字段即可保存全部权限组合。另外每个权限用一个整型表示如:商品查看权限用 1 ;商品更改权限用 2 ;商品完全浏览权限用 4 ;订单查看权限用 8 ;订单更改权限用 1 阅读全文
posted @ 2013-04-28 14:06 小天1981 阅读(278) 评论(1) 推荐(0) 编辑
摘要: function IsFileInUse(FName:string):Boolean;varHFileRes:HFILE;beginResult:=False;if not FileExists(FName) then Exit;HFileRes:=CreateFile(PChar(FName),GENERIC_READ or GENERIC_WRITE,0, nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);Result:=(HFileRes=INVALID_HANDLE_VALUE);if not Result then CloseHandle(HFil 阅读全文
posted @ 2013-04-28 14:05 小天1981 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 1.將FastReport存入數據庫中:在窗體的"Insert"按鈕的OnClick事件中插入下面代碼:(Insert_rep: TADOQuery.設置SQL語句:select * from reportdata.注:ReportData為放置數據庫的表,其中有字段ID(標志),REPORT(報表內容))procedure TForm1.Button4Click(Sender: TObject);vartemplate : TStream;begintemplate := TMemoryStream.Create;template.Position := 0;frxRep 阅读全文
posted @ 2013-04-28 14:04 小天1981 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 1. 先用一般的文书编辑器建好一个 MySet.inc 的普通文本文件 , 内容为 :{$H+}{$DEFINE _Proversion}2.在我们的程序中 , 加入一列 {$I MySet.inc}, 例如 :unit Unit1;{$I MySet.inc}interface…implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);begin{$IFDEF _ProVersion}ShowMessage(' 专业版 ');{$Else}ShowMessage(' 只有专业版才有此功 阅读全文
posted @ 2013-04-28 14:02 小天1981 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 1、选择相应的过滤项目,然后直接就过滤,无需要再点一下回车 initialization DBGridEhCenter.FilterEditCloseUpApplyFilter := True;2、以前版本的过滤字串都是模糊过滤了,可是最近发现变成的匹配了。 会对 EhLib 5.0 Build 5.0.13 Russian version 版修改 DBUtilsEh.pas 文件的第927行function VarValueAsFilterStr(v: Variant): String; begin if VarType(v) = varDouble then Result := Float 阅读全文
posted @ 2013-04-28 13:31 小天1981 阅读(277) 评论(0) 推荐(0) 编辑