TMS TPlanner and TDBPlanner日程与日历组件主要用来设计各种不同类型的计划日程应用程序。该组件已连续3年获得“Delphi Informant杂志读者选择奖”的最佳日程与日历组冠军。但是该组件唯一的缺点就是缺少帮助文件,只有一个英文的TMS Planner developers guide 使用文档。演示程序也不是很详细。近来因需要研究了一下TDBPlanner,感觉确实是很棒的组件,无须写太多代码就可以很轻松的将数据库与TDBPlanner绑定,直接在TDBPlanner上对数据库进行操作。下面就将一些使用心得介绍给大家。
一、 相应的组件介绍
(一) TDBPlanner组件
TDBPlanner主要由12个显示区域和方式构成(如下图):
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 415.5pt; HEIGHT: 309.75pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:%5CDOCUME~1%5CADMINI~1%5CLOCALS~1%5CTemp%5Cmsohtml1%5C01%5Cclip_image001.emz"></imagedata></shape>
1. TPlanner caption:表格标题。可通过Planner 的caption属性进行设置,可以选择是否显示。
2. TPlanner navigator buttons:列导航按钮。可通过Planner 的NavigatorButtons属性进行设置,可以选择是否显示。
3. TPlanner sidebar:工具条,可通过Planner的Sidebar属性进行设置,可以选择是否显示。它可以设置在表格的左边、右边、顶部及左右两边同时显示。
4. TPlanner header:表格头。可通过Planner的Header属性进行设置,可以选择是否显示。
5. TPlanner grid:表格主体。可通过Planner的Display属性进行设置。
6. TPlannerItem:日程条目。条目通用显示方式,标题包括时间和文本。可在DefaultItem中进行设置。
7. TPlannerItem:日程条目。超文本显示方式,标题为固定文本。
8. TPlannerItem:日程条目。HTML显示方,该方式可以插入超文本链接。
9. TPlanner footer:表格尾。通过进度条显示该列资源情况。
10. TPlannerItem:可以在表格头显示的日程条目。
11. TPlannerItem:背景日程条目。
12. 通过定制画出的表格头。
可通过Sidebar的Position属性设置Planner是横向显示还是竖向显示。
(二) TDBDaySource组件
TDBDaySource组件是数据控件和TDbPlanner控件之间的桥梁,通过它可以将数据库字段与TDbPlanner的一些显示属性关联起来。
主要属性如下:
属性 |
说明 |
AutoHeaderUpdate |
自动将日期数据填充到TDbPlanner的表格头。 |
AutoIncKey |
当数据库主键使用自动增量时,应设置该值为true,这样TDBDaySourcedoes将不会自动产生一个GUID的主键值。 如果数据库主键不使用自动增量,则应当将该值设置为false,这样当增加一个Item的时候,TDBDaySourcedoes将自动产生一个GUID作为数据库的主键值。 |
DataSource |
设置数据源 |
Day |
设置TDbPlanner第一列的日期值 |
EndTimeField |
设置保存结束时间的字段 |
KeyField |
设置主键字段 |
NotesField |
设置TPlannerItem的文字内容字段 |
StartTimeField |
设置保存开始时间的字段 |
SubjectField |
设置TPlannerItem的的标题字段 |
二、 演示程序
1、 数据库设置
在数据库中必需存在一下三个字段:
字段 |
类型 |
说明 |
开始时间 (StartTime) |
全日期/时间 |
如果数据库不支持全日期/时间类型可以用长度位20的字符类型代替 |
结束时间 (EndTime) |
全日期/时间 |
如果数据库不支持全日期/时间类型可以用长度位20的字符类型代替 |
主键(Key) |
字符或者自动增量 |
如果是字符类型则长度需要为40,可参考TDBDaySource组件的AutoIncKey属性 |
当然了,为了记录日程信息,还需要以下两个字段:
字段 |
类型 |
说明 |
日程内容 (Notes) |
字符或备注 |
|
日程标题 (Sbuject) |
字符 |
该字段可要可不要,因为在默认编辑状态下(不使用编辑控件),日程标题是不可修改的。 |
以上字段你可以通过TDBDaySource组件的属性关联起来,这样当TDbPlanner的属性内容发生改变的时候可以自动更新这些字段。
如果你还需要记录其它额外信息,可通过DBItemSource.OnFieldsToItem 和DBItemSource.OnItemToFields事件设置字段值。
例如:
下面的代码将映射数据库的COLOR字段到TPlannerItem的Color属性,IMAGE字段映射到TPlannerItem的ImageID字段,CAPTION字段设置TPlannerItem的标题显示。
procedure TForm1.DBDaySource1FieldsToItem(Sender: TObject; Fields:TFields;Item: TPlannerItem);
begin
Item.Color := TColor(Fields.FieldByName('COLOR').AsInteger);
Item.CaptionBkg := Item.Color;
Item.ImageID := Fields.FieldByName('IMAGE').AsInteger;
if Fields.FieldByName('CAPTION').AsBoolean then
Item.CaptionType := ctTime
else
Item.CaptionType := ctNone;
end;
procedure TForm1.DBDaySource1ItemToFields(Sender: TObject; Fields:TFields;
Item: TPlannerItem);
begin
Fields.FieldByName('COLOR').AsInteger := Integer(Item.Color);
Fields.FieldByName('CAPTION').AsBoolean := Item.CaptionType =ctTime;
Fields.FieldByName('IMAGE').AsInteger := Item.ImageID;
end;
2、 程序设计
数据库建立后就可以开始建立演示程序了。
在Form1上各放置一个TAdoConnection控件、TADOTable控件、TDataSource控件、TDBDaySource控件和TDBPlanner控件。
各控件属性设置如下:
a) TADOConnection
属性 |
值 |
说明 |
ConnectionString |
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False |
|
LoginPrompt |
False |
|
Connected |
True |
|
b) TADOTable
属性 |
值 |
说明 |
Connection |
ADOConnection1 |
|
TableName |
Test |
|
Active |
True |
|
c) TDataSource
属性 |
值 |
说明 |
DataSet |
ADOTable1 |
|
d) TDBDaySource
属性 |
值 |
说明 |
AutoIncKey |
True |
因为使用了自动增量作为主键,所以这里要设置为True |
DataSource |
DataSource1 |
|
StartTimeField |
StartTime |
< 发表评论
最近访客 更多访客>>最新评论
|
评论