query.locate过个过滤参数
摘要:需要引用Variants locate( 'typeid;name',vararrayof([key1,key2]),[]);
阅读全文
StringGrid换行功能
摘要:关闭stringgrid的defaultdrawing功能 StringGrid1.Cells[cCol,cRow] := '测试1'+#13#10+'测试2';procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Int
阅读全文
FieldByName().AsFloat只可以保留四位小数,四位以上应使用Value
摘要:FieldByName('a').AsFloat to FieldByName('a').Value
阅读全文
clientDataSet转换sql
摘要:ReadMe 新版本delphi,可以用string类型,旧版本需要用widestring function TFRMSOEDIT.vartosql(value: Variant): wideString;var tmp: widestring;begin if (varisnull(value))
阅读全文
使用windows函数SetWindowsHookEx实现键盘钩子
摘要:unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, RzEdit, RzSpnEdt; type
阅读全文
临界区的使用
摘要:MyCs: TRTLCriticalSection; //定义临界区 EnterCriticalSection(MyCs); //进入临界区 //执行的代码 LeaveCriticalSection(MyCs); //离开临界区
阅读全文
打开exe并传参
摘要:shellexecute(Application.Handle,'open',PWideChar('E:\控件\TMS.Scripter.Studio.Pro..6.0.2.0.Delphi.BCB.Registered-Lz0\Demos\idepro\ScripterProIDE.exe'),P
阅读全文
XE10开发的APP对于苹果IPV6上架要求的处理
摘要:1.服务器必须使用域名.不能使用IP地址2.Indy的话,域名加[]3.DataSnap的话,Params.Values['CommunicationIPVersion'] :='IP_IPv6';4.当前网络环境的判断,如下代码:{$IFDEF IOS}uses StrUtils, Posix.N
阅读全文
获取窗体句柄,最大化最小化窗体
摘要://通过程序标题查到程序句柄function TfmPrintSet2.FindWindowByTitle(WindowTitle: string): Hwnd;var NextHandle: Hwnd; NextTitle: array[0..260] of char;begin // 获取第一个
阅读全文
获取控件的xy坐标
摘要:procedure TForm1.SpeedButton1Click(Sender: TObject); var Apoint:TPoint; begin APoint:=TSpeedButton(Sender).ClientToScreen(Point(0,TSpeedButton(Sender)
阅读全文
Delphi IDFtp用法,包含断点续传
摘要:1 连接远程服务器procedure Connect(AAutoLogin: boolean; const ATimeout: Integer);2 改变目录procedure ChangeDir(const ADirName: string);3 下载procedure Get(const ASo
阅读全文
memortstream Base64编码和filestream base64编码不同
摘要:memorystream base64 function BaseImage(fn: string): string; var m1: TMemoryStream; m2: TStringStream; str: string; begin m1 := TMemoryStream.Create; m
阅读全文
Delphi另一个多线程函数:BeginThread用法
摘要:Delphi另一个多线程函数:BeginThread━━━━━━━━━━━━━━━━━━━━━━━━━━ Delphi也提供了一个相同功能的类似函数:function BeginThread( SecurityAttributes: Pointer; StackSize: LongWord; Thr
阅读全文
delphi 讲的比较详细的多线程(推荐)
摘要:在了解多线程之前我们先了解一下进程和线程的关系 一个程序至少有一个主进程,一个进程至少有一个线程。 为了保证线程的安全性请大家看看下面介绍 Delphi多线程同步的一些处理方案大家可以参考:http://www.cr173.com/html/16747_1.html 主线程又程为UI线程。 进程和线
阅读全文
多线程简单实用
摘要:先看一个非多线程的例子, 代码执行时不能进行其它操作(譬如拖动窗体): {自定义方法: 在窗体上绘制...} procedure MyMethod; var i: Integer; begin for i := 0 to 500000 do begin Form1.Canvas.Lock; Form1.Canvas.TextOut(10, 10, IntToStr(...
阅读全文
在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!(更好的管理异常)
摘要:在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程! 如果直接使用Win32的API函数CreateThread()创建多个线程,也是可以创建的。但是,你应该明白,在每个线程中动态分配和销毁内存块,是需要同步保护的。Delphi语言中有一个在使用多线程环境下至关重要的全局变量IsMultiThread,系统在进行内存分配的时候,根据IsMu...
阅读全文
使用delphi TThread类创建线程备忘录
摘要:备忘,不常用经常忘了细节 TMyThread = class(TThread) private { Private declarations } protected procedure Execute; override; {执行} procedure Run; {声明多一个过程,把功能代码写在这里
阅读全文
时间戳,秒级,毫秒级转换DateTime格式
摘要:解决了本地时间和格林尼治时间差问题 function DateTimeToTp(ConvDate: TDateTime): time_t;var zi: TTimeZoneInformation;begin GetTimeZoneInformation(zi); Result := Round((C
阅读全文