收藏一个 DBDateTimePicker

qufo 2007-08-03 11:00:00
unit DBDateTime;

interface

uses
SysUtils, Classes, Controls, ComCtrls,DB,DBCtrls;

type
TDBDateTime=class(TDateTimePicker)
private
FDataLink:TFieldDataLink;
procedure DataChange(sender:Tobject);
procedure UpdateData(sender:Tobject);
function GetDataSource:TDataSource;
procedure SetdataSource(value:TDataSource);
Function GetDataField:String;
procedure SetdataField(Value:String);
procedure CMexit(var Message:TCMExit); message CM_EXIT;
protected
procedure Change;override;
procedure Notification(AComponent:TComponent;Operation:Toperation);override;
public
constructor Create(AOwner:Tcomponent);override;
destructor Destroy;override;
published
property DataSource:TDataSource read GetDataSource write SetDataSource;
property DataField:String read GetDataField write SetDataField;
end;
procedure Register;

implementation

procedure TDBDateTime.CMExit;
begin
try
FDataLink.UpdateRecord;
except
Setfocus;
raise;
end;
DoExit;
end;

constructor TDBDateTime.Create(Aowner:Tcomponent);
begin
inherited Create(Aowner);
FDataLink:=TFieldDataLInk.Create;
FDataLink.OnDataChange:=DataChange;
FDataLink.OnUpdateData:=Updatedata;
end;

Destructor TDBDateTime.Destroy;
begin
FDataLink.OnDataChange:=nil;
FDataLink.OnUpdateData:=nil;
FDataLink.Free;
inherited Destroy;
end;

function TDBDateTime.GetdataSource:TdataSource;
begin
result:=FDataLink.DataSource;
end;

procedure TDBDateTime.SetDataSource(Value:TDataSource);
begin
FDataLink.DataSource:=Value;
end;

function TDBDateTime.GetDatafield:String;
begin
result:=FDataLink.FieldName;
end;

procedure TDBDateTime.SetDataField(value:String);
begin
FdataLink.FieldName:=value;
end;

procedure TDBDateTime.DataChange(Sender:Tobject);
begin
DateTime:=now;
if FDataLink.Field <> nil then
if FDataLink.Field.Text<>'' then
DateTime:=FDatalink.Field.AsDateTime;
end;

procedure TDBDateTime.UpdateData(sender:Tobject);
begin
FDatalink.Field.AsDateTime:=DateTime;
end;

procedure TDBDateTime.Change;
begin
FDataLink.Modified;
if not FDataLink.Editing then
FdataLink.Edit;
inherited Change;
end;

procedure TDBDateTime.Notification(AComponent:
TComponent;Operation:TOperation);
begin
inherited Notification(Acomponent,Operation);
if(Operation=opRemove)and(FDataLink<>nil) and(AComponent=Datasource)then
DataSource:=nil;
end;

procedure Register;
begin
RegisterComponents('Data Controls', [TDBDateTime]);
end;

end.
...全文
171 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dernge 2012-01-04
  • 打赏
  • 举报
回复
好东西,十分感谢。
可参考下方数据集可视化效果。 【数据集概况】 · 检测类别(中文):[睡觉(Sleeping)] · 训练集:2370 张 · 验证集:240 张 · 测试集:121 张 · 总计:2731 张 该数据集针对养猪场实际场景,专注于猪的检测,为畜牧业智能化管理提供关键数据支持。通过高精度捕捉猪在猪舍内的状态,该数据集有效助力养殖效率提升和动物福利保障,具有重要的应用价值。 该数据集的训练集、验证集和测试集分别为2370张、240张和121张,总计2731张图像。这种分布比例科学合理,确保了模型训练的充分性和验证的可靠性,为算法性能评估奠定了坚实基础。 该数据集的标注工作展现了卓越的精准度与规... 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 100 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9941** mAP50-95 | 0.9813 Precision | 0.9857 Recall | 0.9910 train/box_loss | 0.2235 train/cls_loss | 0.0921 val/box_loss | 0.1829 val/cls_loss | 0.0889 【训练过程分析】 100 轮训练后 mAP50 达到 0.9941,模型收敛良好。Loss 曲线前段快速下降,后段趋于平稳,val_loss 无反弹,没有明显过拟合。mAP50-95 为 0.9813,和 mAP50 差距仅 0.01,框的定位精度也很扎实。 【模型性能评估】 Precision 0.9857、Recall 0.9910,精召双高,模型对睡...

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