Como fazer uma classe ESPECIAL no Delphi 2005?

29/11/2005

Olá, Senhores. Está é pra ferrar. Então, por favor, que a ler encaminhe para os ´doutores da lei´.

Usando o Delphi 2005, quero uma classe que controle a conexão com o banco de dados e seja pública a ponto de ser usada nas propriedades dos componentes de dados da BDP...
type
  TBDados = class(System.ComponentModel.Component)
  {$REGION ´Designer Managed Code´}
  strict private
    /// <summary>
    /// Required designer variable.
    /// </summary>
    Components: System.ComponentModel.Container;

    _Conn: Borland.Data.Provider.BdpConnection;
    spc_VerifyUser: Borland.Data.Provider.BdpCommand;
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    procedure InitializeComponent;
  {$ENDREGION}
  strict protected
    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    procedure Dispose(Disposing: Boolean); override;

  strict private
    FUserID: Integer;
    FUserName: String;
    FUserKey: String;
    FUserGrants: String;


  public

    function  get_Conn: Borland.Data.Provider.BdpConnection;
    function  get_UserID: Integer;
    procedure set_UserID(const Value: Integer);
    function  get_UserName: String;
    procedure set_UserName(const Value: String);
    function  get_UserKey: String;
    procedure set_UserKey(const Value: String);
    function  get_UserGrants: String;
    procedure set_UserGrants(const Value: String);

    constructor Create; overload;
    constructor Create(Container: System.ComponentModel.IContainer); overload;

    function  VerifyUser(User, Key: String; SetUser: Boolean): Integer;
    procedure ClearUser;

    property Conn: Borland.Data.Provider.BdpConnection read get_Conn;

    property UserID: Integer read get_UserID write set_UserID;
    property UserName: String read get_UserName write set_UserName;
    property UserKey: String read get_UserKey write set_UserKey;
    property UserGrants: String read get_UserGrants write set_UserGrants;
  end;

  function BDados: TBDados;

var
  BD: TBDados;


Notem que eu deixei uma variável e uma função que deveriam ser de visão pública. Quando uso em código elas estão a disposição...
   [color=blue:3f785ab156][b:3f785ab156]tbUsers.SelectCommand.Connection := BD.Conn;[/b:3f785ab156][/color:3f785ab156]
... por exemplo.
Mas eu preciso que as propriedades dos componentes vejam esta variável ou objeto para ser atribuído já no Object-Inspector, tal como outro componente BdpConnection qualquer.

A outra saída seria criar componentes que fornecessem dados diretos aos componentes de tela (tal como um TextBox e suas propriedades DataBind).

Por favor, é uma emergência!!!
Os próprios editores da revista poderiam consultar o pessoal envolvido com a Borland, visto que está questão é 100¬ de interesse OOP !!!
Sei que isso é possível porque vi fazerem no VisualStudio (aliás, os DataBinds já estavam presente no VB6... imaginem). Estou lutando conta uma ´gang´ que tenta fazer nossos patrões imporem o VB como linguagem em um novo projeto. REPITO: É UMA EMERGÊNCIA.


Apreensivo e esperançoso...

Coração Abalado (her... :roll:)
quero dizer:

Ricardo Ildefonso.


Ildefonso