DBEdit可设置输入格式吗? 请问:DBEdit可设置输入格式吗?譬如设置输入日期型的数据YYYY-MM-DD。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 设置EDITMASK属性就可以了..就是不太好看 首先你得用TMaskEdit代替TDbedit组件 此组件的EditMask属性可完成任务我不知道你的具体情况,所以只能写一个通用的示例,具体情况可能要改变一些如 getmask 的返回参数原理: 用DBGrid,edit或许能实现,但有更好的maskedit组件能帮你解决问题; 1 把数据读入到maskedit中,并设置好相应的的editmask属性,这是重点 2 保存maskedit的text到数据库中,要注意加上一个临时变量,否则可能无法保存具体实现 这里我假设有一个表的第一个字段为编号类型为字符型,需要的宽度为6位,而前两位不能编辑,而其他4位可以编辑加上一个database组件,指向你的数据库,一个table组件,指向你的表,一个datasource,一个EditMask,一个Button名为save,一个DBGRID(为了让你看到效果)下面是全部代码-------------------------------------------------------------------------------unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DB, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids;type TForm1 = class(TForm) DataSource1: TDataSource; DBGrid1: TDBGrid; Database1: TDatabase; Table1: TTable; MaskEdit1: TMaskEdit; saveBtn: TButton; procedure DataSource1DataChange(Sender: TObject; Field: TField); procedure saveBtnClick(Sender: TObject); private { Private declarations } public function getmask(maskstr:string):string; { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm} //getmask函数是取格式,具体的情况你可以修改result的返回值.function TForm1.getmask(maskstr: string): string;beginresult:='\'+maskstr[1]+'\'+maskstr[2]+'cccc;1;_';end;//数据源的事件中更改editmask的maskedit属性和tex属性的值//让maskedit能正常显示数据,并产生不可修改的位procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);beginmaskedit1.EditMask:=getmask(table1.Fields[0].AsString);maskedit1.Text:=table1.Fields[0].AsString;end;//由于editmask并非数据感知组件,你得用下面过程保存数据//注意temp的用法;procedure TForm1.saveBtnClick(Sender: TObject);var temp:string;begintemp:=maskedit1.Text;table1.Edit;table1.Fields[0].AsString:=temp;table1.Post;end;end.------------------------------------------------------具体的实现你得了解editmask属性,如果不熟,请参考Help 请教:多用户状态下,主从表输入数据的问题. MDI问题 求一sql语句,谢谢 jpg图片处理,可缩放,点某个位置后出现一个矩形框,并将这个框里的图复制到屏幕另外的地方,如有源代码者单独给100分 谁有IdTCPClient和IdTCPServer进行两台机器通讯的例程啊 迷茫 我用IIS5.0建站,为什么不能浏览.dll文件,是用delphi做的dll。 如何得到打印机的详细设置? 自定义弹出系统菜单的问题 有关COM组件的接口问题,高手请问题 进来便得分(在线等) *散分100!* 专为Delphi搞的Blog 今天开张,http://www.delphicn.com 欢迎前去安家!
此组件的EditMask属性可完成任务我不知道你的具体情况,所以只能写一个通用的示例,具体情况可能要改变一些
如 getmask 的返回参数
原理:
用DBGrid,edit或许能实现,但有更好的maskedit组件能帮你解决问题;
1 把数据读入到maskedit中,并设置好相应的的editmask属性,这是重点
2 保存maskedit的text到数据库中,要注意加上一个临时变量,否则可能无法保存
具体实现
这里我假设有一个表的第一个字段为编号类型为字符型,需要的宽度为6位,而前两位不能编辑,而其他4位可以编辑
加上一个database组件,指向你的数据库,一个table组件,指向你的表,一个datasource,一个EditMask,一个Button名为save,一个DBGRID(为了让你看到效果)
下面是全部代码
-------------------------------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, DB, DBTables, ExtCtrls, DBCtrls, Grids, DBGrids;type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Database1: TDatabase;
Table1: TTable;
MaskEdit1: TMaskEdit;
saveBtn: TButton;
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure saveBtnClick(Sender: TObject);
private
{ Private declarations }
public
function getmask(maskstr:string):string;
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
//getmask函数是取格式,具体的情况你可以修改result的返回值.
function TForm1.getmask(maskstr: string): string;
begin
result:='\'+maskstr[1]+'\'+maskstr[2]+'cccc;1;_';
end;
//数据源的事件中更改editmask的maskedit属性和tex属性的值
//让maskedit能正常显示数据,并产生不可修改的位
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
maskedit1.EditMask:=getmask(table1.Fields[0].AsString);
maskedit1.Text:=table1.Fields[0].AsString;
end;
//由于editmask并非数据感知组件,你得用下面过程保存数据
//注意temp的用法;
procedure TForm1.saveBtnClick(Sender: TObject);
var temp:string;
begin
temp:=maskedit1.Text;
table1.Edit;
table1.Fields[0].AsString:=temp;
table1.Post;
end;end.
------------------------------------------------------
具体的实现你得了解editmask属性,如果不熟,请参考Help