- 博客(38)
- 收藏
- 关注
转载 winsock api编程
一:select模型 select模型是周而复始地去检查......如果有数据......接收/发送....... 使用线程来select应该是通用的做法:procedure TListenThread.Execute;var addr : TSockAd
2011-09-20 22:55:33
544
原创 ADO访问excel
要用DELPHI中的ADO系列控件访问Excel数据文件,首先应该建立一些基本概念。你需要将一个Excel数据文件想象为一个关系数据库,Excel文件中的每个工作表就对应该数据库中的一个表,而工作表中的每一列当然就是表的列了。然后,按照下列面的秘诀进行就可以。 1.设置ADOConnection的ConnectionString 构造ConnectionString时,OLE DB的提供者
2011-07-01 17:15:00
1492
原创 Socket通讯使用IdTCPServer
Indy的全名是Internet Direct(也叫Winshoes),它是一套开放源代码的Internet控件集,它支持大部分流行的Internet协议。 IdTCPServer 在开始工作后,首先会自动建立一个侦听线程TidListenerThread,该线程负责侦听客户端的连接请求,并对每一个服务器已接受的连接创建一个TidPeerThread线程。每个连接通过运行各自所属的Tid
2010-04-13 08:52:00
4059
1
原创 明细化ADO的错误处理
function TForm1.handleErr(cn: TADOConnection): string;var s:string; i:integer;begin s:=; for i:=0 to cn.Errors.Count-1 do begin case cn.Errors[i].NativeError of 945: s:=s + 内存或磁
2010-03-24 14:50:00
584
转载 formatdatetime的详细用法
function FormatDateTime(const Format: string; DateTime: TDateTime): string; overload;当然和Format一样还有一种,但这里只介绍常用的第一种,Format参数是一个格式化字符串。DateTime是时间类型。返回值是一种格式化后的字符串,重点来看Format参数中的指令字符c 以短时间格式显示时间,即全部是数字的表
2009-11-18 08:41:00
1202
原创 dbgrid中保留两位小数
//我经常忘记##格式的TNumericField(FieldByName(ksz)).DisplayFormat:=##0.00; formatfloat(#,##0.#0,w)
2009-06-19 09:40:00
879
原创 利用主键重复的错误返回告知用户
//需要使用EOleException,需要引用ComObj单元,//只是简单测试,也不敢肯定没错误 procedure TForm1.Button1Click(Sender: TObject);var s:string;begin with qry do begin if not connection.Connected then connection.Connec
2009-05-25 15:03:00
846
转载 根据窗体名称动态创建窗体
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ComCtrls, DB, ADODB;type TForm1 = class(TForm) TreeView1: TTreeVie
2009-03-18 14:23:00
797
原创 dbgrid单元格选择数据录入
dbg_.SelectedIndex := dbg_.SelectedIndex + 1; if dbg_.Columns[dbg_.SelectedIndex].FieldName = 备注 then begin dbg_.Columns[dbg_.SelectedIndex].PickList.Clear; dbg_.Columns[dbg_.SelectedIndex
2008-10-16 10:48:00
975
原创 用户自定义控件大小和位置
unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1M
2008-09-17 11:54:00
1051
转载 delphi的socket通讯
ClientSocket组件为客户端组件。它是通信的请求方,也就是说,它是主动地与服务器端建立连接。 ServerSocket组件为服务器端组件。它是通信的响应方,也就是说,它的动作是监听以及被动接受客户端的连接请求,并对请求进行回复。 ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每个ClientSocket组件建立单独的连接,进行单独的通信。因此
2008-04-03 00:46:00
5450
2
转载 用于时间操作的函数
Date函数:定义:Date: TDateTime;作用:返回当前的日期范例:CurrentDate := Date;DayOfWeek函数:定义:function DayOfWeek(Date: TDateTime): Integer;作用:得到指定日期的星期值,返回1~7,代表周日到周六。IncMouth函数:定义:function IncMonth(const Dat
2008-03-27 19:57:00
726
转载 delphi消息处理
Delphi是Borland公司的一种面向对象的可视化软件开发工具。 Delphi集中了Visual C++和Visual Basic两者的优点:容易上手、功能强大,特别是在界面设计、数据库编程、网络编程方面更有其独特的优势。 Delphi中的消息 消息是Windows发出的一个通知,
2008-03-26 21:23:00
1483
原创 一种全局变量的定义方式m_Data
我是一个学习c++的新手,总有一些问题难住我。比如说如下的题目吧,它是一个对于单词统计的的简单程序,可是我看不懂其中的while循环,希望指点 #include #include // prototype for strcmp()const int STR_LIM = 50;int main(){ char word[STR_LIM]; int count = 0;
2008-03-22 23:26:00
957
转载 delphi的消息处理简述
每一个有句柄的窗口控件(继承自TwinControl),在它被创建时,都要在Windwos中注册一个窗口过程(MainWndProc)。这个窗口过程并不是由应用程序自己调用,而是供windows调用的!!! 所以我们在这个过程中写的消息处理过程代码才能被自动调用、运行。 典型的窗口过程是会包含一个大的case分支,以处理不同的消息!比如像这样: Case Message.Msg Of
2008-03-19 16:36:00
817
1
转载 delphi的指针
大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上。因此,说指针是C语言的灵魂,一点都不为过。同时,这种说法也让很多人 产生误解,似乎只有C语言的指针才能算指针。Basic不支持指针,在此不论。其实,Pascal语言本身也是支持指针的。从最初的Pascal发展至今 的Object Pascal,可以说在指针运用上,丝毫不会逊色于C语言的指针。以下内容分为八个部分,分别
2008-03-12 22:51:00
884
2
原创 delphi定义二维数组
procedure TForm1.Button1Click(Sender: TObject);var A :array of array of string; I,J:Integer;begin SetLength(A,10); for I:=Low(A)to High(A)do begin SetLength(A[I],I); for J:=Low(A[I])to High
2008-02-21 14:29:00
7317
原创 fcTreeView的弱点
//就是节点上的小图片不能立马更新//以下是对delphi自带的treeview和fctreeview的比较//手工为两个treeview各加两个节点,一个imaglist,加入两个图片,然后//在button1 click事件中动态修改两treeview中节点的imageindex和selectedindex,//delphi自带的treeveiw立马就改变了节点的上的图片,而fctreevie
2008-01-25 19:32:00
2062
转载 delphi多线程
Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充。 线程本质上是进程中一段并发运行的代码。一个进程至少有一个线程,即所谓的主线程。同时还可以有多个子线
2008-01-10 23:56:00
6727
1
原创 C#改为delphi
//DataType.csusing System;using System.Collections.Generic;using System.Text;namespace CTI.Define{ public enum enumSysModule {NONE=0x00,AGE,IVR,REC,CTI,FAX,WEB,GIS,WMS,APP}; public enum enumRela
2007-12-25 17:33:00
1316
转载 在类中自定义事件
自定义事件定义的方法和定义属性差不多,只是类型时TNotifyEvent。 TNotifyEvent是默认事件,其定义为: TNotifyEvent = procedure(Sender: TObject)示例一(仅列出相当代码):type TParent=class(TObject) private FTimeOut:TNotifyEvent
2007-12-06 09:28:00
829
转载 delphi的MessageBox
Application.MessageBox 是 TApplication 的成員函數,宣告如下: function TApplication.MessageBox(const Text, Caption: PChar; Flags: Longint): Integer; 引數: 1. Text:要顯示的訊息 2. Caption:訊息視窗的標題列文字 3. Flags:訊息
2007-11-14 11:23:00
1936
原创 fcTreeView任何情况下只有一节点被选中
procedure TfmeEvtReg.tvEvtTypeToggleCheckbox(TreeView: TfcCustomTreeView; Node: TfcTreeNode);var i : integer;begin tvEvtType.OnToggleCheckbox := nil; for i := 0 to tvEvtType.Items.Count -1
2007-10-23 10:57:00
983
原创 在delphi端构建数据库事务
// ADODataSet_Main.LockType := ltBatchOptimistic; // ADODataSet_Detail.LockType := ltBatchOptimistic; try ADOConnection1.beginTran; ADODataSet_Main.Insert; // Insert Main data ADODataSet
2007-10-21 12:41:00
799
原创 数据库使用MSSQL固定情况下调用存储过程
//换了数据库后台就肯定失败 function MaxVal(TableName: string) : integer; var ADOQMax:TADOQuery; begin ADOQMax := TADOQuery.Create(nil); ADOQMax.ConnectionString:=connstr;
2007-09-06 17:20:00
653
原创 dephi 绑定变量
//作高效数据库程序比较有用var S:string;begin S:=select dept_name from department where dept_id=:id; DM.qry.Close; DM.qry.SQL.Clear; DM.qry.SQL.Add(S); DM.qry.Prepared:=true; DM.qry.ParamByName(id).Valu
2007-09-06 10:31:00
676
转载 del调用返回游标的存储过程
一.创建包与包体1.附:建表aaclass为下面作测试用create table aaclass(CID VARCHAR2(50), CNAME VARCHAR2(50), pnumber NUMBER(10,0) );INSERT INTO aaclass values(c1, cn1, 10 ) ;INSERT INTO aaclass values(c2, cn2, 40 )
2007-09-05 15:49:00
1014
原创 不知道是不是TpageControl的bug
修改TpageControl的ActivePage属性//定义的全局变量FlagDept:smallInt;//0 :人员 1:部门 2:岗位;//MDI窗体的菜单CLick事件//1procedure TFrmStart.NBuMenClick(Sender: TObject);begin FlagDept:=1; if frmRenYuan=nil then begin frm
2007-09-03 10:25:00
725
原创 delphi操作word
//插入图片var WordApp,WordDoc:variant;begin WordApp :=CreateOLEObject(Word.application); WordDoc :=WordApp.Documents.Add; WordApp.visible:=True; WordDoc.Shapes.AddPicture(D:/Tencent/QQ/353682655/
2007-08-13 17:07:00
1159
转载 delphi操作excel
delphi 控制 excel,创建报表 http://www.delphibbs.com/keylife/iblog_show.asp?xid=11659一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObject( Excel.Application );1) 显示当前窗口
2007-08-13 14:08:00
748
原创 Delphi开发中的一些细节问题
控件名不要以close,create等一些delphi中使用的关键字命令变量名也不要跟控件名相同(oracle存储过程和函数的参数名也不要跟字段名相同)
2007-08-10 09:22:00
487
原创 读oracle图片
var Bmp: TBitmap; Jpg: TJPEGImage; ms:TStream; ms:=frmMain.qryMain.CreateBlobStream(frmMain.qryMain.FieldByName(GIS_ENVMAP),bmRead); Jpg.LoadFromStream(ms); Bmp.A
2007-08-07 15:15:00
493
转载 TStringList的一些高级用法
TStringList的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。常规的用法大家都知道,现在来讨论它的一些高级的用法。先把要讨论的几个属性列出来:1、CommaText2、Delimiter & DelimitedText3、Names & Values & ValueFromIndex先看第一个:CommaText。怎么用呢?用代码说话:const
2007-07-23 15:28:00
963
原创 StringGrid的Click事件中获取选中的当前行
StringGrid 的option中的goRangeSelect设置为false确保goRowSelect为true;然后procedure TfrmEvent.StringGrid1Click(Sender: TObject);begin doEveID.Text:=StringGrid1.Cells[0,StringGrid1.selection.bottom]; doI
2007-07-19 10:41:00
6836
原创 TreeView 叶子代码选中后有兰色背景色的效果
fmeEvtReg1.tvEvtType.SetFocus; fmeEvtReg1.tvEvtType.Items[i].Selected:=true;
2007-07-17 16:29:00
830
原创 主菜单中"窗口"子菜单的简单实现办法
但是必须先用一横线占一个子菜单位,不然弹不出来procedure TFrmStart.N4Click(Sender: TObject);//N4其caption为"窗口"var popItem:TMenuItem; i:integer; frmCap:string;begin if n4.Count>1 then begin for i:=1 to n4.Count-1 d
2007-07-17 11:01:00
911
原创 窗体加载时StringGrid的第一行数据不被选中(去掉蓝色背景色)
uses Grids;procedure TfrmEvent.FormCreate(Sender: TObject);var rect:TGridRect;begin//24为stringgrid1中不存在的范围 rect.Left:=24; rect.Right :=24; rect.Top :=24; rect.Bottom:=24;
2007-07-17 10:48:00
2440
原创 delphi面向对象的部分
overload与overwrite的区别overload--过载:同一类中实现名字相同的函数或过程,但它们的参数列表或返回类型不同overwrite--重载:子类中用来覆盖父类中名字相同的函数或过程,以实现子类中该函数或过程的、使其不同于父类中同名函数或过程的功能,它与父类中同名函数或过程具有相同的参数列表(个数、数据类型)和返回值。Override是在Runtime时候判断的,而O
2007-05-26 11:10:00
760
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人