通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
资源搜索:
热门搜索:Linux VB C语言 PhotoShop Flash TCP/IP
   首页 | 文章 | 软件 | 动画 | 资源 | 励志 | 骗术 | 论坛 | 邮箱 | 会员中心 | 军事 | 科技 | 博客 | 图片 | 商城 | 最新更新 | 800g资源 | 爱心黑客
您现在的位置: 爱国者黑客 >> 资源 >> 程序设计 >> Delphi语言 >> 编程技巧 >> 文章正文
Delphi自定义部件开发(六)
责任编辑:admin   更新日期:2005-8-6

19.3 Delphi部件编程实例

 

19.3.1 创建数据库相关的日历控制-TDBCalendar

 

  当处理数据库联接时,将控制和数据直接相联是很重要的。就是说,应用程序可以建立控制与数据库之间的链。Delphi包括了数据相关的标签、编辑框、列表框和栅格。用户可以使自己的控制与数据相关。

  数据相关有若干等级。最简单的是只读数据相关或数据浏览,以及反映数据库当前状态的能力。比较复杂的是数据相关的编辑,也即用户可以在控制上操作数据库中的数据

  在本部分中将示例最简单的情况,即创建联接数据库的单个字段的只读控制。本例中将使用Component PaletteSamples页中的TCalendar部件。

创建数据相关的日历控制包括下列几步:

创建和注册部件

使控制只读

增加数据联接(Data Link)

响应数据改变

 

19.3.1. 1创建和注册部件

 

每个部件的创建都从相同的方式开始,在本例中将遵循下列过程:

将部件库单元命名为DBCal

TCalendar继承一个新部件,名为TDBCalendar

Component PaletteSamples页中注册TDBCalendar

 

下面就是创建的代码:

 

unit DBCal;

 

interface

 

uses SysUtils, WinTypes, WinProc, Messages, Classes, Graphics, Controls,

Forms, Grids, Calendar;

type

TDBCalendar=class(TCalendar)

end;

 

procedure Register;

 

implementation

 

procedure Register;

begin

RegisterComponents(Samples[TDBabendar]);

end;

 

end.

 

19.3.1.2 使控制只读

 

因为这个数据日历以只读方式响应数据,所以用户不能在控制中改变数据并指望它们反映到数据库中。

使日历只读包含下列两步:

增加只读属性

允许所需的更新

 

1. 增加只读属性

给日历控制增加只读选项是直接过程。通过增加属性,可以提供在设计时使控制只读的方法,当属性值被设为True,将使控制中所有元素不可被选。

增加属性声明和保存值的private域:

 

type

TDBCalendar=class(TClendar)

private

FReadOnly: Boolean;

public

constructor Create (Aowner: TComponent); override;

published

property ReadOnly: Boolean read FReadOnly write FReadOnly default True;

end;

 

constructor TDBCalendar.Create(Aowner: TComponent);

begin

inherited Create(AOwner);

FReadOnly := True;

end;

 

覆盖SelectCell方法,使得当控制是只读时,不允许选择:

 

function TDBCalendar.SelectCell(ACol, Arow: Longint): Boolean;

begin

if FReadOnly then

Result := False

else

Result := inherited SelectCell(AcolARow);

end;

 

还要在TDBcalendar的声明中声明SelectCell

如果现在将Calendar加入窗体,会发现部件完全忽略鼠标和击键事件,而且当改变日期时,也不能改变选择的位置。下面将使控制响应更新。

2. 允许所需的更新

只读日历使用SelectCell方法实现各种改变,包括设置RowCol的值。当日期改变时,UpdateCalendar方法设置RowCol的值,但因为SelectCell不允许你改变,即使日期改变了,选择仍留在原处。

可以给日历增加一个Boolean标志,当标志为True时允许改变:

 

[1] [2] [3] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • 热门文章
    Olldbg常见问题
    汇编语言的艺术(组合语言的艺术)--观
    汇编语言的艺术(组合语言的艺术)--准
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言的艺术(组合语言的艺术)--基
    汇编语言---程式设计 (4)
    虚拟8086模式
    SYS命令使用说明
    javascript + CSS 实现动态菜单显
    推荐文章
    自制Windows XP SP2自动安装光盘
    SQLServer注入工具改进版 v1.02
    使用photoshop CS进行自然美肤
    Photoshop绘制诺基亚手机
    PHOTOSHOP制作秋日之梦
    PHOTOSHOP鼠绘名模王爱萍
    Photoshop制作晶莹飞溅的水珠
    教你用PHOTOSHOP做放大镜
    鼠绘美女及服装修画全过程