unit
EditLetNum;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TEditLetNum =
Class
(TEdit)
private
FClear:TNotifyEvent;
FEnableNum:
boolean
;
FenableLet:
boolean
;
FModified:
boolean
;
protected
procedure
SetEnableNum(Value:
boolean
);
procedure
SetEnableLet(Value:
boolean
);
procedure
KeyPress(
var
Key:
Char
);override;
public
property
Modified:
boolean
read FModified default
true
;
constructor
create(AOwner:TComponent);override;
procedure
Clear;override;
published
property
OnClear:TNotifyEvent read FClear
write
FClear;
property
EnableNum:
boolean
read FEnableNum
write
SetEnableNum default
true
;
property
EnableLet:
boolean
read FEnableLet
write
SetEnableLet default
true
;
end
;
procedure
Register;
implementation
procedure
TEditLetNum
.
SetEnableNum(Value:
boolean
);
begin
FEnableNum:=Value;
if
(
not
Value)
then
if
(
not
FEnableLet)
then
FEnableLet:=
true
;
end
;
procedure
TEditLetNum
.
SetEnableLet(Value:
boolean
);
begin
FEnableLet :=Value;
if
(
not
Value)
then
if
(
not
FEnableNum)
then
FEnableNum:=
true
;
end
;
procedure
Register;
begin
RegisterComponents(
'MyComponents'
,[TEditLetNum]);
end
;
constructor
TEditLetNum
.
create(AOwner:TComponent);
begin
inherited
create(AOwner);
FEnableNum:=
True
;
FenableLet:=
True
;
FModified:=
False
;
end
;
procedure
TEditLetNum
.
KeyPress(
var
Key:
Char
);
begin
if
(
not
FEnableNum)
and
(Key
in
[
'0'
..
'9'
])
then
Key:=#
0
;
if
(
not
FenableLet)
and
not
(Key
in
[
'0'
..
'9'
])
then
Key:=#
0
;
if
(Key<>#
0
)
then
FModified:=
true
;
inherited
KeyPress(Key);
end
;
procedure
TEditLetNum
.
Clear;
begin
if
assigned(FClear)
then
OnClear(Self);
inherited
Clear;
FModified:=
false
;
end
;
end
.