Herdando a classe TStringField

02/02/2021

0

Codifiquei uma classe descendente de TStringField onde modifico o método GetAsAnsiString para resultar em dados anônimos.
Porém, meu código é usado apenas quando declaro campos persistentes no Editor de Campos do TOraQuery. Se eu não declarar os campos persistentes, minha implementação não é utilizada.

Preciso que o comportamento seja o mesmo, independente do TOraQuery ter campos persistentes ou não.
Alguém poderia me ajudar por favor?

unit AnonymousFields;

interface

uses  DB, Sysutils, Classes;

type

  TStringField = class(DB.TStringField)
  public
    //function GetValue(var Value: AnsiString): Boolean;
    function GetAsAnsiString: AnsiString; override;
  end;

  TWideStringField = class(TStringField)
  public
    //function GetValue(var Value: AnsiString): Boolean;
    function GetAsString: string; override;
    function GetAsAnsiString: AnsiString; override;
    function GetAsWideString: UnicodeString; override;
  end;

  TDateTimeField = class(DB.TDateTimeField)
  public
    function GetAsString: string; override;
    function GetAsDateTime: TDateTime; override;
    procedure GetText(var Text: string; DisplayText: Boolean); override;
  end;

implementation



{ TStringField }

function TStringField.GetAsAnsiString: AnsiString;
begin
  inherited;
  Result := '$$$$$$$$$$';
end;

{ TWideStringField }

function TWideStringField.GetAsAnsiString: AnsiString;
begin
  inherited;
  Result := '##########';
end;

function TWideStringField.GetAsString: string;
begin
  inherited;
  Result := '##########';
end;

function TWideStringField.GetAsWideString: UnicodeString;
begin
  inherited;
  Result := '##########';
end;

{ TDateTimeField }

function TDateTimeField.GetAsDateTime: TDateTime;
begin
  inherited;
  Result := 0;
end;

function TDateTimeField.GetAsString: string;
begin
  inherited;
  Result := '**********';
end;

procedure TDateTimeField.GetText(var Text: string; DisplayText: Boolean);
begin
  inherited;
  text := '**/**/****';
end;

end.
Mauro Pereira

Mauro Pereira

Responder

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

Aceitar