PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Nono dígito #478858

13/05/2014

0

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

Walison Magalhães

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar