Ir para conteúdo
  • Cadastre-se

dev botao

Criar propriedade de objeto


Ver Solução Respondido por Daniel Paixão-Cascavel,
  • Este tópico foi criado há 4460 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde, pessoal entendo que na POO quando eu crio uma propriedade que tem como tipo um objeto, quando eu for utiliza-lo eu terei de criar um novo objeto daquele para poder utilizar ex:


unit Unit2;


interface


type

  TItem = class

    private

      FNome : string;

    public

      property Nome : string read FNome write FNome;

  end;


type

  TPedido = class

    private

      FItem : TItem;

    public

      property Item : TItem read FItem write FItem;


      constructor Create;

  end;


implementation


{ TPedido }


constructor TPedido.Create;

begin

  Item                                          :=  Item.Create;


end.
entao comeco a utilizalo:

procedure teste;

  var

    Pedido : TPedido;

    Item : TItem;

begin

  Pedido                                        :=  TPedido.Create;


  {FAZENDO ISSO RETORNA ERRO}

  Pedido.Item.Nome                              :=  'ABC';


  Item                                          :=  TItem.Create;


  Item.Nome                                     :=  'ABC';


  {fazendo isso não da erro}

  Pedido.Item                                   :=  Item;

end;

Então gostaria de saber se é possivel ou não passar valores diretamente para a propriedade Item do Pedido sem ter que criar um objeto do tipo Item e depois passar esse objeto para a propriedade do pedido!

  • 3 semanas depois ...
  • Solution
Postado

Crie sua classe assim:

unit Unit2;


interface


type

  TItem = class

    private

      FNome : string;

    public

      property Nome : string read FNome write FNome;

  end;


type

  TPedido = class

    private

      FItem : TItem;

      function GetItem:TItem;

    public

      property Item : TItem read GetItem write FItem;


      destructor Destroy;override;

  end;


implementation


function TPedido.GetItem:TItem;

begin

   if (Not Assigned(FItem)) then

      FItem := TItem.Create;

end;


destructor Destroy;

begin

   if (Assigned(FItem)) then

      FreeAndNil(FItem);

end;


end.
Depois use assim:

procedure teste;

  var

    Pedido : TPedido;

begin

  Pedido                                        :=  TPedido.Create;


  {FAZENDO ISSO RETORNA ERRO}

  Pedido.Item.Nome                              :=  'ABC';

end;

Sistemas para toda área Goumert, pequeno varejo e baladas.

www.controleautomacao.com.br

  • Este tópico foi criado há 4460 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...