Fórum StringList em um componente (Erro Access Violation) #268550

15/02/2005

0

Galera,

Estou desenvolvendo um componente e ele precisa ter uma propriedade Values: TStringList, publicada no Object Inspector. Estou criando assim:

TNovaClasse = class(TComponent)
private
FValues: TStringList;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Values: TStringList read FValues write FValues;

implementation

constructor Create(AOwner: TComponent); override;
begin
FValues := TStringList.Create;
end;

destructor Destroy; override;
begin
FValues.Free;
end;

Ou seja, até onde sei, estou instanciando corretamente. Só que, quando vou configurar a lista de strings (abro o String List Editor clicando no botão de reticencias da propriedade, no Object Inspector), da primeira vez tudo ocorre bem, mas quando eu vou abrir novamente, começa a dar Access Violation, e o Delphi fica doidão.

O que estou fazendo de errado?

Grato a todos,
Buosi.


Buosinet

Buosinet

Responder

Posts

15/02/2005

Beppe

Ao adicionar uma propriedade, do tipo Objeto, e que você deseja ter o ´ownership´, você precisa de um método set.

private
  procedure SetValues(const NewValue: TStringList);
...
published 
  property Values: TStringList read FValues write SetValues; 

procedure TNovaClasse.SetValues(const NewValue: TStringList);
begin
  if FValues <> NewValue then
    FValues.Assign(NewValue);
end;



Responder

Gostei + 0

15/02/2005

Buosinet

Funcionou!!!

Muito obrigado pela força.

Buosi.


Responder

Gostei + 0

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

Aceitar