Ajuda para criar componente

Delphi

12/12/2007

Boa tarde...
estou criando um componente e tudo esta funcionando, ele é criado quando eu clico no botao sem problema nenhum...

mas eu gostaria que ele fosse criado antes mesmo do form ser inicializado, ou seja, ele precisa ser criado quando a aplicacao esta sendo inicializada...

eu até consigo fazer o evento create do componente executar, mas quando ele chega no atributo self, ele aparece um erro de memoria...

alguem sabe uma solucao para isso??

faloo valeu


Jonn

Jonn

Curtidas 0

Respostas

Giordanocwb

Giordanocwb

12/12/2007

Coloque, por favor, a parte de código da criação do componente para que a gente possa analisar!

T+


GOSTEI 0
Jonn

Jonn

12/12/2007

procedure TBarraGrafico.Componentes(Owen:TComponent);
var Icon:TIcon;
begin

  FEditorChart:=TChartEditor.Create(FEditorChart);

  ListaDeImagem:=TImageList.Create(ListaDeImagem);

  Icon:=TIcon.Create;
  Icon.LoadFromFile(´C:\Documents and Settings\user\Desktop\Trabalhos - Delphi\BarraGrafico\Icone.ico´);
  ListaDeImagem.AddIcon(Icon);

  Self.Images:=ListaDeImagem;
  Self.ShowCaptions:=false;

  FGerenciadorAcao:=TActionManager.Create(FGerenciadorAcao);
  FGerenciadorAcao.Images:=ListaDeImagem;

  AcaoEdit:=TAction.Create(AcaoEdit);
  AcaoEdit.OnExecute:=EditGrafico;
  AcaoEdit.ImageIndex:=0;
  AcaoEdit.Caption:=´Teste´;
  FGerenciadorAcao.AddAction(AcaoEdit,nil,true);

  FBotaoExemplo:=TToolButton.Create(FBotaoExemplo);
  FBotaoExemplo.Style:=tbsButton;
  FBotaoExemplo.Action:=AcaoEdit;
  FBotaoExemplo.Width:=25;
  FBotaoExemplo.Height:=25;
  FBotaoExemplo.Parent:=Self;

end;


esse é o codigo q cria o componente depois q clico no botao e funciona perfeitamente

  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;


e esse é o codigo q inicia a aplicacao e q chama o evento create, mas da erro...

faloo valeu!!


GOSTEI 0
Giordanocwb

Giordanocwb

12/12/2007

Veja bem, o Self é um parâmetro implícito que temos nas procedures ou functions de uma classe. Ele representa a instância do objeto que estamos tentando referenciar.

No seu caso, naquela linha Self, ele está tentando acessar um objeto do tipo TBarraGrafico.

Verique se isso procede ok!!!

Self, nem sempre é o formulário!!! Imagino que você esteja se confundindo com isso.

T+


GOSTEI 0
Jonn

Jonn

12/12/2007

Exatamente o self ta se referenciando ao TBarraGrafico, mas o problema é q ele ainda nao foi criado e dai ele da aparesenta um erro sempre que chega no self...

o que eu gostaria de saber é se tem uma forma de fazer referencia ao componente antes mesmo dele se criado, ou entao, cria-lo antes para nao dar erro com o self...

falo valeu!!!


GOSTEI 0
Giordanocwb

Giordanocwb

12/12/2007

Seguinte, se ele não foi criado ainda, ele não pode chamar Self.

Como que você chama a procedure Componentes do TBarraGrafico?? Para fazer a chamada a ela você tem que ter o objeto criado, concorda comigo??

T+


GOSTEI 0
Jonn

Jonn

12/12/2007

Certo... eu faço a chamada da procedure Componentes pela function create do proprio componente...

mas entao nao tem como criar um componente ao mesmo tempo q é criado a aplicacao??


GOSTEI 0
POSTAR