请教普通的Edit输入框能加掩码吗?

bcghb 2003-08-04 09:34:05
请教在控制普通的Edit输入框输入数据时能加掩码吗?
...全文
34 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyj122 2003-08-04
  • 打赏
  • 举报
回复
up
gmkb 2003-08-04
  • 打赏
  • 举报
回复
还不如找个控件简单得多,如果你是关于数据库方面开发的,Ehlib和dx等于控件包都有MaskEdit,很方便的。
bcghb 2003-08-04
  • 打赏
  • 举报
回复
在EDIT的KEYPRESS事件中写
if not (key in ['0'..'9',#8]) then
begin
if (key='.') and (pos('.',Tedit(sender).Text)=0) then exit;
key:=#0;
Messagebeep(0);
end;
这是输入格式的控制吧,不能输入其它字符,999,999.99如何做呢?
bcghb 2003-08-04
  • 打赏
  • 举报
回复
Edit2.Text := FormatDateTime('yyyy-mm-dd',Date);
不对,只是加了一个默认值,而我要的是掩码啊,哈哈
bcghb 2003-08-04
  • 打赏
  • 举报
回复
日期型的可以这样写
Edit2.Text := FormatDateTime('yyyy-mm-dd',Date);
数值型的呢?999,999.99?
Spqk005 2003-08-04
  • 打赏
  • 举报
回复
这是加数字且代可有一个小数点掩码的代码,
在EDIT的KEYPRESS事件中写
if not (key in ['0'..'9',#8]) then
begin
if (key='.') and (pos('.',Tedit(sender).Text)=0) then exit;
key:=#0;
Messagebeep(0);
end;
江山易改 2003-08-04
  • 打赏
  • 举报
回复
一个时间输入算法
unit UnitTime;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TFormTime = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit1Exit(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
IsTime1, IsTime2 : string ;
public
{ Public declarations }
end;

var
FormTime: TFormTime;

implementation
uses UniBank;
{$R *.dfm}

procedure TFormTime.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9','-',#8]) then
begin
Key:=#0;
exit ;
end ;
if ((Tedit(Sender).SelStart in [4,7]) or (Tedit(Sender).SelStart >9))
and (Key in ['0'..'9']) then
begin
key := #0;
exit ;
end ;
if (not ( Tedit(Sender).SelStart in [4,7])) and (key ='-') then
begin
Key :=#0 ;
exit ;
end ;
if (Tedit(Sender).SelStart in [4,7]) and (key='-') and
(Copy(Tedit(Sender).Text,Tedit(Sender).SelStart,1) ='-') then
begin
Key :=#0 ;
exit ;
end ;
if (Key =#8) and
(Copy(Tedit(Sender).Text,Tedit(Sender).SelStart,1) ='-') and
(Copy(Tedit(Sender).Text,Tedit(Sender).SelStart+1,1) <>'')
then
Key :=#0 ;
end;

procedure TFormTime.Edit1Exit(Sender: TObject);
var ds :TDateTime ;
begin
try
ds:=StrToDate(TEdit(Sender).Text);
TEdit(Sender).Text :=FormatDateTime('yyyy-mm-dd',ds);
if TEdit(Sender).Name = 'Edit1' then
IsTime1:='Edit1'
else
IsTime1:='Edit2';
except
TEdit(Sender).Text :=FormatDateTime('yyyy-mm-dd',date);
if TEdit(Sender).Name = 'Edit1' then
IsTime1:=''
else
IsTime1:='';
Application.MessageBox('日期格式输入不正确,正确日期格式为2004-01-01','提示',0) ;
TEdit(Sender).SetFocus ;
end ;

end;

procedure TFormTime.FormShow(Sender: TObject);
begin
IsTime1:='';
IsTime2:='' ;
end;

procedure TFormTime.Button1Click(Sender: TObject);
begin
if (Trim(Edit1.Text)<>'') and (Trim(Edit2.Text)<>'') then
begin
Edit1Exit(Edit1);
Edit1Exit(Edit2);
if (Trim(IsTime1)<>'') and (Trim(IsTime1)<>'') then
begin
StaDate := Edit1.Text ;
EndDate := Edit2.Text ;
Close ;
end ;
end
else
begin
Application.MessageBox('请输入开始时间及结束时间','提示',0);
end ;
end;

procedure TFormTime.Button2Click(Sender: TObject);
begin
Close ;
end;

procedure TFormTime.FormCreate(Sender: TObject);
begin
Edit2.Text := FormatDateTime('yyyy-mm-dd',Date);
Edit1.Text := FormatDateTime('yyyy-mm-dd',incmonth(Date,-1));
end;

end.
江山易改 2003-08-04
  • 打赏
  • 举报
回复
什么是掩码?
bcghb 2003-08-04
  • 打赏
  • 举报
回复
比如:日期型用9999-99-99
数值型用999,999.99
jsandy(江苏安迪) 先谢谢了
jsandy 2003-08-04
  • 打赏
  • 举报
回复
得自己写了啊,你需要什么样的?我帮你写写看.
dickeybird888 2003-08-04
  • 打赏
  • 举报
回复
根本就不能
bcghb 2003-08-04
  • 打赏
  • 举报
回复
是掩码,不是PasswordChar!
WWWWA(aaaa) 能写一下吗!?
WWWWA 2003-08-04
  • 打赏
  • 举报
回复
可以
CDSoftwareWj 2003-08-04
  • 打赏
  • 举报
回复
PasswordChat ??

5,388

社区成员

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

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