Delphi作为一种目前十分流行的数据库开发语言 在数据库开发领域有着十分重要的地位 它不仅提供了可视化的开发环境 使得开发变得相对容易 而且还是一种面向对象的语言 使得程序员能够充分利用面向对象编程的种种优势——如封装 继承等等 从而大大减轻了开发的难度和工作量 下面 我们就谈一谈利用面向对象的特性来开发数据库控件的方法
Delphi本身提供了一些数据库控件 如DBGrid Table等 它们给开发带来了很多方便 下面我们来以一个能够显示数据表中的所有字段的控件为例来说明如何用Delphi来进行控件的编程
首先要为控件选择一个合适的父类 Windows的一个好处就在于它将许多 *** 作标准化了 通过这些标准的 *** 作 使得学习和使用都有章可循 用户就很容 易融会贯通地掌握整个系统 在Delphi中提供了许多控件 这些控件生成的应用程序足以满足Windows编程的要求 而一些新的控件也可以在此基础上 产生 它一方面继承了一部分控件标准的 *** 作 另一方面也在程序中加入一些代码来实现特定的功能 这样用户使用起来不会觉得突兀 也简化了程序的开发 根据 我们的目标可以看出 利用 下拉框 控件作为新控件的父类比较合适 因为它提供了下拉框中的所有标准 *** 作 这就可以大大减少我们的编程量 然后就是为 特定的功能编写代码 我们应该想到 如果一个下拉框能够显示一个数据库中的所有字段 那么它一定有一个属性能够与数据库相连 我们将这个属性定名为 DataSource 并将这一属性添加到控件中 添加的方法是 首先在Private段中加入如下代码
FDataLink:TFieldDataLinkfunction GetDataSource:TDataSourceProcedure SetDataSource( Value:TDataSource)其中TfieldDataLink是一个十分重要的类 我们之所以能够很容易地进行数据库控件的开发全是拜它之赐 它有一些十分有用的属性 如 DataSource 利用这个属性 我们就能很容易地指定新控件的DataSource属性
第三步就是为控件的功能编写代码 可以想到 如果我们想要在拉下下拉框时显示数据库中的所有字段 就要在它的DropDown事件中加入代码来将所有 的字段加入到下拉碰拍框的下拉区域中 这应该分两步走 第一就是要取得指定数据库的所有字段 第二就是将这些字段以字符串的格式加入到下拉框中(而笑键羡拉下时显示 所有字段的功能则由下拉框控件自己完成) 在取得数据库的字段时 用到了我们上面提到的TfieldDataLink类 下面的代码就可以获得指定数据库 的字段数目
j:= j:=FDataLink DataSource DataSet FieldCount //取得数据库亮数中的所有字段的名字 I:=
然后再用下面的代码将这些字段的名字加入到下拉框的items属性中 值得注意的是在每次拉下这个下拉框时都要将items属性清空 否则这个下拉框将每次都会因加入重复的内容而变得越来越长 并且一次选择可以选定许多项 使得控件看起来有点怪
items Clear //清空items属性
repeat //循环 *** 作将字段加入下拉框中
items Add (FDataLink DataSet Fields[I] FieldName )//将字段名加入到下拉框中
I:=I+
until I>j- //直到所有的字段加入完为止
第四步 就是将以上代码加入到Delphi的控件编辑窗口中去 点击Delphi的 Component/New Component 菜单 系统出现一个对话框 将对话框如图 所示填写
填写完毕点击 OK 按钮 就可以创建一个文件 将上面提供的代码加入到文件的适当位置 就可以完成这个控件的编写 图 是带有这个控件的程序的例子
可以想见 这个控件有着十分广泛的功能 例如 我们能够利用它设置指定字段的值来运行查询 也可以返回数据库中指定字段的数据类型 长度等信息 给我们的编程提供了极大的方便
但是也应该看到 这个控件也有一些缺点 那就是它只能显示字段的名称 一般的数据库中字段的名称都是英文的 这给中文版的应用软件带来不便 下面我们 就用FdataLink的另一个属性来显示中文化的字段 这个属性就是DisplayName 它所指定的是数据库字段的显示名称 而这个名称我们可以在 设计时将其汉化 这样在应用程序中显示出来的就是有意义的中文了
lishixinzhi/Article/program/Delphi/201311/8535
'方法一:调用系统API函数
Private Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" (ByVal hWnd As Long, ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Long) As Long
'这是API函数,调用windows 关于窗口,可以改成自己的
Private Sub Command1_Click()
ShellAbout Me.hWnd, "这里写标题", "这里写作者的信息,例如伍凯(作者:刘典武 游龙软件工作腔搏唤室)", Me.Icon '三个参数,最后一个显示关于窗体的ico
End Sub
'方法二:滚动显示作者的信息
Private Sub Form_Load()
Label1.Top = Picture1.ScaleHeight
hh0$ = Chr$(13) + Chr$(10)
SM$ = SM$ + "作者:刘典武" + hh0$
SM$ = SM$ + " " + hh0$
SM$ = SM$ + "游龙软件工作室" + hh0$
SM$ = SM$ + " " + hh0$
SM$ = SM$ + "谢谢使用"银物 + hh0$
Label1.Caption = SM$
End Sub
Private Sub Timer1_Timer()
iStep = 20
Label1.Top = Label1.Top - iStep
If Label1.Top + Label1.Height <Picture1.Top + Picture1.Height Then
If Label1.Top + Label1.Height <20 Then
Label1.Top = Picture1.Height + Label1.Height - 3200
End If
End If
End Sub
'方法三:超级链接和邮件
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label4.ForeColor = RGB(0, 0, 0)
Label4.FontUnderline = False
Label4.MousePointer = 0
Label5.ForeColor = RGB(0, 0, 0)
Label5.FontUnderline = False
Label5.MousePointer = 0
End Sub
Private Sub Label4_Click()
Shell "c:\program files\internet explorer\IExplore.exe http:\\www.liudianwu1988.51.com", vbMaximizedFocus
End Sub
Private Sub Label4_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label4.ForeColor = RGB(255, 0, 0)
Label4.FontUnderline = True
Label4.MousePointer = 10
End Sub
Private Sub Label5_Click()
Shell "c:\program files\internet explorer\IExplore.exe mailto:feiyangqingyun@163.com", vbHide
End Sub
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)