Nono dígito
unit Mascaras;
interface
uses
IBCustomDataSet, Vcl.DBCtrls, Data.DB, System.SysUtils, System.MaskUtils;
type
TDBEdit = class(Vcl.DBCtrls.TDBEdit)
protected
procedure DoEnter; override;
procedure DoExit; override;
end;
implementation
procedure VerificaMascaraEnter(Sender: TObject);
var
zText: String;
begin
if (Sender is TDBEdit) and
(TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask = '(99) 9999-9999') then
begin
zText := TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName).AsString;
zText := StringReplace(zText, '(', '', [rfReplaceAll]);
zText := StringReplace(zText, ')', '', [rfReplaceAll]);
zText := StringReplace(zText, '-', '', [rfReplaceAll]);
zText := StringReplace(zText, ' ', '', [rfReplaceAll]);
zText := FormatMaskText('\(99\) 9999\-99999;0;', zText);
TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask := '';
TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask := '(99) 9999-99999';
TIBDataSet(TDBEdit(Sender).DataSource.DataSet).FieldByName(TDBEdit(Sender).Field.FieldName).AsString := zText;
end;
end;
procedure VerificaMascaraExit(Sender: TObject);
var
zText: String;
begin
if (Sender is TDBEdit) and
((TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask = '(99) 9999-99999') or
(TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask = '(99) 99999-9999') or
(TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask = '(99) 9999-9999')) then
begin
zText := TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName).AsString;
zText := StringReplace(zText, '(', '', [rfReplaceAll]);
zText := StringReplace(zText, ')', '', [rfReplaceAll]);
zText := StringReplace(zText, '-', '', [rfReplaceAll]);
zText := StringReplace(zText, ' ', '', [rfReplaceAll]);
if (Length(zText) > 10) and
(TDBEdit(Sender).DataSource.DataSet.State in [dsInsert, dsEdit]) then
begin
zText := FormatMaskText('\(99\) 99999\-9999;0;', zText);
TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask := '';
TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask := '(99) 99999-9999';
TIBDataSet(TDBEdit(Sender).DataSource.DataSet).FieldByName(TDBEdit(Sender).Field.FieldName).AsString := zText;
end
else if Length(zText) = 10 then
begin
zText := FormatMaskText('\(99\) 9999\-9999;0;', zText);
TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask := '';
TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask := '(99) 9999-9999';
TIBDataSet(TDBEdit(Sender).DataSource.DataSet).FieldByName(TDBEdit(Sender).Field.FieldName).AsString := zText;
end
else
begin
zText := FormatMaskText('\(99\) 9999\-99999;0;', zText);
TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask := '';
TIBStringField(TDBEdit(Sender).DataSource.DataSet.FieldByName(TDBEdit(Sender).Field.FieldName)).EditMask := '(99) 9999-99999';
TIBDataSet(TDBEdit(Sender).DataSource.DataSet).FieldByName(TDBEdit(Sender).Field.FieldName).AsString := zText;
end;
end;
end;
{ TDBEdit }
procedure TDBEdit.DoEnter;
begin
inherited;
VerificaMascaraEnter(Self);
end;
procedure TDBEdit.DoExit;
begin
inherited;
VerificaMascaraExit(Self);
end;
end.
Walison Magalhães
Curtidas 0