
DELPHI编程
aroc_lo
这个作者很懒,什么都没留下…
展开
-
编写复合型控件遇到的问题
组合控件开发原创 2025-03-26 09:48:33 · 758 阅读 · 0 评论 -
DELPHI编译软件时带上当前IDE的版本号
即可得到一个大小为 90K左右的控制台程序 GetIDEVER.exe(这就是为什么用D2007编译的原因,目前我的电脑最低是2007,用最新的DXE12,编译出来得有4.5MB左右)我想得到的是IDE的版本号,比如当前最新版本的DELPHI是:Embarcadero® RAD Studio 12 Version。IDE提供的API中,好象没有与之相关的东西;想要得到这个版本号,也许只能用变通的方式。此时,只需要在你的单元文件中导入这个INC即可直接读取了。得到的也只是编译器的版本号。原创 2024-09-21 09:27:14 · 732 阅读 · 0 评论 -
ADOQuery中使用Resync解决读取lookup数据不正确的问题
但仍然不完美,使用 Resync 会遍历QRY1 的每一行数据,最终会定位到最后一行数据。在 ADOQuery的fields 属性中,增加两个lookup字段 L_NAME ,L_QTY ,LOOKUP数据集 QTY_LOOK 到QTY1中。此时虽然可以刷新(相当于重新统计QRY1)的数据,但是这要重新在后台执行那个存储过程来”重置“QRY1的数据是可以解决这个问题。在使用 Delphi2007 的ADOQuery时,遇到一个看到的数据与读取 lookup 数据不一样的问题。就完美的解决了这种“原创 2024-06-14 15:45:33 · 470 阅读 · 0 评论 -
D2007使用DBGridEH导出EXCEL时中文乱码的解决方法
导出excel原创 2024-06-07 09:13:24 · 221 阅读 · 0 评论 -
使用CleintDataset 蜂巢式主从结构,修改主表KEY字段出现 Cascaded updates not enabled
在provider的option属性中将 opCascadeDeletes 与 opCascadeUpdates 设置为 True 即可。原创 2020-06-04 13:31:53 · 284 阅读 · 0 评论 -
uniGui 出现 [FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
之前觉得好玩,用 UniGui 帮一个朋友(开一间小公司)弄了一个管理上的小东西。使用的是 Delphi D10.1(Berlin)+ UniGui 1.0.0.1397 + fireDac + MSSQL2008 弄的,运行得还不错;后来新版本的DELPHI D10.3.2(RIO)版出来,就想玩玩。然后发现 UniGui 1.0.0.1397版安装不上,就装了 1.9.0.0.1506...原创 2019-11-14 09:17:08 · 2345 阅读 · 0 评论 -
用代码实现为程序创建快捷方式的二种方法
有时,我们会编一些小的工具软件, 不需要安装就能直接使用的那种所谓的绿色软件。这种软件不需要安装,但有时我们又需要他能在桌面或 Windows 开始菜单的程序组里能有一个快捷方式。那么就可能需要工具软件本身来直接为程序创建一个桌面或程序组的快捷方式。在Windows操作系统里,桌面的快捷方式有两种, 一种是以 .lnk 为后缀名的文件快捷方式。另一种是保存在注册表里的快捷方式,如MS转载 2008-09-20 08:34:00 · 1744 阅读 · 0 评论 -
DELPHI 外挂
在几年前我看到别人玩网络游戏用上了外挂,做为程序员的我心里实在是不爽,想搞清楚这到底是怎么回事。就拿了一些来研究,小有心得,拿出来与大家共享,外挂无非就是分几种罢了(依制作难度):1、动作式,所谓动作式,就是指用API发命令给窗口或API控制鼠标、键盘等,使游戏里的人物进行流动或者攻击,最早以前的“石器”外挂就是这种方式。2、本地修改式,这种外挂跟传统上的一些游戏修改器没有两样,做这种外挂在编程转载 2008-09-20 10:04:00 · 907 阅读 · 0 评论 -
DELPHI 心得
1. 有几种方法可以禁止主窗口在不任务栏显示. 1) 通过SetWindowLong设置主窗口的属性:SetWindowLong(Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);2) 设置 窗口的 ParentWindow 为桌面窗口的句柄var AHandle: THandle;begin SetWindowLong(Handle, GWL_EXST转载 2008-09-20 10:19:00 · 544 阅读 · 0 评论 -
让程序自己更新本程序
先介绍一下 MOVEFILEEX 的使用.移动文件:MoveFileEx(c:/winnt/system32/xxxx.exe, d:/winnt.bak/system32/xxxx.exe,MOVEFILE_REPLACE_EXISTING);MoveFileEx(c:/winnt/system32/xxxx.exe, d:/winnt.bak/system32/转载 2008-09-20 10:28:00 · 1003 阅读 · 0 评论 -
DLL详解
DLL文件(Dynamic Linkable Library 即动态链接库文件),是一种不能单独运行的文件,它允许程序共享执行特殊任务所必需的代码和其他资源 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用转载 2008-09-20 20:45:00 · 548 阅读 · 0 评论 -
实现壁纸更换的示范代码
通过 DELPHi 编程方式实现更换 Windows 桌面背景的方法。陆岛工作室为本示范提供了一个详细完整的函数,可以直接在DELPHI 下调用该函数实现更换 Windows 桌面背景。函数代码如下: type TWallpaperStyle = (wsTitle, wsCenter, wsStretch); //平铺, 居中, 拉伸function ChangeWindowsDe转载 2008-09-20 09:49:00 · 1513 阅读 · 0 评论 -
介绍如何通过代码实现模拟按键的函数
Windows API 的 keybd_event 函数,它可以产生键盘消息。实现向其他窗口模拟真实的按键动作。例如: {按下A键} Edit1.SetFocus; keybd_event(VK_SHIFT, 0, 0, 0); keybd_event(ord(A), 0, 0, 0); keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP,转载 2008-09-20 10:09:00 · 761 阅读 · 0 评论 -
自己收集整理的 DELPHI 中控制与使用HMTL帮助文件的单元代码。
在程序里加帮助文件,是常用的方法,我一直使用以下这个单元,不过 DELPHI2007好像对HTML帮助文件的支持有所改善。但没试过,因为自己整理使用的这个单元一直很好用。所以常得有用(对使用DELPH的朋友)。所以贴出来了。主要有以下几个函数,//取帮助文件名function HelpFileName: String;//根据 ContextId 调用帮助function ShowHel转载 2008-09-20 10:10:00 · 931 阅读 · 0 评论 -
DELPHI 数据库控件心得
TField对象的SetText和GetText事件处理函数使用TField对象的SetText和GetText事件处理函数可方便的解决字段的代码与代码所对应值的显示问题TSimpleDataset/TClientDataset对象的Aggregation使用TDataset对象的Aggregate属性可以来计算客户端数据集中数据的总计数值、平均值或是计算最大值和最小值。使用TBookMa转载 2008-09-20 10:24:00 · 1230 阅读 · 0 评论 -
Delphi 中取本机的计算机名、IP地址、Windows登录的用户名
几个在Delphi 中取本机的计算机名、IP地址、Windows登录的用户名的函数.uses Windows, WinSock;{ ComputerLocalIP }//取本机的 IP 地址function ComputerLocalIP: string;var ch: array[1..32] of char; wsData: TWSAData; myHost: PHostE转载 2008-09-20 10:28:00 · 1791 阅读 · 0 评论 -
Delphi数据类型详细介绍
一、整数类型类型 所占字节数 取值范围byte 1 0-255word 2 0-65535shortint 1 -128-127smallint 2 -32768-32767integer 4 -214748648-214748467longint转载 2008-09-20 14:27:00 · 2069 阅读 · 0 评论 -
实现执行外部程序,并等待程序结束的函数。
type TExecState = (esNormal, esMinimized, esMaximized, esHidden); function ExecuteFileWait(Handle: HWND; const FileName, Params, StartDir: string; InitialState: TExecState): Integer;{Handle:转载 2008-09-20 09:54:00 · 617 阅读 · 0 评论 -
加壳原理与简单实现加壳(delphi源码)
{*****************************************************************AddShell()源自于前一段时间有写的addsection()新增区段代码,在增加区段代码的基础上,追加了1.修改启动入口点位置2.增加一段壳头xor $50的代码function AttachStart-function AttachEnd 这一段代码是先填充转载 2008-09-20 10:06:00 · 805 阅读 · 0 评论 -
几个WebBrowser相关的函数
贴几个 TWebBrowser 编程相关的函数。{ 去掉 TWebBrowser 的边框 }procedure WB_Set3DBorderStyle(Sender: TWebBrowser; bValue: Boolean);{ WebBrowser 从内存中读取 HTML 文件}procedure WebBrowserLoadFromStream(WebBrowser转载 2008-09-20 10:09:00 · 795 阅读 · 0 评论 -
DELPHI 中让嵌入窗体的 WebBrowser 控件无边框
最近写一个程序。需要用到 TWebBrowser 控件。出现了一个问题:WebBrowser 组件在未载入 HTML 之前是无边框的,当载入 HTML 之后,WebBrowser 四周出现了一个三维边框,和程序本身的风格极不协调。经过测试以后发现,该边框并不是 WebBrowser 产生的,而是 WebBrowser 中载入的 HTML 产生的。后来真接用 CSS 去掉了边框,在网上转载 2008-09-20 10:22:00 · 1216 阅读 · 0 评论 -
建立任意图片形状窗口的方法
增加一个新的函数,内容如下,直接复制 即可function Tform1.CreateRegion(wMask: TBitmap; wColor: TColor; hControl: THandle): HRGN;vardc, dc_c : HDC;rgn : HRGN;x, y : integer;coord : TPoint;line : boolean;color : TColor;beg转载 2008-09-20 14:19:00 · 550 阅读 · 0 评论 -
System.Trunc、System.Round、System.Int - 返回整数部分
举例:vari: Integer;d: Real;begini := Trunc(1234.5678); {截取整数}ShowMessage(IntToStr(i)); {1234}i := Trunc(-1234.5678);ShowMessage(IntToStr(i)); {-1234}i := Round(1234.5678); {四舍五入}ShowMessage(IntToStr(i))转载 2008-09-20 14:25:00 · 566 阅读 · 0 评论 -
在XP/2K 下实现 Win+Ctrl+Del 等键的屏蔽的方法
在 Windows 98 下我们知道用 SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @temp, 0); 来实现 Win+Ctrl+Del 的屏蔽,但这种方法在NT的操作系统下如 Windows XP / Windows 2000等就不行了,这里我给大家提供一个新的方法,采用钩子拦截的方式,来实现屏蔽系统按键。本示例附详细的源码与演示程转载 2008-09-20 09:56:00 · 664 阅读 · 0 评论 -
我的Delphi开发经验谈
--------开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi7来开发软件,在Vista下推荐使用Delphi 2007开发软件。安装好Delphi 7后,应立即安装Delphi 7 UpdatePack 1,Delphi2007则建议尽量安装最新的版本。工欲善其事,必先利其器,为了提升开发转载 2008-09-20 14:07:00 · 924 阅读 · 0 评论 -
查询 SQL SERVER 的版本号
有时会需要查询一下SQL SERVER 的版本好, 以下代码从网上收集而来。 在DELPHI 下测试通过。--SQL SERVER 2000SELECT SERVERPROPERTY(productversion), SERVERPROPERTY (productlevel), SERVERPROPERTY (edition)--SQL SERVER 20原创 2008-09-20 14:30:00 · 580 阅读 · 0 评论 -
两个非常有用的进程函数
/// /// 根据程序名(全路径)获得进程ID(PID)/// /// 程序完整路径+文件名/// function GetPIDByProgramName(const APName: string): THandle;varisFound: boolean;AHandle, AhProcess: THandle;ProcessEntry32: TProcessEntry32;APath: ar转载 2008-09-20 19:59:00 · 766 阅读 · 0 评论 -
DBGridEh 过滤错误的解决
找到 DbUtilsEh.pass 文件在第 71行左右你将看到: STFilterOperatorsSQLStrMapEh: array[TSTFilterOperatorEh] of String = (, =, , >, , >=, , LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NO原创 2008-09-22 14:58:00 · 1624 阅读 · 0 评论 -
Delphi2009带来了什么?
目前网上多数Delphi2009新特性的介绍集中在Unicode,以及一些新的VCL上,我试图从一些不同的角度察看一下Delphi2009都有些什么新东西。 集成开发环境 IDE:粗看起来Delphi2009的IDE较之Delphi2007并没有什么特别的增强。主要的UI元素也没有大的变化。最显著的变化就是Project Manager和Tool Palette,另外DockWin转载 2008-09-21 22:17:00 · 1115 阅读 · 0 评论 -
求某年某月的天数
Function GetDays(AYear,AMonth:Integer):Integer;begin Case AMonth of 1,3,5,7,8,10,12: Result:=31; 4,6,9,11: Result:=30; 2: Begin If IsLeapYear(AYear) Then Result:=29 Else Result:=28;原创 2008-09-23 22:33:00 · 1016 阅读 · 0 评论 -
淺談如何使用Delphi 2009的泛型容器類別
Delphi2009在Delphi程式語言方面加入了兩個主要的功能,一個是泛型程式設計(GenericsProgramming),另外一個就是匿名方法(Anonymous Method)。Delphi2009在Win32加入了泛型程式設計之後,Delphi程式語言便可以同時在Win32,.NET平台下使用泛型程式設計。由於Delphi2009在Delphi程式語言本身加入了泛型程式转载 2008-09-23 23:01:00 · 748 阅读 · 0 评论 -
Tiburon遊記3 動手建立一個DataSnap JSON伺服器吧
也許讓我們先動手用Tiburon實作一個DataSnap JSON分散式架構再搭配前面說明的觀念的話,各位將會更加瞭解Tiburon把這些強大的功能做得多麼的方便。DataSnap新的JSON分散式架構可以有許多不同的型態,更可以結合資料庫和Web應用程式,不過在一開始讓我們先學習如何建立最簡單的JSON分散式架構,下面是我們即將實作的JSON分散式架構的簡單說明:1. 建立一個分散式JS转载 2008-09-23 22:53:00 · 702 阅读 · 0 评论 -
两个数据表同步的触发器
假如有两个表,TableName1和TableName2,两个表字段相同,都是有一个fID(TableName1表为标识,自动+1,TableName2表设置为普通字段),和一个varchar类型的content两个字段。现在要实现TableName2作为TableName1的备份,对TableName1的所有修改(增、删、改)都要对TableName2同时生效。可以使用以下触发器CREATE T原创 2008-09-26 15:09:00 · 639 阅读 · 0 评论 -
DBGridEh 多行选择
procedure TfrmMain.Button5Click(Sender: TObject);var I,J: Integer; SelectedRows :TBookmarkListEh ; s:string;begin ListBox1.Clear; if DBGridEh1.SelectedRows.Count >0 then begin with DBGridEh1.转载 2008-10-17 11:17:00 · 1105 阅读 · 1 评论 -
打开了之窗体的函数
打开子窗体procedure TfrmMain.OpenChildWnd(FormClass: TFormClass);var i:Integer; child:TForm;begin for I := 0 to MDIChildCount -1 do begin if MDIChildren[i].ClassType =FormClass then begin chi转载 2008-10-15 09:37:00 · 492 阅读 · 0 评论 -
Delphi流操作技巧
1、文件流 TStreamMemoery 读写内存 TMemoryStream的继承关系如下TObject|TStream|TCustomMemoryStream|TMemoryStream 如何使用TMemoryStream?其实TmemoryStream使用就跟TStream 一样具体的属性,方法可看帮助。下举一例:如我想在内存中直接读写一个Bitmap,怎么办?TmemoryStream帮原创 2008-10-02 21:03:00 · 890 阅读 · 0 评论 -
使用飞信SDK开发短信收发程序
利用飞信的协议可以在线收发消息,或是向手机发送消息。由此,可以自己来完成一个IM工具。本文即是对飞信SDK的使用方法,及如何开发作一个说明。一、引用FetionSDK飞信是采用C#开发的,所有的程序集均是.NET,因此我们也需要使用Delphi.NET/Chrome来进行相关的开发。在Chrome中,新建一个工程,并引入FetionSDK.dll,当然您也可以使用Delphi转载 2008-10-14 21:41:00 · 1818 阅读 · 0 评论 -
考勤数据打印方法;
考勤数据。大多数情况下,都不会有星期天,有的时候还不满一个月。 可是打印的时候,希望能得到一张完整的全月考勤。 有一种方法是将要打印的数据 select into 到一个临时表(我用MSSQL)。然后再判断每一个人所缺的天数,然后插入日期和空的考勤数据; 这种方法是非常不可取,以前好象在哪里看到人有人这么样作; 谈谈我的作法: 建一个空表。字段 fWorker原创 2008-10-15 21:43:00 · 1267 阅读 · 0 评论 -
Delphi&C#代码模拟“显示桌面”的功能
今天有人问我:“用shell打开文件(显示桌面.scf)的方式还是用模拟键盘(Win+D)显示桌面”这应该有更好的方法,就搜了搜,关键字定位“ToggleDesktop”因为显示桌面.scf的内容是:[Shell]Command=2IconFile=explorer.exe,3[Taskbar]Command=ToggleDesktop找到了MSDN http://msdn.转载 2008-10-18 08:38:00 · 640 阅读 · 0 评论 -
获得QQ聊天输入框中的内容
// 首先得到输入框的句柄。通过spy++这类工具分析,聊天窗体的类名为“#32770”// 但当前系统里不只一个类名为“#32770”的窗体,这就需要全体遍历一次。// 类名为“#32770”标题含“聊天”基本能确定。为保险起见还判断一下所在进程是否为“qq.exe”uses PsAPI, RichEdit;function Process_ReadRichEditText(AHandle:转载 2008-10-18 08:44:00 · 880 阅读 · 0 评论