搜档网
当前位置:搜档网 › Delphi中数据的自动录入

Delphi中数据的自动录入

Delphi中数据的自动录入
Delphi中数据的自动录入

在Delphi数据库应用系统的数据录入过程中,有些数据是保存在Excel中的;有些是保存在纸张上的;还有一些是需要新增加的,由于各条记录之间有大量的重复数据,如果每条记录都让录入人员全部手工录入,其间的重复劳动是相当大的,还降低了工作效率。下面就

这个问题进行论述。

1、利用Delphi调用Excel

Delphi中已经带了Word与PowerPoint的例子,因为Excel的调用与这两个应用服务器的调用略有不同,所以也可以利用Delphi

调用Excel。

步骤如下:

(1) 创建一个普通Application.

(2) 在Form中分别放入ExcelApplication, ExcelWorkbook和

ExcelWorksheet.

(3) 连接Excel.

打开Excel.

增加一个Workbook.

添加一个Worksheet.

关闭Excel.

(4) 对Excel的一些操作:

选择某一工作簿中的一个工作表,然后对某一单元格进行赋值及取值。最后选择某一区域作以下操作:

ExcelWorkSheet1.Range[′A1′,′C1′].Select;

打开一个Excel文件.

2、利用OCR识别扫描

OCR可以识别一页A4大小的印刷体中英文混排的纯文本文件只用几秒钟,所以我们可以把扫描的图像进行识别处理、保存。然后通过添加记录或批复制的操作将得到的数据转入数据库的相应的表中。

具体实现如下:

Procedure TForm1.buttonclick(sender:tobject);

Begin

Shellexecute(handle,’open’,’c:\sh60\sh60.exe’,’,’,sw-shownormal);

Button3.enabled:=false;

End;

Procedure TForm1.formcreat(sender:tobject);

Var i:integer:

Begin

Chdir(‘c:\sh60’);

Form1.edit1.clear;

Form1.memo1.clear;

Assignfile(textid,form1.opendialog1.filename);

For i:=1 to form1.adoquery1.sql.count do

Begin

Form1.adoquery1.close;

Form1.adoquery1.clear;

For m1.adoquery1.sq1.add(‘select 表名

from Formname’)close;

Form1.adoquery1.open;

Form1.dbcombox1.datafield:=’表名’;

End;

3、利用原记录更改

Delphi数据录入时自动复制原记录,然后做很少的修改,就完成了一条新记录的编辑,最后直接保存。

使用 ADO 方法存取 Access数据库中的表 test,表的第一个字段是“自动编码”字段,在记录复制时要跳过。首先在 Form1 上添加ADOConnection1、ADODataSet1、DataSource1、DBGrid1 等数据库相关组件,使用连接向导把 ADOConnection1 与 Access 数据库连接起来,把 ADOConnection1 的 LoginPrompt 属性设置为 False,其它

组件的对应属性设置如下:

在 DBGrid 中看到数据库表 test 中的数据,后在窗体上添加一些数据敏感的数据输入控件(如 DBEdit 等),将其 DataSource 属性设为 DataSource1,再分别与各字段绑定起来。

在窗体上添加 2 个按钮 Button1 和Button2,设计相应的触发

事件。

程序编译运行后,按 Button1 按钮,就会添加一条新的记录,记录的内容为添加前记录指针指向的记录的内容.然后对现有数据做些改动,按 Button2 按钮保存新记录。

4、结论

通过对上面部分代码的修改,可以实现数据的自动录入,极大的

提高了数据的录入速度。

Delphi与各数据库数据类型比较

