摘要: point: TPoint; Point := (sender as TStringGrid).ScreenToClient(GetMouseCursorPos); (sender as TStringGrid).MouseToCell(Point.x, Point.y, col, row); 阅读全文
posted @ 2013-02-05 12:41 幻劫 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 1 procedure TForm1.Timer1Timer(Sender: TObject); 2 var 3 a:TPoint; //用来存放坐标 4 hw:HWND; //用来存放窗口句柄 5 begin 6 GetCursorPos(a); //取得鼠标坐标,并存放进a中 7 hw := WindowFromPoint(a); //取得变量a 对应的 窗口句柄 8 Edit1.Text := IntToStr(a.X); 9 Edit2.Text := IntToStr(a.Y);10 Edit3.Text := IntToStr(hw);11 end; 阅读全文
posted @ 2013-01-26 17:37 幻劫 阅读(2991) 评论(0) 推荐(0) 编辑
摘要: 首先引入math单元uses math;1.Round(四舍六入五留双)功能说明:对一个实数进行四舍五入。(按照银行家算法)例:vari, j: Integer;begini := Round(1.5); // i等于2j := Round(2.5); // j等于2end;在Delphi中使用Round函数得到的答案有时与我们所预期的会不太一样:采用的是四舍六入五留双。即当舍或入位大于或小于五时按四舍五入来处理,而当舍或入位等于五时,就要看前面一位是什么,根据奇进偶不进,它总是返回一个偶数值。例:i:= Round(11.5)//i等于12i:= Round(10.5)//i等于10这种Ro 阅读全文
posted @ 2013-01-25 12:57 幻劫 阅读(158) 评论(0) 推荐(0) 编辑
摘要: raiserror('该用户授权无效', 16, 1,1) declare 定义 --启动事务 declare @tran_point int set @tran_point=@@trancount if @tran_point=0 begin tran tran_hystatus else save tran tran_hystatus IF @@ERROR<>0 BEGIN SET @return=1 set @returnstr='数据保存失败!' ... 阅读全文
posted @ 2013-01-14 13:32 幻劫 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 使用加号(+)操作符和转换函数(如IntToStr),你确实能把已有值组合成字符串,不过另有一种方法能格式化数字、货币值和其他字符串,这就是功能强大的Format 函数及其一族。Format 函数参数包括:一个基本文本字符串、一些占位符(通常由%符号标出)和一个数值数组,数组中每个值对应一个占位符。例如,把两个数字格式化为字符串的代码如下:Format ('First %d, Second %d', [n1, n2]);其中n1和n2是两个整数值,第一个占位符由第一个值替代,第二个占位符由第二个值替代,以此类推。如果占位符输出类型(由%符号后面的字母表示)与对应的参数类型不匹配 阅读全文
posted @ 2013-01-11 09:41 幻劫 阅读(387) 评论(0) 推荐(0) 编辑
摘要: function SplitString(Source, Deli: string ): TStringList;stdcall; var EndOfCurrentString: byte; StringList:TStringList; begin StringList:=TStringList.Create; while Pos(Deli, Source)>0 do begin EndOfCurrentString := Pos(Deli, Source); StringList.add(Copy(Source, 1, EndOfCurrentString - 1)); Source 阅读全文
posted @ 2013-01-11 09:40 幻劫 阅读(200) 评论(0) 推荐(0) 编辑
摘要: floor 和 ceil 是 math unit 里的函数,使用前要先 Uses Math。trunc 和 round 是 system unit 里的函数,缺省就可以用。floor 直接往小的取,比如 floor(-123.55)=-124,floor(123.55)=123trunc 直接切下整数,比如 trunc(-123.55)=-123, floor(123.55)=123ceil 直接往大的取,比如 ceil(-123.55)=-123, ceil(123.55)=124round 计算四舍五入,比如 round(-123.55)=-124,round(123.55)=124 阅读全文
posted @ 2013-01-11 09:33 幻劫 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 在windows中内存的分配一次是4个字节的。而packed按字节进行内存的申请和分配,这样速度要慢一些,因为需要额外的时间来进行指针的定位。因此如果不用packed的话,delphi将按一次4个字节的方式申请内存,因此如果一个变量没有4个字节宽的话也要占4个字节!这样就浪费了,你可以用packed关键字取消这种优化。例子: type myrec = packed record n1 : integer; 4个字节 n2 : shortint; 1个字节 end; sizeof(myrec)------ 5 type myrec = record n1 : integer; n2... 阅读全文
posted @ 2013-01-11 09:33 幻劫 阅读(269) 评论(0) 推荐(0) 编辑
摘要: TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。常规的用法大家都知道,现在来讨论它的一些高级的用法。先把要讨论的几个属性列出来:1、CommaText2、Delimiter & DelimitedText3、Names & Values & ValueFromIndex先看第一个:CommaText。怎么用呢?用代码说话:const constr :String = 'aaa,bbb,ccc,ddd';var strs :TStrings; i :Integer;begin strs := TStringList.Create 阅读全文
posted @ 2013-01-11 09:30 幻劫 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 本文介绍了在Delphi中利用系统函数和Windows API函数调用来获取和修改文件的时间信息的方法。熟悉Windows 95/98的朋友一定经常会用单击鼠标右键的方法来查看所选定的文件的属性信息。在属性菜单中会列出该文件的创建时间、修改时间和访问时间。这些信息常常是很有用的,它们的设置一般都是由操作系统(也就是由Dos/Windows等等)自动完成的,不会让用户轻易修改。这里,我向大家介绍在Delphi中如何实现文件时间的获取和修改方法。Delphi中提供了很完备的Windows API函数的调用接口,可以方便的进行高级Windows编程。利用Delphi中的FindFirst函数可以得到 阅读全文
posted @ 2013-01-11 09:28 幻劫 阅读(6551) 评论(0) 推荐(0) 编辑