摘要:开发环境: delphi6.0及水晶报表9.2 (程序中以bde连接设计报表)打包工具: installshield developer v8.02打包必备: iinstallhields8.0 1. mouules: license.msm;rdcdesigntime.msm;rdcruntime.msm;reportengine.msm 添加以上mouules:在license中输入水......
摘要:http://dev.csdn.net/article/53/53442.shtm如何将几个dbgrid里的内容导入同一个excel表中?在软件实际制作中,为节省开发成本和开发周期,一些软件人员通常会吧dbgrid中的数据直接导出到excel表中,而先前能看到的函数仅仅只能在workbook的一个sheet中导入数据,不支持多sheet!。
~~~~~~~~~~~~~~~~~~~~~~~~~~~......
Delphi关于线程的消息处理
在平时写程序时,总是碰到窗体(tform)与线程(tthread)消息通信问题.令人烦恼的是窗体不能向线程(tthread)发送消息(线程没有窗口句柄).经过几天的折腾,想出二种解决方案,拿出来跟大家探讨探讨.
unit messagehandle; 【程序编程相关:
COM 中的服务器和对象(翻译)
】
第一.我们知道vc++ 中的mfc类库是自已封装了消息处理(beginmessage, endmessage),在mfc中对消息的处理是通过建立一张消息映射表,而把方法(function)或过程(procedure)的地址保存到映射表里(消息处理实质上是方法或过程的调用),再加上一个消息分发机制,来实现消息的接收发送 <详见vc++技术内幕>.所以我们只要为线程里建立一张消息映射表,并建立相应的消息分发机制.这样就可以处理窗体发送到线程的消息.以下代码是实现消息映射表与消息分发的类(详见 <..\消息处理设计(线程)1\messagehandle.pas> 中 ) 【推荐阅读:
用Delphi编写自己的可视化控件
】
interface 【扩展信息:
delphi2005探讨之二
】
uses messages,classes,sysutils,dialogs;
const pmsg_base = $be00; //自定义消息基址;
pmsg_num = 200; //消息表大小;
{**自定义消息处理类
*;功能 = 建立自定义消息表,处理线程之间
* 以及与主窗体之间的自定义消息(宏观)
*}
//消息处理句柄
tmessagehandle = procedure(var message: tmessage) of object;
tpdispatcher = class(tobject)
private
//消息对应表(消息id为数组下标);
messagehandles: array of tmessagehandle;
//从消息id得到数组id
function getindexfrommsgid(const amessageid: cardinal): integer;
public
constructor create;
destructor destroy;
//发送消息...
下一页 摘要:unit tray;
interfaceuses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs,registry,shellapi, comctrls, stdctrls, buttons, menus, extctrls;
const icon_id=3; nif_info......