Diretiva $DEFINE não processada em modo local

Delphi

05/07/2016

Saudações galera

Estou com problema relacionado a diretiva {$DEFINE}.

Tenho uma classe que controla comandos SQL e eu defini abaixo do type uma diretiva {$DEFINE MODOSQL} e ao final o {$UNDEF MODOSQL}, como no código a seguir:

unit ControlaSQL;

interface

type
{$DEFINE MODOSQL}

  TControleSQL = class
  public
    class function GetValores(pValor: string): string;
  end;

implementation

{ TControleSQL }

class function TControleSQL.GetValores(pValor: string): string;
begin
  Result := pValor;
end;

{$UNDEF MODOSQL}

end.


E tenho uma classe TClientes da seguinte estrutura:

TClientes = class
  public const
    cCodigo = {$IFDEF MODOSQL} 'CLIENTE.CL_CODIGO' {$ELSE} 'CL_CODIGO' {$ENDIF};
    cNome   = {$IFDEF MODOSQL} 'CLIENTE.CL_NOME'   {$ELSE} 'CL_NOME'   {$ENDIF};
  private
    FCodigo: Integer;
    FNome  : string;
    procedure SetCodigo(const Value: Integer);
    procedure SetNome(const Value: string);
  public
    property Codigo: Integer read FCodigo write SetCodigo;
    property Nome  : string  read FNome   write SetNome;
  end;


Porque se chamar um ShowMessage(TControleSQL.GetValores(TClientes.cCodigo)), vai apresentar CL_CODIGO e não CLIENTE.CL_CODIGO, sendo que a diretiva está definida dentro da classe TControleSQL e a função está no intervalo desta definição?
Já dei Build no projeto, limpei e recompilei e nada deu certo.
Eu só consigo apresentar CLIENTE.CL_CODIGO se eu declarar em modo global: Options>Delphi Compiler> Conditional defines, mas eu preciso que seja apenas quando for chamada pela classe e função TControleSQL.GetValores.

Galera eu tinha pensado nesta forma para capturar os valores ora Campo ora Tabela.Campo. Caso tenha alguma outra sugestão será muito bem vinda.

Desde já, obrigado.
Celismar Pereira

Celismar Pereira

Curtidas 1
POSTAR