Fórum Dúvida criação componente #338943
19/03/2007
0
mas quando crio do tipo TEdit ele me dá um erro na destruição do componente. obs ele cria e mostra corretamente o que tem que mostrar, mas quando fecha o aplicativo ele me dá um erro de acess violation.
if fParametros.TipoComponente = T_Label then
begin
if fLbDados = nil then
fLbDados:= Tlabel.Create(self);
TLabel(fLbDados).parent := self.parent;
TLabel(fLbDados).AutoSize := fParametros.AutoSizeLabel;
wtop := self.top + (self.Height div 3);
TLabel(fLbDados).SetBounds(40,12,100,21);
Tlabel(fLbDados).Font.Style := [fsBold];
TLabel(fLbDados).Transparent := true;
TLabel(fLbDados).Caption := prValor;
end
else
begin
if fLbDados = nil then
fLbDados:= TEdit.Create(self);
TEdit(fLbDados).parent := self.parent;
TEdit(fLbDados).AutoSize := fParametros.AutoSizeLabel;
TEdit(fLbDados).Height := height;
wtop := self.top;
TEdit(fLbDados).SetBounds(40,12,100,21);
TEdit(fLbDados).ReadOnly := true;
TEdit(fLbDados).text := prValor;
end
Acacio
Curtir tópico
+ 0Posts
19/03/2007
Michelli88
Tente destruir tudo que vc criar na mão no Destroy.
Veja um exemplo:
constructor TNovoComponente.Create(AOwner: TComponent); begin inherited Create(AOwner); FCanvas := TCanvas.Create; end; //------------------------------------------------------------------------------ destructor TNovoComponente.Destroy; begin inherited Destroy; FCanvas.Free; end; //------------------------------------------------------------------------------
Boa Sorte!! :roll:
Gostei + 0
20/03/2007
Acacio
Bom no componente tenho um outro componente sendo criado do tipo TControl que ora ele é criado do tipo TEdit ora do Tipo TLabel, ele funciona certo ao ser criado, mostra certo o problema é quando fecho o form e ele entra no destroy do componente. Se ele foi criado do tipo TLabel funciona corretamente e não dá erro,mas se for do tipo TEdit ele dá um erro pois a sua propriedade ´parent´ já é nil e quando dou um free nele ele me dá um erro de acess violation.
Obs ele é criado o parent deste componente é o mesmo do componente inicial. Assim fCompAux.parent := self.parent, para poder mostrar este outro componente ao lado do primeiro edit; e não sendo filho dele.
Gostei + 0
21/03/2007
Michelli88
Bom, entao verifique se ele foi criado antes de dar um ´.Free´
:)
Gostei + 0
21/03/2007
Michelli88
Bom, entao verifique se ele foi criado antes de dar um ´.Free´
:)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)