随笔分类 -  Delphi

摘要:一。Format的用法Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用:首先看它的声明:function Format(const Format: string; const Args: array of const): string; overload;事实上Format方法有两个种形式,另外一种是三个参数的,主要区别在于它是线程安全的,但并不多用,所以这里只对第一个介绍:function Format(const Format: string; const Args: array of const): string; 阅读全文
posted @ 2013-02-24 16:48 神码都在云端 阅读(190) 评论(0) 推荐(0)
摘要:上一篇介绍了Hint的简单应用,这一篇将给出一个定制Hint窗口的例子。这个自定义Hint窗口的效果不错,以玻璃为边框,并且有阴影的效果。不过这之前,我们必须介绍一个如何定制,Hint的父类为THintWindow,在Controls单元中定义。我们看看几个虚拟方法,CreateParams设定窗口的风格,我们要覆盖掉它,使其没有边框。NCPaint画窗口的边框,我们也要覆盖它,因为我们不需要边框吗。Paint比较重要,为画Hint窗口客户区内容,当然要覆盖。不过最重要的当属ActivateHint,它会设定好窗口的大小,并显示它,我们就在这里定制一个类玻璃的窗口效果。下面给出该类的实现:un 阅读全文
posted @ 2013-02-24 16:47 神码都在云端 阅读(337) 评论(0) 推荐(0)
摘要:Delphi中使用提示是如此简单,只需将欲使用Hint的控件作如下设置:ShowHint := True;Hint := ‘提示信息’;不必写一行代码,相当方便。但有时我们又想自己定制提示的效果,使其看起来更美观更具个人特色,没关系,Delphi完全有办法让你写出自己喜欢的Hint效果。Delphi的Hint功能实现归类在Application类中,所以我们可以在Application类中看到数个关于Hint的属性,这些属性可以设置Hint窗口的颜色,停留时间,出现时间等,设置了这些属性,将对整个工程的Hint功能起到影响。这样做的好处当然是统一了Hint的风格,并且让其他类不必去理会Hint 阅读全文
posted @ 2013-02-24 16:46 神码都在云端 阅读(352) 评论(0) 推荐(0)
摘要:在论坛上常见到有帖子问如何拷贝控件的问题。其实Delphi提供了非常好的持久化机制,笔者写了一个类,提供两个方法,一个是将多个控件保存到流中,另一个是从流中读出控件。下面是源代码:unit ComPersist;interfaceuses Windows, Classes, Controls;type TComPersister = class private FRoot: TComponent; protected function UniqueName(BaseName: string): string; virtual; procedure ReaderSetName(Reader: T 阅读全文
posted @ 2013-02-24 16:43 神码都在云端 阅读(385) 评论(0) 推荐(0)
摘要:我们的程序有时候只允许运行一次,并且最好的情况是,如果程序第二次运行,就激活原来的程序。网上有很多的方法实现程序只运行一次,但对于激活原来的窗口却都不怎么好。关 键就在于激活原来的程序,一般的做法是在工程开始时,打开互斥量对象,如果打不开表示程序还没有运行,创建一个互斥量对象;如果打得开表示程序已经运行 了,查找程序中一个特定的窗口,一般是主窗口,然后发送一个自定义消息,主窗口在这个消息处理中激活自己。我原来就是这么做的,却发现有很多问题。主窗口在消息处理函数中激活不了自己,众所周知激活一个窗口最有效的方法当然就是SetForegroundWindow,但在主窗口中调用这个函数激活自己的效果却 阅读全文
posted @ 2013-02-24 16:41 神码都在云端 阅读(371) 评论(0) 推荐(0)
摘要:{**********************************************************}{ 摘要: 玻璃效果的绘制 }{ }{ 作者: LinZhenqun }{ 日期: 2007-10-5 }{ 邮件: linz... 阅读全文
posted @ 2013-02-24 16:37 神码都在云端 阅读(435) 评论(0) 推荐(0)
摘要:unit uThreadPool;{ aPool.AddRequest(TMyRequest.Create(RequestParam1, RequestParam2, ...)); }interfaceuses Windows, Classes;// 是否记录日志// {$DEFINE NOLOGS}type TCriticalSection = class(TObject) protected FSection: TRTLCriticalSection; public constructor Create; destructor Destroy; overri... 阅读全文
posted @ 2013-02-24 16:03 神码都在云端 阅读(492) 评论(0) 推荐(0)
摘要:1.中文转拼音 function TForm1.yHzToPy(HZ: string): char; begin case Word(HZ[1])shl 8+Word(HZ[2]) of $B0A1..$B0C4:result:='A'; $B0C5..$B2C0:result:='B'; $B2C1..$B4ED:result:='C'; $B4EE..$B6E9:result:='D'; $B6EA..$B7A1:resul... 阅读全文
posted @ 2013-02-24 15:59 神码都在云端 阅读(373) 评论(0) 推荐(0)
摘要:function TServerForm.NameToIP(): String;type pu_long = ^u_long;var varTWSAData : TWSAData; varPHostEnt : PHostEnt; varTInAddr : TInAddr; namebuf : Array[0..255] of Ansichar; fd : integer; rc : integer;begin result := ''; rc := WSAStartup($101,varTWSAData); if rc <> 0 then // raise ESoc 阅读全文
posted @ 2013-02-24 15:56 神码都在云端 阅读(208) 评论(0) 推荐(0)
摘要:RunOnStartup(self.SoeAppInfo1.AppName, ParamStr(0), chkAutoStart.Checked);procedure TServerForm.RunOnStartup(sProgTitle, sCmdLine: string; bStartup: boolean);var sKey: string; reg : TRegIniFile;begin sKey := ''; //sKey := 'Once' if you wish it to only run on the next time you startup 阅读全文
posted @ 2013-02-24 15:54 神码都在云端 阅读(423) 评论(0) 推荐(0)
摘要:1.过滤同步procedure TReport10Form.cxGridViewDataControllerFilterChanged(Sender: TObject);var cds: TClientDataSet;begin cds := cxGridView.DataController.DataSource.DataSet as TClientDataSet; try cds.Filtered := false; cds.Filter := cxGridView.DataController.filter.filtertext; cds.Filtered := True; except 阅读全文
posted @ 2013-02-24 15:45 神码都在云端 阅读(1308) 评论(0) 推荐(0)
摘要:unit mac;interfaceuses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;type TForm1 = class(TForm) lbl1: TLabel; lbl2: TLabel; Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); p 阅读全文
posted @ 2013-02-24 15:41 神码都在云端 阅读(477) 评论(0) 推荐(0)
摘要:1.定义Key常量: 下面三个常量可所以定义, 本人是为了程序注册写得一个简单的这侧表存取功能 const _RootKey = HKEY_LOCAL_MACHINE; _CurrentKey = '\SoftWare\HANDY'; _SoftKeyItem = 'serial_number'; _SoftCodeID = 'soft_codeid'; _HDID = 'hd_id';2.具体函数实现/// <summary>/// 读取 注册表字符串/// </summary>class functio 阅读全文
posted @ 2011-07-30 10:16 神码都在云端 阅读(409) 评论(0) 推荐(0)
摘要:var Cdigs: array[0..9] of string = ('零','壹','贰','叁','肆','伍','陆','柒','捌','玖'); Cdsets: array[1..18] of string = ('万','仟','佰','拾','亿', '仟','佰','拾','万' 阅读全文
posted @ 2011-07-30 10:08 神码都在云端 阅读(354) 评论(0) 推荐(1)
只有注册用户登录后才能阅读该文。
posted @ 2011-07-30 09:44 神码都在云端 阅读(251) 评论(5) 推荐(0)
摘要:引用一位仁兄的 代码1usesIdHTTP;2functionGetPublicIP:string;3var4strIP,URL:string;5iStart,iEnd:Integer;6MyIdHTTP:TIdHTTP;7begin8Result:='';9MyIdHTTP:=TIdHTTP.Create(nil);10try11try12URL:=MyIdHTTP.Get('http://www.ip138.com/ip2city.asp');13except14end;15finally16MyIdHTTP.Free;17end;1819ifLength( 阅读全文
posted @ 2011-07-28 19:14 神码都在云端 阅读(634) 评论(0) 推荐(0)