随笔分类 - Delphi
摘要:基于Delphi的接口编程入门为什么使用接口? 举个例子好了:有这样一个卖票服务,电影院可以卖票,歌剧院可以卖票,客运站也可以卖票,那么我们是否需要把电影院、、歌剧院和客运 站都设计成一个类架构以提供卖票服务?要知道,连经理人都可以卖票,很显然不适合把经理人也包括到卖票服务的继承架构中,我们需要的只是一个共通的卖票服 务。于是,卖票的服务是个接口,电影院、歌剧院什么的只要都遵循这样一个服务定义就能很好地相互交互和沟通(如果须要的话)。 如何在Delphi中使用接口 1、声明接口IMyInterface = interface(IInterface) //说明(1)['{63E072DF
阅读全文
posted @ 2013-05-18 20:50
麦麦提敏
摘要:首先将pagecontrol的ownerdraw设为true再在它的onDrawTab事件里写如下代码:var TmpRect: TRect;begin with PageControl1.Canvas do begin Brush.Color := $00E6F6F8; Font.Color := clblack; FillRect(Rect); TmpRect := Rect; OffsetRect(TmpRect, 0, 3); DrawTex...
阅读全文
posted @ 2013-05-18 20:49
麦麦提敏
摘要:delphi执行查询语句时的进度条怎么做procedure TForm1.FormCreate(Sender: TObject);begin ADOQuery1.ExecuteOptions := [eoAsyncFetch];//设为异步读取end;//ADOQuery的OnFetchProgress事件procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet; Progress, MaxProgress: Integer; var EventStatus: TEventStatus);begin ProgressB
阅读全文
posted @ 2013-05-18 20:37
麦麦提敏
摘要:我有一个问题请教:我在BDEQUERY中使用其FILTER属性进行条件筛选时一切正常,但相同的条件拿到ADOQUERY中使用就出现错误,具体情况如下:1、BDEQUERY和ADOQUERY指向同一个数据库,其中的SQL语句相同;2、筛选条件如果是以下类型的情况都正确: (字段1= 'AAA ') (字段1= 'AAA ') OR (字段1= 'BBB ') (字段1= 'AAA ') AND (字段2= 'TTT ')3、但当出现此类情况时就会出错: ((字段1= 'AAA ') OR (字段1=
阅读全文
posted @ 2013-05-18 19:38
麦麦提敏
摘要:Delphi 2007 代码补全、语句提示的快捷键是什么?CTRL+SPACE 代码补全,很好用的(先改了输入法热键) CTRL+SHIFT+C 编写申明或者补上函数 CTRL+SHIFT+↑(↓) 在过程、函数、事件内部, 可跳跃到相应的过程、函数、事件的定义(在INTERFACE和IMPLEMENTATION之间来回切换) CTRL+SHIFT+G 插入GUID CTRL+J (弹出DELPHI语句提示窗口,选择所需语句将自动完成一条语句)代码模板 CTRL+K+E(F) 标识符变小(大)写 CTRL+K+O(N) 选中的变小(大)写 CTRL+O+U 切换选择块的大小写 SHIFT+鼠标
阅读全文
posted @ 2013-05-12 19:13
麦麦提敏
摘要:Delphi中使用存储过程介绍Delphi + MS SQL Server是目前最为流行的管理信息系统开发环境和工具。Delphi的强大数据库操作控件极大地减轻了开发人员的工作量,在这些控件中,最常用的有 TQuery、TTable、TADOQuery、TADOTable、TADODataSete等,这些控件执行查询操作时有一个共同的特点,即将所有数据库记录从服务器取回客户端,再根据查询的条件进行筛选。很明显,如果有大量的数据在服务器与客户端之间传递,就会降低程序执行的速度,影响应用程序的性能。针对这种情况,MS SQL Server数据库和Delphi开发工具都提供了存储过程来解决这类问题。
阅读全文
posted @ 2013-05-12 19:00
麦麦提敏
摘要:在IDE中输入控件的名称+. 就会弹出代码完成提示,会列出该控件的所有属性、方法等,也许你对代码完成就是这样的印象,其实它还有一些好用的功能,只不过由于它的激活快捷键也是ctrl+space,与我们的中英输入法切换快捷键冲突才没有显露出来,我强烈建议大家把中英输入法切换快捷键改为其它,以使用完整的代码完成功能,下面是一些代码完成功能的演示动画,看看,很酷吧!呵呵,再实现接口时接口定义的方法可以直接过来了,真好用。处理消息时也很方便,消息的定义自动就上去了这功能没见过吧,很有趣也可以直接定位到方法的实现代码引用单元时也不用死记硬背了,也可以选了
阅读全文
posted @ 2013-05-12 18:54
麦麦提敏
摘要:Delphi编程地一些小程序1、用Enter键代替Tab键在实际的程序开发中我们经常有这样的要求,用户不喜欢用Tab键,他希望用Enter键来代替。我们应该什么做呢?首先:设定Form的KeyPreview属性为True。其次:把Form上的所有Button的Default属性设为False。最后:在Form的onKeyPress事件中添加如下代码:procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; Perform(Wm_NextDlg..
阅读全文
posted @ 2013-05-12 18:18
麦麦提敏
摘要:【数据库】数据库基础一、SQL语句(1)Select 查询语句 语法:SELECT [ALL|DISTINCT] <目标列表达式> [AS 列名][,<目标列表达式> [AS 列名] ...] FROM <表名> [,<表名>…] [WHERE <条件表达式> [AND|OR <条件表达式>...] [GROUP BY 列名 [HAVING <条件表达式>]] [ORDER BY 列名 [ASC | DESC]] 解释:[ALL|DISTINCT] ALL:全部 DISTINCT:不包括重复行 <目标列表
阅读全文
posted @ 2013-05-12 14:17
麦麦提敏
摘要:Delphi控制输入为数字或字母Delphi 控制输入为数字或字母if not (Key in ['0'..'9', 'a'..'z', 'A'..'Z', #8, #13]) thenbegin Key := #0; ShowMessage('请输入数字或字母');end;
阅读全文
posted @ 2013-05-12 12:20
麦麦提敏
摘要:Delphi中动态加载Image控件图片的方法作者:海豚王子procedure TForm1.Button1Click(Sender: TObject);var jpg: TJPEGImage; // 要use Jpeg单元begin // 显示jpg大图片的方式 jpg := TJPEGImage.Create; jpg.LoadFromFile(getcurrentdir() + '\pic.jpg'); Image1.Picture.Bitmap.Assign(jpg); // 因为 img 控件是基于bmp的 jpg.Free;end;procedure TForm1.
阅读全文
posted @ 2013-05-12 12:16
麦麦提敏
摘要:TClientDataSet的使用技巧本文从以下几个方面阐述TClientDataSet的使用,希望对你有所帮助.1.动态索引procedure TForm1.DBGrid1TitleClick(Column: TColumn);beginif (not column.Field is Tblobfield) then//Tblobfield不能索引,二进制ClientDataSet1.IndexFieldNames:=column.Field.FieldName;end;2.多层结构中主从表的实现设主表ClientDataSet1.packetrecord为-1,所有记录设从表ClientD
阅读全文
posted @ 2013-05-12 12:13
麦麦提敏
摘要:Delphi编程防止界面卡死的方法作者:海豚王子1.循环里面防止界面卡死的方法可以使用Application.ProcessMessages; 例如下列方法: var n:Integer;begin for n := 0 to 10000 dobegin Edit1.Text := IntToStr(n); end; end; 在程序里执行的时候,界面肯定会卡死的,但如何防止界面出现卡的情况呢,加入Application.ProcessMessages即可,修改后的代码为: var n:Integer;begin for n := 0 to 10000 dobegin Application.
阅读全文
posted @ 2013-05-12 12:03
麦麦提敏
摘要:请教,如何将image显示的图相保存到数据库中?以流的方式保存一下。我做过,就按照这样的。var _picture: TFileStream; begin _picture:= TFileStream.Create('c:\11.bmp',fmOpenRead); with ADOCommand do begin Parameters.Clear; Parameters.AddParameter.Name:='UserPicture';//添加一个参数 Parameters.Add...
阅读全文
posted @ 2013-04-30 16:16
麦麦提敏
摘要:Delphi Excel 操作大全(一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObject( 'Excel.Application' );1) 显示当前窗口:ExcelApp.Visible := True;2) 更改 Excel 标题栏:ExcelApp.Caption := '应用程序调用 Microsoft Excel';3) 添加新工作簿:ExcelApp.WorkBooks.Add;4) 打开已存在的工作簿:ExcelApp.WorkBoo
阅读全文
posted @ 2013-04-24 01:56
麦麦提敏
摘要:Delphi中Format字符串说明 [Format('%.4d', [StrToInt(VarToStr(xxx))]);] ==> 0000function Format(const Format: string; const Args: array of const): string; Format字符串说明: "%" [index ":"] ["-"] [width] ["." prec] type (1) 格式化字符串必须以%开头 (2) [index ":"]
阅读全文
posted @ 2013-04-23 13:16
麦麦提敏
摘要:动态将ADOQuery数据移植到ClientDataSet通用函数昨天做程序突然想到的,如果您会使用内存表就不需要此例了,可以参考一下,代码如下://******************************************************************************// 函数功能: 执行SQL查询语句,影响ClientDataSet控件// 函数名称: cf_dbSelectSQL// 函数参数: var oClientDataSet:TClientDataSet; 对象(ClientdataSet)// sSQL String SQL结构化语言// s
阅读全文
posted @ 2013-04-22 18:13
麦麦提敏
摘要:TClientDataSet的全面剖析1.与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端。很多数据库应用程序都用了BDE,BDE往往给发布带来很大的不便,因而TClientDataSet最大的特点是它不依赖于BDE(Borland Database Engine),但它需要一个动态链接库的支持,这个动态链接库叫DBCLIENT.DLL。在客户端,也不需要用TDatabase构件,因为客户端并不直接连接数据库。由于TClientDataSet是从TDataSet继承下来的,所以,它支持诸如编辑、搜索、浏览、纠错、过滤
阅读全文
posted @ 2013-04-22 18:10
麦麦提敏
摘要:ADO BUG之'无法为更新定位行....' 解决之道在Delphi中,如果使用ADOQuery插入数据没有问题,之后对数据进行修改保存时,就会遇到“无法为更新定位行,一些值可能已在最后一次读取后已更改”的问题。原因有这样几种:1.在数据库设计时,为某些字段设置了默认值,在修改进行提交以后,数据库会自动修改对应字段的所有行的默认值,从而导致了数据库与数据集中数据的不一致,使ADOQuery无法对数据集进行定位。2.数据库对应的表没有主键,输入了重复的数据以后,数据库里有两条一样的数据,从而使ADOQuery无法对数据进行定位。解决方法:1.修改数据库设计,不再设置默认值,为数据
阅读全文
posted @ 2013-04-22 17:55
麦麦提敏
摘要:Delphi数据库处理第一节 BDE、ADO、InterBase和dbExpress Delphi中处理数据库主要有两种方法,也就是BDE、ADO,从Delphi 6.0开始还加入了一种dbExpress方法。 另外,Delphi还提供了专门处理Borland 公司自己的数据库产品InterBase 数据库的专门的方法。 BDE(Borland Databas Engine), 是Delphi中最古老的技术,从delphi 2.0加入BDE 技术以后,一直是Delphi处理数据库的事实上的标准。BDE 是一个基于驱动程序的体系结构,每一种数据格式或数据源都有一种驱动程序来驱动相近的数据源。..
阅读全文
posted @ 2013-04-16 11:40
麦麦提敏