请问:DBEdit可设置输入格式吗?譬如设置输入日期型的数据YYYY-MM-DD。

解决方案 »

  1.   

    设置EDITMASK属性就可以了..就是不太好看
      

  2.   

    首先你得用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;
    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