Publicar Propriedades de objetos privados da classe
Pessoal, estou criando uma classe que incorpora varios outros objetos do delphi. ex:
Até aí tudo bem, vou criando os procedimentos para manipular os objetos.
o problema é que eu preciso ´exteriorizar´ por exemplo a propriedade Request do HTTP, mas sem declarar a variável HTTP : TIDHTTP no public, para que o componente todo não fique liberado para uso fora da classe.
Sei que a declaração de propriedades usando variaveis internas funciona assim:
Tentei aplicar este mesmo conceito na variavel http, mas ele da um erro declarei desta maneira:
mas quando vou compilar o delphi me retorna o erro [i:57ca905958] [Pascal Error] Un_DBIWebConnector.pas(16): E2467 Record or object type required[/i:57ca905958]
alguém sabe como posso fazer para liberar essa propriedade de uma maneira mais simples? sem ter que criar procedimentos para atualização?
type TConnector = class private HTTP : TIdHTTP; Temp : TStrings; public constructor create destructor destroy; override; end;
Até aí tudo bem, vou criando os procedimentos para manipular os objetos.
o problema é que eu preciso ´exteriorizar´ por exemplo a propriedade Request do HTTP, mas sem declarar a variável HTTP : TIDHTTP no public, para que o componente todo não fique liberado para uso fora da classe.
Sei que a declaração de propriedades usando variaveis internas funciona assim:
type TConnector = class private HTTP : TIdHTTP; Temp : TStrings; ==> testeRequest : TIdHTTPRequest; public ==> Property Request : TIdHTTPRequest read testeRequest write testeRequest; constructor create destructor destroy; override; end;
Tentei aplicar este mesmo conceito na variavel http, mas ele da um erro declarei desta maneira:
type TConnector = class private HTTP : TIdHTTP; Temp : TStrings; public ==> property Request : TIdHTTPRequest read HTTP.Request write HTTP.Request; constructor create destructor destroy; override; end;
mas quando vou compilar o delphi me retorna o erro [i:57ca905958] [Pascal Error] Un_DBIWebConnector.pas(16): E2467 Record or object type required[/i:57ca905958]
alguém sabe como posso fazer para liberar essa propriedade de uma maneira mais simples? sem ter que criar procedimentos para atualização?
Prgdelphi
Curtidas 0
Respostas
Woinch
04/06/2009
type TConnector = class
private
HTTP : TIdHTTP;
Temp : TStrings;
procedure: SetRequest(Value: TIdHTTPRequest);
function GetRequest: TIdHTTPRequest;
public
Property Request : TIdHTTPRequest GetRequest write SetRequest;
constructor create
destructor destroy; override;
end;
{...}
procedure TConnector.SetRequest(Value: TIdHTTPRequest)
begin
HTTP.Request := Value;
end;
function TConnector.GetRequest: TIdHTTPRequest;
begin
Result := HTTP.Request;
end;Acho que é isso que você quer né?
PS: Não testei o código. Mas acho que vai funcionar.
Espero ter ajudado...
GOSTEI 0
Woinch
04/06/2009
*Faltou um read antes do GetRequest na Property.
GOSTEI 0
Prgdelphi
04/06/2009
Muito bom!!!
Funcionou perfeitamente. Aprendi mais uma.
Muito obrigado amigo.
Funcionou perfeitamente. Aprendi mais uma.
Muito obrigado amigo.
GOSTEI 0
Woinch
04/06/2009
Que bom que lhe foi util! ;)
GOSTEI 0