天行健,君子以自强不息;地势坤,君子以厚德载物。


Tag: Delphi预览模式: 普通 | 列表

Delphi HTML5 Canvas组件

最近去sourceforge瞎转悠,突然发了一个组件,关于Delphi下Html5的canvas的组件,大概浏览了一下源码,竟然是纯粹的Pascal代码,也就说完全的Delphi代码。不敢独享,现在上传到我的博客上以供有需要的人下载研究。



查看更多...

Tags: Delphi HTML5 Canvas 组件

分类:Delphi技巧 | 固定链接 | 评论: 2 | 引用: 0 | 查看次数: 2231

Delphi之UPnP穿NAT

在2ccc论坛上参加了一个讨论穿透NAT的问题,于是想起了以前收集来的一点代码,其中有一个是组件,不过这个组件有些老,如果使用WinHTTP来封装的话,就会省去很多的麻烦,毕竟UPnP走的也是HTTP协议,只是增添了不同的Header罢了,我的理解是这样的,可能不对。

好了,废话不说了,就把收集来的代码、组件分享出来了。

查看更多...

Tags: Delphi UPnP NAT HTTP协议 2ccc

分类:Delphi技巧 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1001

【翻译】了解和防止内存泄露

支持面向对象编程Delphi是如此丰富和强大。雷和对象允许模块化编程。除了更多的模块和更多复杂的组件外,同时也带了更多的迷惑和更多复杂的Bugs。

当用Delphi开发一个程序(几乎)总是那么的有趣,当你感觉整个世界都在反对你的这个局面下。

无论什么时候你需要创建一个对象你就得释放它所使用的内存。无疑此时try...finally...end语句块可以帮助你防止内存泄露;它会持续不断的监视你的代码的安全性。

查看更多...

Tags: Delphi 内存泄露 资源泄漏 AssignFile CloseFile Create 内存污染 变量初始化错误 变量定义冲突 指针错误

分类:Delphi技巧 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1141

Delphi不用ODBC不用安装驱动连接mySQL

我们有时候,可能需要用Delphi来连接mySQL数据库,也许大多数人的选择是安装mySQL官方提供的ODBC驱动,然后连接mySQL数据库。这样做在我看来是很麻烦的一件事情。所以如果让我选择的话,我一定不会选择使用ODBC的驱动或者是BDE方式来连接mySQL数据库的,有这样的选择吗?

当然有,要不然我就无法进行在这个话题了。

先说一下原理吧:不适用驱动连接mySQL,那肯定是用了mySQL中的某个文件,这是一定的,不如将mySQL中的libmySQL.dll文件里面的函数导出,并且定义相关的数据结构,这样就可以使用这个DLL来处理mySQL数据库了。

查看更多...

Tags: Delphi ODBC 连接 mySQL 驱动

分类:Delphi技巧 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2550
为什么要这样做?

有时候我们需要一个非窗口组件(比如一个非继承自TWinContrl的组件)可以接受Windows消息。要接受消息就需要一个窗口句柄,但是非窗口组件却没有句柄。这篇文章将讲述怎么让一个没有句柄的组件如何通过一个隐藏的窗口接受消息

这是怎么做到的?

查看更多...

Tags: Delphi 组件 消息 Windows TWinContrl AllocateHWnd DeallocateHWnd DefWindowProc

分类:Delphi技巧 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 834

Delphi多表合并数据

Delphi最强悍之处,莫过于数据库编程了。就Delphi提供的数据库组件也是数量不少了,更不用说第三方的数据库组件,那更是多不胜数1,Delphi所提供的数据库组件TDataSource,TADOQuery,TDBGrid,TADOConnection等这些都算是比较常用的,而且是比用到的。

今天写这个文章也用到了上面三个组件,首先,我们先来设置TADOConnection,这个组件主要是设置它的ConnectionString属性,不设置它,我们将无法与数据库建立连接,这个两种设置方法:

1.采用连接字符串形式来连接数据库,这种方法有个缺点,就是当你把数据库文件移到了其他地方之后,程序连接数据库就会出错。或许有人会说,我在窗体创建的时候用代码设置ConnectionString来连接数据库,这样也可以,不过我个人觉得还是不太方便,假如把数据库文件移动到了其他的磁盘那怎么办?连接是不是失败了?

查看更多...

Tags: Delphi 合据 TADOQuery TDataSource TDBGrid TADOConnection

分类:Delphi技巧 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 327

Delphi与Javascript的交互

网络上也有人写了关于Delphi与Javascript的文章,其大多数使用ScriptControl等,均无法达到与Delphi自身融合的效果。我也是在翻阅自己的组件库的时候发现了这个以前收集来的代码。这个主要是使用了Mozilla的Javascript引擎,所以在程序运行的时候必须带上js3215R.dll和msvcr70.dll这两个动态链接库。

现在我们来看一看几个例子:

例程1:

查看更多...

Tags: Delphi Javascript 交互

分类:Delphi技巧 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1774
最大化按钮不可用,而且窗体最大化,我以前一直这样设置:在Object Inspector下把BorderIcons属性下的biMaximize属性设置为False,然后把WindowState属性设置为wsMaximized,结果是窗体的最大化按钮的确是隐藏了,窗体也最大化了,但是窗体也遮盖住了任务栏!

网上也有很多人来讨论这个问题的,也有人说窗体的ALign 属性为 alClient同时窗体WindowState属性要设置为wsNormal就可以了;这样看起来的确是最大化了,但是窗体还是有点边框显示了出来,当你点击最大化的时候窗体还是会重新调整为真正的最大化。还有人在窗体创建过程使用如下代码:
var  
  TrayWnd:  HWnd;

查看更多...

Tags: Delphi 窗体 最大化按钮 BorderIcons biMaximize CreateForm

分类:Delphi技巧 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 458
{**********************************************************************
API函数 AnimateWindow 使用:
函数功能:窗体显示和隐藏时产生特殊的动画效果;可以产生两种类型的动画效果:
          滚动动画 和 滑动动画
函数原型:BOOL AnimateWindow(HWND hWnd, DWORD dwTime, DWORD dwFlags)

查看更多...

Tags: Delphi Windows API 函数 AnimateWindow 窗体 特效

分类:Delphi技巧 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 349

如何编写需要启动参数的Delphi程序

有些时候,我们想让我们的程序根据不同的参数启动不同的界面或者,通过主程序才可以调用,这个时候使用启动参数也不是一种可行的方法。

1.首先建立一个工程,然后选择Project菜单;
2.选择View Source命令;
3.这样就打开了工程文件,一般的工程文件的代码如下:

查看更多...

Tags: 编写 需要 启动参数 Delphi 程序

分类:Delphi技巧 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 325