Delphi与各数据库数据类型比较 Delphi数据类型与各数据库数据类型对比如下表,如有具体说明见表中脚注: Delphi Type Oracle Types SQL Server Types MySQL Types[1] ftSmallint NUMBER(p,0)[2] (p<5) SMALLINT TINYINT(M)(M>1) SMALLINT ftWord-TINYINT TINYINT(M)UNSIGNED(M> 1) SMALLINT UNSIGNED YEAR ftInteger NUMBER(p,0)[2] (4 (4

自动创建数据库(DELPHI+SQL SERVER)

自动创建数据库(DELPHI+SQL SERVER) 转载自小李飞刀 procedure TForm1.Btn_OKClick(Sender: TObject); var sqlconn:string; begin Sqlconn:='Provider=SQLOLEDB.1;'+'password='+Edit_Password.Text +';Persist Security Info=true;User ID='+Edit_Name.Text +';Data Source='+Edit_Server.Text; if Edit_Server.Text=EmptyStr then begin showmessage('请输入SQL服务器的名称或者IP地址!'); Edit_Server.SetFocus; exit; end; if Edit_Name.Text=EmptyStr then begin ShowMessage('请输入登陆数据库的用户名!'); Edit_Name.SetFocus; exit; end; with ADO_Test do begin Close; ConnectionString :=Sqlconn; end; Try Try Ado_Test.LoginPrompt:=false; Ado_Test.Connected:=true; Messagebox(Handle,'连接成功。','提示',MB_OK or MB_ICONINFORMATION); Button2.Click; except Messagebox(Handle,Pchar('连接['+Edit_Server.Text+']失败!'),'警告',MB_OK or MB_ICONWARNING); end; Finally Ado_Test.Connected:=false; end; end; procedure TForm1.Button2Click(Sender: TObject); Var memExec,s:TStringList; I,J:integer; strSql,sqlstr,sqlconnstr:string;

Delphi7.0中如何用代码访问数据库的方法

Delphi7.0中如何用代码访问数据的方法 一、第一种方法: 1、设计的界面如下: 2、主要代码: (1)启动窗口中的主要代码: Se:= ExtractFilePath(Application.ExeName) + 'data\jczk.mdb'; //动态取出系统文件的路径ADOADOQuery1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ Se+';Persist Security Info=False'; ADOADOQuery1.Close; ADOADOQuery1.SQL.Clear; ADOADOQuery1.SQL.Add('select * from yhz'); ADOADOQuery1.Open;//ADOADOQuery1.ExecSQL;本句表示不返回值时的记录集合ADOADOQuery1.Active:=true; (2)查询其它表时的代码: ADOADOQuery1.Close; ADOADOQuery1.SQL.Clear; ADOADOQuery1.SQL.Add('select * from jf11'); ADOADOQuery1.Open; ADOADOQuery1.Active:=true; (3)提示窗口:Application.MessageBox('ss','提示',64); (4)说明:DataSource1必须要与ADOADOQuery1连接在一起;DBGrid1必须要与DataSource1连接在一起。 (5)取值:EDIT1.Text:=ADOADOQuery1.FieldByName('yhz04').AsString (6)怎么使用ADOQuery1给数据库添加数据? ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('insert into "Tab_Contron_record"'); ADOQuery1.SQL.Add('('+str_V+')'); ADOQuery1.SQL.Add('values('+str_T+')'); ADOQuery1.ParamByName('用户名').AsString:='admin'; ADOQuery1.ParamByName('连接设备IP').AsString:='192.168.18.66'; ADOQuery1.ParamByName('用户类型').AsString:='管理员'; ADOQuery1.ParamByName('连接时间').AsString:=datetimetostr(now); ADOQuery1.ParamByName('备注').AsString:='无'; ADOQuery1.ExecSQL; (7)、怎么样查询数据库中表的值,即条件查询(注意:Quotedstr()函数的使用):cnn:='select * from sinfo where sid=200601001'; //“sid”字段为数值型可以直接使用; cnn:='select * from sinfo where sclass='+Quotedstr('高一一');//“sclass”字段为字符类型; //多条件进行查询的例子 cnn:='select * from sinfo where sclass='+Quotedstr('高一一')+' and ssex='+quotedstr('男'); ADOQuery1.Close ;

api钩子

一、 序言对大多数的Windows开发者来说,如何在Win32系统中对API函数的调用进行拦截一直是项极富挑战性的课题,因为这将是对你所掌握的计算机知识较为全面的考验,尤其是一些在如今使用RAD进行软件开发时并不常用的知识,这包括了操作系统原理、汇编语言甚至是关于机器指令代码的(听上去真是有点恐怖,不过这是事实)。 当前广泛使用的Windows操作系统中,像Win 9x和Win NT/2K,都提供了一种比较稳健的机制来使得各个进程的内存地址空间之间是相互独立,也就是说一个进程中的某个有效的内存地址对另一个进程来说是无意义的,这种内存保护措施大大增加了系统的稳定性。不过,这也使得进行系统级的API拦截的工作的难度也大大加大了。 当然,我这里所指的是比较文雅的拦截方式,通过修改可执行文件在内存中的映像中有关代码,实现对API调用的动态拦截;而不是采用比较暴力的方式,直接对可执行文件的磁盘存储中机器代码进行改写。 二、 API钩子系统一般框架通常,我们把拦截API的调用的这个过程称为是安装一个API钩子(API Hook)。一个API钩子至少有两个模块组成:一个是钩子服务器(Hook Server)模块,一般为EXE的形式;一个是钩子驱动器(Hook Driver)模块,一般为DLL的形式。 服务器主要负责向目标进程注入驱动器,使得驱动器工作在目标进程的地址空间中,这是关键的第一步。驱动器则负责实际的API拦截工作,以便在我们所关心的API函数调用的前后能做一些我们需要的工作。 一个大家比较常见的API钩子的例子就是一些实时翻译软件(像金山词霸)中必备的的功能:屏幕抓词,它主要是对一些GDI 函数进行了拦截,获取它们的输入参数中的字符串,然后在自己的窗口中显示出来。针对上述的两个部分,有以下两点需要我们重点考虑的:选用何种DLL注入技术采用何种API拦截机制 三、 注入技术的选用由于在Win32系统中各个进程的地址是互相独立的,因此我们无法在一个进程中对另一个进程的代码进行有效的修改。而你要完成API钩子的工作就必须进行这种操作。因此,我们必须采取某种独特的手段,使得API钩子(准确的说是钩子驱动器)能够成为目标进程中的一部分,才有较大的可能来对目标进程数据和代码进行有控制的修改。 通常有以下几种注入方式: 1.利用注册表如果我们准备拦截的进程连接了User32.dll,也就是使用了User32

Delphi数据库处理组件

Delphi数据库处理组件 BDE、ADO、InterBase和dbExpress详细说明 第一节BDE、ADO、InterBase和dbExpress Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi6.0开始还加入了一种dbExpress方法。另外,Delphi还提供了专门处理Borland公司自己的数据库产品InterBase数据库的专门的方法。 BDE(Borland Databas Engine),是Delphi中最古老的技术,从delphi2.0加入BDE技术以后,一直是Delphi处理数据库的事实上的标准。BDE是一个基于驱动程序的体系结构,每一种数据格式或数据源都有一种驱动程序来驱动相近的数据源。BDE可以很好的支持现在最流行的ODBC API方法,ODBC是一种C/C++应用程序编程接口(API),无论是对任何一种客户/服务器关系型数据库管理系统(RDBMS),还是最流行索引顺序访问方法(ISAM)数据库(Jet、Foxpro),都能很好的访问。 同时,由于BDE的驱动程序主要直接来自于第三方开发商,所以,对于像Oracle这些非微软的数据库,执行效率上比较高。正是这些特点,使BDE技术还是得到了很多数据库开发程序员的欢迎。 ADO技术是微软提出来的处理关系型数据库和非关系型数据库的新技术,它基于微软被称为OLE DB的数据访问模式,它是专门为了给大范围商业数据源提供访问而设计的,包括传统的关系型数据表、电子邮件系统、图形格式、Internet资源等。ADO所需内存更少,更适合大流量和大事务量的网络计算机系统。 ADO顶层有三个对象:Connection、Command、Recordset。 Connection用以指定数据源,建立和数据源的连接。 Command对象用以对数剧源执行指定的命令,可以接受SQL语句,表和存储过程的名称,执行SQL查询,更新数据,插入纪录等。 Recordset对象表示的是来自表或命令执行结果的记录全集,操纵来自提供者的几乎所有数据。 由于ADO技术的迅速普及,从Delphi5.0开始,加入了ADO技术的模块,并逐步成为Delphi数据库设计的主流。但是,和VB的ADODC相比,它还是有所不同的,在数据绑定上,它更多的吸收了BDE的特点,以做到和原来的程序兼容,同时,它又可以接受标准ADO技术的各种属 性和方法,在接受这些属性和方法时,它是和数据绑定控件脱离的,当然从某种意义上来说,这种方案提高了执行效率,给设计人员以更多的选择。 dbExpress是Delphi6.0加入的最新的数据库模块,它不使用缓存,可以快速浏览大量的数据,但是,不使用缓存就不能更改,所以它的标准方式是只读的。它一个重要的特点是交叉平台,可以和Linux数据库连接,速度相当快。 下面的讨论,将以ADO技术为主线,最后再说明BDE和dbExpress的应用方式。Top

Delphi两个经典数据库控件集详解

Delphi两个经典数据库控件集详解 Delphi强大的数据库功能一直是Delphi程序员们的最爱,然而,BDE强大功能的后面,却有太多的限制。当程序员们绞尽脑汁编出短小精悍的程序而兴高采烈时,他们不得不尴尬的面对发布程序时BDE那几兆大的附加文件。有没有其他控件,既可以使用Delphi强大的数据库功能而又不要那几兆大的BDE?答案时肯定的,那就是使用第三方控件或者Delphi5的ADO控件。在这里,我将具体介绍Delphi第三方数据库控件集:DiamondAccess1.7和ODBCExpress5.06。DiamondAccess控件集使用微软数据访问对象DAO访问数据库。利用此控件集访问数据库,可以完全摆脱BDE,当然,发布程序时也就无需考虑BDE的麻烦了。而且,DAO的访问速度比BDE更快。ODBCExpress控件集使用大家都很熟悉的ODBC访问数据库,只要设置好数据源,就可以访问大部分类型的数据库;而且,使用ODBC接口的程序具有更大的可移植和通用性。ADO数据库访问控件在Delphi5中已经加入进来,假如要在Delphi4或者更低的版本使用ADO,就必须使用第三方控件,比如:DiamondDAO,同样可以提供强大的更能。以下,我们通过实例的形式具体介绍DiamondAccess1.7和ODBCExpress5.06的使用,我们将利用这两个控件集实现同样的功能:在DBGrid中列出数据库所有数据,通过输入检索数据。通过这些实例,我们可以基本了解以下内容:1)Delphi 中应用这两个控件集访问数据库的基本技术;2)发布采用这两个控件集的程序需要注重的问题和基本方法;3)两个控件集的优缺点和下载安装方法; DiamondAccess控件集演示 >一、控件说明DiamondAccess是一套高速连接MicrosoftAccess数据库的控件集,包括TDAODatabase,TDAOTable,TDAOQuery和TDAOQueryDef四个控件。它不依靠BDE访问数据库,而是使用微软的DataAccessObjects3.5和JetDatabaseEngine访问数据库,利用Access自带数据库引擎,DiamondAccess可以提供高速的数据库访问接口。 图1DiamondAccess控件集 控件TDAODatabase用于定义要访问的Access数据库,主要属性是DataBaseName;TDAOTable和Delphi自带数据库控件Tabel相似;TDAOQuery和Delphi自带控件Query相似;TDAOQueryDef和DAOQueryDefobject一起使用,平时编程中较少用到。二、演示程序现在,我们用实例了解DiamondAccess的用法。在程序中,我们将用到TDAODatabase 控件,TDAOQuery控件,Delphi自带Datasource控件,Edit和Button控件。程序打开数据库DataBase的main表并列出所有数据,Edit1控件用于输入数据检索。为了更好的了解,我们先看看main的表结构。1)数据库DataBase表main的结构字段名数据类型字段大小/格式ID自动 编号长整型姓名文本50电话文本50生日日期/时间常规日期说明文本100 表1数据库DataBase表main的结构 2)程序中控件属性为了程序有更好的可迁移性,我们尽量不再属性面板中设置控件属性,而是在程序代码中设置。以下属性,只是控件最基本的要求,进一步设置请看程序源代码。控件属性Form1Caption:DiamondAccess演示;DAODatabase1默认;DAOQuery1Database:DAODatabase1;SQL:selectfrommain;DBGrid1DataSource:DataSource1;DataSource1Dataset:DAOQuery1;Edit1 Text:空;Button1Caption:检索

