欢迎访问 水平网    今天是:2017年11月22日 注册 | 登录 | 订阅 | 收藏
推荐文章
热点文章
专题
JQuery框架
Prototype.js
HTML5

Delphi自动化控制Excel

如何控制Excel程序来输出数据,插入公式并根据数据画出图表来呢?Delphi 5 提供了一组封装了Office 97和Office 2000的控件,这组控件位于控件面板的Servers页面上,它可以极大地简化对Office的调用。不过糟糕的是,Borland并没有为这些控件提供使用帮助,但实际上使用这些控件是非常简单的,并且Office的对象体系也在Office的帮助中有着详细的说明。  下面我们将编写一个程序来演示如何控制Excel来创建月份销售情况的报表和图表的。程序运行结果如图1.29所示。连接Excel  同Excel建立连接可以使用Connect 方法。控件由于某些原因可能同Excel无法建立连接,因此应该为连接代码建立一个异常处理,代码示意如下:  try   Ex...
类别:C/S程序开发 - Delphi,阅读:386,更新:2014-05-19

如何判断字符串是否是有效EMAIL地址

function IsEMail(EMail: String): Boolean; var s: String;ETpos: Integer; begin ETpos:= pos('@', EMail); if ETpos > 1 then begin s:= copy(EMail,ETpos+1,Length(EMail)); if (pos('.', s) > 1) and (pos('.', s) < length(s)) then Result:= true else Result:= false; end else Result:= false; end;
类别:C/S程序开发 - Delphi,阅读:361,更新:2014-05-19

用好Delphi中的字符串

一:各种字符串   字符串是Object Pascal所有数据类型中最有用的类型。许多函数以字符串为传递参数。由于在Delphi中字符串的定义和使用有各种方式,包括Pascal中典型的字符串(String),Delphi支持的长字符串(ANSIString),类似于C语言的字符数组(Array of Char),指向字符的指针(Pchar)等。下面的文章就跟谈谈这些类型在定义和应用中的区别和注意事项。 1. 传统的Pascal字符串   在Pascal中,典型的字符串是一定长度的字符序列。每一字符串有一设定的长度(缺省值为255),下面是一个例子: Var Address:String; Code:String[50]; Address是一长度为255的字符串,Code的最大长度为50。 传统的Pascal字符串长...
类别:C/S程序开发 - Delphi,阅读:380,更新:2014-05-19

程序中发布OCX

在DPR文件中 program XXX; uses Forms,Windows, uMainFM in ’uMainFM.pas’ {MainFM}; {$R *.RES} Var hLib:THandle; PRegOcx: procedure ; stdcall; begin Application.Initialize; hLib:=Loadlibrary(’C:TIDESTONEFORMONE6ttf16.ocx’); PRegOcx:=GetProcAddress(hLib,PChar(’DllRegisterServer’)); if Assigned(PRegOcx) then PRegOcx; Application.CreateForm(TMainFM, MainFM); Application.Run; end....
类别:C/S程序开发 - Delphi,阅读:322,更新:2014-05-19

用DLL方式封装MDI子窗体

DLL方式封装MDI子窗体是一种常用的软件开发技术,它的优点:人员可以负责某一个模块的编写包括(界面+逻辑),可以互不干扰,模块开发完成后,主程序统一调用。程序升级,当程序升级时,不用编译主exe文件,更新某个DLL就可以升级。可以根据客户不同的需求、价钱给他们不同的模块。(奸商都愿意用这招) 用到这个技术,因为小弟没有用过,在网上google了一下,对它有了了解,我用的是基于COM的DLL,下面总结如下:想在DLL中封装MDI子窗体,要注意以下几点:你的DLL中的接口要有两个参数:第一,主程序的Application对象;第二,主程序窗体对象;你要重写DLL入口函数,如果是基于COM的,要注意:因为COM没有TA...
类别:C/S程序开发 - Delphi,阅读:401,更新:2014-05-19

用hook实现dll注入详解

需要一个用来注入的dll(inject.dll)及一个调用程序(caller.exe) 流程: caller.exe procedure TestHook; var pwnd,hChild, hwndInject hwnd; msgtmsg; begin 通过窗口标题用FindWindow找到要注入的程序的主窗口句柄pwnd pwnd = findwindow('Progman',nil); 用FindwindowEx(hMain,0,nil,nil)找到要处理的子窗口句柄hChild hChild = findWindowEx(pwnd,0,nil,nil); 用getwindowThreadProcessid(hChild,nil)找到要注入的线程 dwThreadID = getwindowThreadProcessid(hChild,nil); 调用 inject.dll的SetInjectHook方法 SetInjectHook(dwThreadID); 等待消息返回 getmessage(msg,0,0,0); 找到注入的窗口 hwndInjec...
类别:C/S程序开发 - Delphi,阅读:410,更新:2014-05-19

DELPHI存取JPEG、BMP图像到数据库完整解决方案

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ExtDlgs, StdCtrls, ADODB, Grids, DBGrids, ExtCtrls,jpeg, DBCtrls; type TForm1 = class(TForm) DBGrid1: TDBGrid; ADOConnection1: TADOConnection; ADOTable1: TADOTable; selectimage: TButton; savetodb: TButton; OpenPictureDialog1: TOpenPictureDialog; DataSource1: TDataSource; DBNavigator1: TDBNavigator; savetofile: TButton; Label1: TLabel; Label2: TLabel; Button1: TButton; Bevel1: TBevel; B...
类别:C/S程序开发 - Delphi,阅读:407,更新:2014-05-19

Delphi取整函数

floor 和 ceil 是 math unit 里的函数,使用前要先 Uses Math。 trunc 和 round 是 system unit 里的函数,缺省就可以用。 floor 直接往小的取,比如 floor(-123.55)=-124,floor(123.55)=123 trunc 直接切下整数,比如 trunc(-123.55)=-123, floor(123.55)=123 ceil 直接往大的取,比如 ceil(-123.55)=-123, ceil(123.55)=124 round 计算四舍五入,比如 round(-123.55)=-124,round(123.55)=124...
类别:C/S程序开发 - Delphi,阅读:458,更新:2014-05-19

Delphi中编写OwnerDraw方式按钮的方法以及注意点

在Win32标准控件库中(comctl32.dll)的控件绝大部分的控件都支持自画(OwnerDraw)功能的设置,这里以按钮为例子说说此类控件在delphi中的编写方式以及应该注意的问题!由于标准的按钮都有一套规定的外观标准(由windows的comctl32.dll中的代码绘制),为了给用户一个自己绘制控件的机会,多数的控件都支持在创建的时候设置一个标志来告诉系统这个控件需要自己绘制,例如按钮中有:BS_OWNERDRAW,菜单的有:MF_OWNERDRAW等等(还有诸如:ComboBox,ListBox都有这方面的特性),在delphi中设置这个标志不需要按Win32的方式那样在窗口类中定义,只要在CreateParams方法中处理就可以了,虽然内部实现方式是一样的,但毕竟...
类别:C/S程序开发 - Delphi,阅读:511,更新:2014-05-19