你最好都不用DBEDIT,因为这样数据输入的控制不方便
解决方案 »
- delphi DLL 对象做参数
- mapx 雨量分布图 如何绘制? 中文mapx大家有吗? 图层动态如何更换?
- 我在用FASTREPORT的时候,发现中文有些难看,还有些是英文的.
- 简单算法一下子转不过湾来,求救!
- 请问TStream及其子类是不是线程安全的!!!
- OOP精彩疑问!
- 有关操作符"and"的使用,请高手指点!
- Delphi7 for .NET Preview(CD2)那东东我上传到playICO
- 能不能在一个DataModule上放两个database?答者有分
- 关于Delphi6的数据库问题,急!急!急!
- ******* 关于鼠标!!! *******
- 挑战Windows编程高手
Table.FieldByName('rq').AsDateTime := dtp.Date;
Table.Post;
自己的提示。
如果用日期控件,你可以在DBNAVIGATE的onclick或datasource的ondatachange
里写 datetimepicker1.date:=query1.field.asdatetime
不过最好是给DBEdit发一个Message否则它不会自动更新
我就是这样弄的,Boss大呼:好神奇,我当即晕倒~~
Table['rq']:=dtp.date;
Table.post;
在DBEDIT的ONENTER事件里,动态创建DateTimePicker,位置紧贴DBEDIT,
大小刚好等同三角按纽大小,而DBEDIT不能编辑,只能通过DateTimePicker来
获得时间,当时间确定好以后,记得在DBEDIT的ONEXIT事件里释放DateTimePicker.
最好是写成类或是函数形式来调用,多次调用代码就简洁多了.
try
Table.FieldByName('rq').AsDateTime:=strtodatetime(dbedit.text);
except
raise exception.create('请输入正确的日期');
end;不行吗?
frmShowDate.GetDate(DBEdit1);日期输入窗体为frmShowDate,其中GetDate代码如下
procedure TfrmShowDate.GetDate(AControl: TCustomEdit);
var
APoint: TPoint;
begin
APoint.X := AControl.Left;
APoint.Y := AControl.Top;
APoint := (AControl.Parent as TControl).ClientToScreen(APoint);
frmShowDate.Left := APoint.X;
frmShowDate.Top := APoint.Y + AControl.Height; try
MonthCalendar1.Date := StrToDate(AControl.Text);
except
MonthCalendar1.Date := Date;
end;
if frmShowDate.ShowModal=mrOK then
AControl.Text := DateToStr(MonthCalendar1.Date);
end;
在Post之前将输入值用代码写到字段对象里。
其实用代码给字段对象赋值的情况是常见的,比如给某些字段赋缺省输入值。
Table['rq']:=dtp.date;
Table.post;
strtodatetime(dbedit.text);
except
raise exception.create('请输入正确的日期');
其实你可以自己写一个控件来做这件事,很简单的。从Datetime控件继承下来,再放上一个TDataLink在里面负责与数据进行会话。发布TDataSource和TKeyField属性就行了。很多地方都有相应的例子。比如程序员大本营2002的Borland版里面就有这个实例。
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, DBTables, StdCtrls, Mask, DBCtrls, ExtCtrls;type
TForm1 = class(TForm)
Table1: TTable;
Table1Birthday: TStringField;
DataSource1: TDataSource;
DBEdit1: TDBEdit;
DBNavigator1: TDBNavigator;
procedure FormActivate(Sender: TObject);
procedure Table1BirthdayGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure Table1BirthdaySetText(Sender: TField; const Text: String);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses unit2;
{$R *.DFM}procedure TForm1.FormActivate(Sender: TObject);
//设置一个日期型字段的输入掩码,可以放到TField字段定义中。
begin
Table1.FieldByName('Birthday').EditMask:= '!9999\年!99\月!99\日;1; ';
end;procedure TForm1.Table1BirthdayGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
DateFieldGetText(Sender,Text);
end;procedure TForm1.Table1BirthdaySetText(Sender: TField; const Text: String);
begin
if DateFieldSetText(Sender,Text)=False then
Abort;
//转换不成功,日期非法}
end;end.