Delphi数据库开发完美教程 第1章 Delphi数据库应用系统基础

数据库应用技术Delphi应用系统开发

第1章Delphi数据库应用系统基础 学习要点 学习Delphi数据库应用系统的基本概念 理解Delphi应用系统的组成 学习Delphi基本概念和术语 掌握Delphi可视化编程的基本步骤 学习创建简单的数据库应用系统 理解本书实例数据库应用系统需求

概述: Borland公司的Delphi是一个非常优秀的数据库应用系统前端开发工具。这是由于Borland Delphi自1995年2月诞生Version 1.0以后,1996年3月,Borland Delphi Client/Server Suite 2.0以其高效的数据重用功能得以在美国国家软件测试实验室进行的软件评估中获得了最高评价。随后,Borland又推出Delnhi的第三代版本——Delphi 3.0多层Client/Server的32位快速开发工具。

※1.1 数据库应用系统概述 数据库应用系统是一种应用计算机技术完成数据处理的计算机应用系统,数据处理则指对各种形式的数据进行采集、存储、加工和传播的一系列活动的总和。进行数据处理的目的是为了从大量原始数据中获得对人类社会活动有价值的信息,以作为行动和采取对策的依据。 数据处理的中心问题是数据管理,包括对数据的分类、组织、编码、存储、检索和维护,这就构成了数据库应用系统的功能需求。

可见,数据库应用系统包括如下三个部分: (1)数据库; (2)数据库管理系统; (3)数据库应用程序。 因此,开发数据库应用系统需要选择一种数据库管理系统;然后,在其支持之下建立数据库;最后,使用一种开发工具编制数据库应用程序。本书所要介绍的Borland Delphi就是一种可用于编制数据库应用程序的开发工具。

键盘钩子实例

键盘钩子实例 一、界面样式如下: 主要功能如下:安装钩子拦截按键,允许按键有效和无效,可以记录按键,以及取消钩子。 二、定义界面控件:label1 标记按键、button1 安装钩子按钮、button2 取消钩子按钮 三、源码 1、主界面Form1 using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Reflection; using System.Diagnostics; using Microsoft.Win32; using WinformHook; namespace WinformHook { public partial class Form1 : Form { //钩子管理对象 private KeyboardHookLib _keyboardHook = null; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { //安装钩子 _keyboardHook = new KeyboardHookLib(); _keyboardHook.InstallHook(this.OnKeyPress);

} private void button2_Click(object sender, EventArgs e) { //取消钩子 if (_keyboardHook != null) _keyboardHook.UninstallHook(); } ///

///客户端键盘捕捉事件 /// ///由Hook程序发送的按键信息 ///是否拦截 public void OnKeyPress(KeyboardHookLib.HookStruct hookStruct, out bool handle) { handle = false; //预设置不拦截任何键 if (hookStruct.vkCode == 91) //截获左侧开始win键 { handle = true; } if (hookStruct.vkCode == 92)// 截获右侧开始win键 { handle = true; } //截获Ctrl+Esc if (hookStruct.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) { handle = true; } //截获alt+f4 if (hookStruct.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) { handle = true; } //截获alt+tab if (hookStruct.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) { handle = true; } //截获F1 if (hookStruct.vkCode == (int)Keys.F1) {

DELPHI 数据库(基本编辑操作)

五、数据库1(基本编辑操作) 步骤一:开始---程序---Borland Delphi 6---BDE---Object---New---OK(默认STANDARD)---PATH---设置为含有数据库文件的目录下。 步骤二:向Form1中添加Table组件(BDE组中),DatabaseName---STANDARD1(上一步创建的),TableName---Pza.DBF。添加DataSource 组件(Data Access组中),DataSet---Table1。添加DBGrid组件(Data Controls 组中)DataSource---DataSource1。添加DBNavigator1组件(Data Controls 组中)DataSource---DataSource1。 向Form1中添加6个Button(Button1…Button6) , Caption依次为”添加”,”删除”,”修改”,”确定”,”取消”,”退出”

步骤三: 1.声明一个procedure (public后面一行): procedure setstate(s:integer); //0:browse;1:edit or insert 定义这个procedure(implementation {$R *.dfm}后面一行): procedure TForm1.setstate(s:integer); begin if s=0 then begin button1.Enabled:=True; button2.Enabled:=True; button3.Enabled:=True; button4.Enabled:=False; button5.Enabled:=False; button6.Enabled:=True; end else begin button1.Enabled:=False; button2.Enabled:=False; button3.Enabled:=False; button4.Enabled:=True; button5.Enabled:=True; button6.Enabled:=False; end; end; 2.定义变量x(implementation下面一行): var x:integer; 3.打开Table(Form1---OnActivate) : Table1.Open; setstate(0);

delphi常用api函数

Delphi 常用API 函数 [delphi] view plaincopyDelphi 常用API 函数AdjustWindowRect 给定一种窗口样式,计算获得目标客户区矩形所需的窗口大小AnyPopup 判断屏幕上是否存在任何弹出式窗口ArrangeIconicWindows 排列一个父窗口的最小化子窗口AttachThreadInput 连接线程输入函数BeginDeferWindowPos 启动构建一系列新窗口位置的过程BringWindowToTop 将指定的窗口带至窗口列表顶部CascadeWindows 以层叠方式排列窗口ChildWindowFromPoint 返回父窗口中包含了指定点的第一个子窗口的句柄ClientToScreen 判断窗口内以客户区坐标表示的一个点的屏幕坐标CloseWindow 最小化指定的窗口CopyRect 矩形内容复制DeferWindowPos 该函数为特定的窗口指定一个新窗口位置DestroyWindow 清除指定的窗口以及它的所有子窗口DrawAnimatedRects 描绘一系列动态矩形EnableWindow 指定的窗口里允许或禁止所有鼠标及键盘输入EndDeferWindowPos 同时更新DeferWindowPos调用时指定的所有窗口的位置及状态EnumChildWindows 为指定的父窗口枚举子窗口EnumThreadWindows 枚举与指定任务相关的窗口EnumWindows 枚举窗口列表中的所有父窗口EqualRect

判断两个矩形结构是否相同FindWindow 寻找窗口列表中第一个符合指定条件的顶级窗口FindWindowEx 在窗口列表中寻找与指定条件相符的第一个子窗口FlashWindow 闪烁显示指定窗口GetActiveWindow 获得活动窗口的句柄GetCapture 获得一个窗口的句柄,这个窗口位于当前输入线程,且拥有鼠标捕获(鼠标活动由它接收)GetClassInfo 取得WNDCLASS结构(或WNDCLASSEX结构)的一个副本,结构中包含了与指定类有关的信息GetClassLong 取得窗口类的一个Long变量条目GetClassName 为指定的窗口取得类名GetClassWord 为窗口类取得一个整数变量GetClientRect 返回指定窗口客户区矩形的大小GetDesktopWindow 获得代表整个屏幕的一个窗口(桌面窗口)句柄GetFocus 获得拥有输入焦点的窗口的句柄GetForegroundWindow 获得前台窗口的句柄GetLastActivePopup 获得在一个给定父窗口中最近激活过的弹出式窗口的句柄GetLastError 针对之前调用的api函数,用这个函数取得扩展错误信息GetParent 判断指定窗口的父窗口GetTopWindow 搜索内部窗口列表,寻找隶属于指定窗口的头一个窗口的句柄GetUpdateRect 获得一个矩形,它描叙了指定窗口中需要更新的那一部分GetWindow 获得一个窗口的句柄,该窗口与某源窗口有特定的关系GetWindowContextHelpId 取得

delphi中怎样对alt+Ctrl+Del,win,Tab等热键的屏闭功能实例

delphi中怎样对alt+Ctrl+Del,win,Tab等热键的屏闭功能?请给出实例 200 谢谢!如果编译成功并实现功能,将给分! 用两个按钮btn1 枷锁,btn2解锁! 满意答案 /8-)P☆Z☆L 12级 2010-03-06 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls,Wintypes, WinProcs,TLHelp32, ExtCtrls; type TForm1 = class(TForm) btn1: TButton; btn2: TButton; edt1: TEdit; tmr1: TTimer; //键盘上锁 Function DisableKeyboard: Boolean; //键盘解锁 Procedure EnableKeyboard; procedure btn1Click(Sender: TObject); procedure btn2Click(Sender: TObject); procedure tmr1Timer(Sender: TObject);

private { Private declarations } public { Public declarations } end; var Form1: TForm1; hHk :HHOOK; type PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT; KBDLLHOOKSTRUCT = record vkCode: DWORD; ScanCode: DWORD; Flags: DWORD; Time: DWORD; dwExtraInfo: DWORD; end; implementation var oldHook: Hhook; {$R *.dfm} function ycxsks( yc:Boolean): Boolean;stdcall; //隐藏-显示任务条 var h:THandle; begin if yc = True then begin h:=FindWindow('Shell_TrayWnd',nil); ShowWindow(h,SW_hide); //隐藏任务条 end else begin h:=FindWindow('Shell_TrayWnd',nil); ShowWindow(h,SW_SHOW); //显示任务条 end; Result:=true; end; function keyHookProc(nCode: Integer;WParam: WPARAM;LParam: LPARAM): LRESULT;stdcall; //调用键盘钩子,屏蔽左右win功能键 var

Delphi键盘按键伪码

Delphi键盘按键伪码 Delphi键盘按键伪码 用法:if key = chr(VK_RETURN) then... 常数名称十六进制值十进制值对应按键 VK_LBUTTON 01 1 鼠标的左键 VK_RBUTTON 02 2 鼠标的右键 VK-CANCEL 03 3 Ctrl+Break(通常不需要处理) VK_MBUTTON 04 4 鼠标的中键(三按键鼠标) VK_BACK 08 8 Backspace键 VK_TAB 09 9 Tab键 VK_CLEAR 0C 12 Clear键(Num Lock关闭时的数字键盘5) VK_RETURN 0D 13 Enter键 VK_SHIFT 10 16 Shift键 VK_CONTROL 11 17 Ctrl键 VK_MENU 12 18 Alt键 VK_PAUSE 13 19 Pause键 VK_CAPITAL 14 20 Caps Lock键 VK_ESCAPE 1B 27 Ese键 VK_SPACE 20 32 Spacebar键 VK_PRIOR 21 33 Page Up键 VK_NEXT 22 34 Page Domw键

VK_END 23 35 End键 VK_HOME 24 36 Home键 VK_LEFT 25 37 LEFT ARROW 键(←) VK_UP 26 38 UP ARROW键(↑) VK_RIGHT 27 39 RIGHT ARROW键(→) VK_DOWN 28 40 DOWN ARROW键(↓) VK_Select 29 41 Select键 VK_PRINT 2A 42 VK_EXECUTE 2B 43 EXECUTE键 VK_SNAPSHOT 2C 44 Print Screen键(抓屏) VK_Insert 2D 45 Ins键(Num Lock关闭时的数字键盘0) VK_Delete 2E 46 Del键(Num Lock关闭时的数字键盘.) VK_HELP 2F 47 Help键 VK_0 30 48 0键 VK_1 31 49 1键 VK_2 32 50 2键 VK_3 33 51 3键 VK_4 34 52 4键 VK_5 35 53 5键 VK_6 36 54 6键 VK_7 37 55 7键

delphi数据库的增删改查

查询: V ar strSQL:String; begin strSQL:='Select Checkupid,CustomCode,CustomName,CheckupDate,LeftMoney,CurrMoney,OperatorName,Note from T_Fee_CheckupRecord Where '; strSQL:=strSQL+' CheckupDate between ' +''''+FormatDateTime('yyyy-mm-dd', DateTPbegin.DateTime)+''''+' and ' +''''+FormatDateTime('yyyy-mm-dd', DateTPend.DateTime+1)+''''; if not (Trim(edtCustomCode.Text)='') then begin strSQL:=strSQL+' and CustomCode like '+''''+Trim(edtCustomCode.Text)+'''' end; if not (Trim(edtCustomName.Text)='') then begin strSQL:=strSQL+' and CustomName like '+''''+Trim(edtCustomName.Text)+'''' end; //ShowMessage(strSQL); RefleshGrid(strSQL); end; 其中自定义的函数: procedure RefleshGrid(strSQL:String); begin with DataMD.ADOQuery1 do begin Close; SQL.Clear ; SQL.add(strSQL); Open; end; end; procedure ExeSQL(strSQL:String); 增: procedure TfrmImport.sButton1Click(Sender: TObject); begin frmInportAdd.Showmodal;

Delphi访问ACCESS数据库的详细图文说明

DELPHI访问/使用ACCESS数据库文件的快速开发文档一.数据库建立部分(后台文件型数据库) 1.创建及保存ACCESS文件(以Data.mdb命名) (1)打开ACCESS环境,创建ACCESS文件,保存至ADO ACCESS\Data目录下。 (2)创建(保存)后,出现数据库逻辑关系建立的界面。

2.建立逻辑关系表。(例:E-R关系为:门店销售情况) product(产品表),Sell(销售表),type(产品类型表)

二.Delphi项目(前台应用程序) 1.启动Delphi开发环境及保存项目。 (1)系统会默认创建一个项目组(Project1),我们只要搞清楚以下3个文件即可。 .dfm 窗体文件,就是我们看到的窗口Form1,保存此窗口后形成的文件就是(.dfm)。 .pas 代码文件,就是我们看到的Unit1.pas,保存后就是形成代码文件(.pas)。与窗体文件是对应的。如果有form2,那系统会自动生成unit2.pas,以此类推。 .dpr 项目组文件,就是整个项目保存后的文件组,以后只需要打开此.dpr文件,自动会提取保存的开发环境。

(2)默认状态下,点菜单中File->Save Project As,最好使用全部保存按钮,会跳出保存对话框,选择保存路径为ADO ACCESS目录下。然后连续点保存即可。 把所有文件一一保存,必须保存在同一个目录下。目录保存情况如下。(后面需要调用数据库文件Data\Data.mdb 的路径)。 注意:Unit1.~ddp,Unit1.~dfm,Unit1.~pas都是备份文件(不用管它)

Delphi 中的消息钩子函数和Windows子类处理

首先我们先看一下安装HOOK的函数: HHOOK SetWindowsHookEx( int idHook,//要安装的HOOK的类型 HOOKPROC lpfn, //HOOK的回调函数 HINSTANCE hMod,//进程 DWORD dwThreadId //程序的线程,如果为0则是全局HOOK ); 熟悉了SetWindowsHookEx函数,我们就能开始我们的工作,挂钩进程。 首先打开Delphi,创建一个DLL工程(DLL Wizard)。然后创建一个新的单元(Unit1)。 首先在单元的interface 下面声明要用到的函数。 var OldHook:HHOOK; Histance:HISTANCE; OldProc:FARPROC; 我们的第一个函数是安装HOOK,让我们看一下代码: Function SetHook:Boolean;stdcall; begin OldHook:=SetWindowsHookEx(WH_KEYBOARD,@HookProc,Histance,0); if (OldHook=0) then exit else Result:=True; end; 这样的话就安装一个全局的键盘HOOK,HOOK的方法还有很多,在此就不一一列举了。下面介绍一下回调函数: Function HookProc(nCode,wParam,lParam:Integer);Integer;stdcall; begin Result:=CallNextHookEx(OldHook,nCode,wParam,lParam); end; 这样的话就完成了对进程的挂钩。可是挂上钩我们的工作并没结束,相反,我们的工 作才刚刚开始。钩子的作用是帮我们把DLL注入到别人的进程空间。现在我们的DLL已经在别人的进程空间内。所以,我们就可以做我们想做的事。

在Delphi中连接数据库Word文档

实验四在Delphi中连接数据库1.Delphi 访问数据库的基本方法

ADO(ActiveX Data Object)是Microsoft提供对各种数据库进行访问的高层接口,是DAO/RDO的后继产物,是Microsoft 最新的数据访问组件(Microsoft数据访问组件简称MDAC)的一部分。 ADO是基于OLE DB之上的面向对象的数据访问模型,OLE DB 是Microsoft开发的一种高性能的、基于COM的数据访问技术,其作用是向应用程序提供一个统一的数据访问方法,而不需要考虑数据源的具体格式和存储方式。 2.进入Delphi 3.选择ADO页面:

4.选择ADOTable组件,置于窗体中。

TADOTable组件用于通过一个单个的数据表来获取和操作数据集。TADOTable组件和TTable组件非常类似,许多属性、事件和方法也一样。如果不使用TADOConnection组件,TADOTable组件的ConnectionString属性就需要设定;如果使用TADOConnection组件,那么ConnectionString属性就不需要设定,直接设定其Connection属性使其指向TADOConnection组件即可。 设置ADOTable1的属性: ConnectionString; TableName; Active MasterSource 5.选择Data Access页面,选择DataSource组件,置于窗体中。 TDataSource组件是使用最多的数据访问组件,用来连接数据集组件和数据控制组件。 TDataSource组件的属性比较少,最重要的是DataSet属性。该属性指出要与哪一个数据集组件建立联系,它的属性值是某一个数据集组件。 6.设置DataSource1的属性:DataSet为ADOTable1。

delphi 在应用层截获键盘消息

delphi 在应用层截获键盘消息 2008-12-17 11:12 https://www.sodocs.net/doc/128147690.html,/html/Api/20070703/293.html type TForm1 = class(TForm) ... private ... procedure ApplicationMessage(var Msg: TMsg; var Handled: Boolean); ... end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := ApplicationMessage; end; procedure TForm1.ApplicationMessage(var Msg: TMsg; var Handled: Boolean); var ActiveControl: TWinControl; Form: TCustomForm; ShiftState: TShiftState; KeyState: TKeyboardState; begin case Msg.Message of WM_KEYDOWN, WM_KEYUP: case Msg.wParam of VK_RETURN: // Replaces ENTER with TAB, and CTRL+ENTER with ENTER... begin GetKeyboardState(KeyState); ShiftState := KeyboardStateToShiftState(KeyState); if (ShiftState = []) or (ShiftState = [ssCtrl]) then begin ActiveControl := Screen.ActiveControl;

相关主题