Problema ao chamar método fora da sua classe
27/09/2004
0
Ta acontecendo um negócio estranho aki. Umas coisas meio inexplicáveis...
Eu criei um método que cria um botão no mdiform toda vez que é criado um mdi child. Até aí td bem, eu colocava uma chamada no oncreate dos mdichild e tava funcionando tudo perfeitamente: ao criar o formulário o botão aparecia na toolbar bonitinho...
Agora, sem motivo algum aparente, ela parou de funcionar... Quando eu chamo esse método para a criação do botão do form ao qual ele pertence, ele fuunciona perfeitamente agora quando eu chamo ele de outro form ele não funciona. Eu já reparei que o botão é até criado em memória, pois o uso de memória aumenta a cada chamada do método porém ele não aparece na toolbar.
Aí vai o método pra quem quiser dar uma olhada:
Por favor, peço ajuda e espero ter sido claro...
Muito obrigado
Wart
Posts
27/09/2004
Sandra
O problema não estaria relacionado com o local que a procedure está declarada? Se for, acredito que deveria ser criada no [b:85bfeec8f1]type public[/b:85bfeec8f1] e não no private.
Soluciona?
28/09/2004
Wart
Então, ta tudo declarado certinho, eu consigo visualizar o método de qualquer outro form desde que o Form3 esteja declarado na uses...
O problema é que o botão não aparece...
28/09/2004
Beppe
28/09/2004
Wart
Pois eh cara, tava funfando perfeito, so q agora não tá mais...
É exatamente da forma que você falou que deve funcionar e eu gostaria de saber um provável motivo para ela ter parado de funcionar...
28/09/2004
Rômulo Barros
begin
with TToolbutton.Create(Self) do
begin
[b:88dbbb31b8][color=red:88dbbb31b8]Owner := Toolbar1;[/color:88dbbb31b8] [/b:88dbbb31b8]
Parent := Toolbar1;
AutoSize := False;
Wrap := False;
Style := tbsButton;
Caption := texto;
ImageIndex := img;
AutoSize := True;
Onclick := clik;
Visible := True;
end;
ToolBar1.ShowCaptions := true;
end;
:?: [color=blue:88dbbb31b8][b:88dbbb31b8]Não seria isso?[/b:88dbbb31b8][/color:88dbbb31b8]
28/09/2004
Wart
Nem cara, pelo menos dessa forma não...
A propriedade Owner é somente leitura...
29/09/2004
Sandra
O código está complicado, hein?
Ocorreu-me uma idéia. Não sei se funcionaria, mas... tentativa por tentativa, experimente acrescentar o Application.ProcessMessages.
... Visible := True; end; ToolBar1.ShowCaptions := true; Application.ProcessMessages; // essa linha end;
procedure TForm3.CriaBotao(texto:string;img:integer;clik:TNotifyEvent); begin with TToolbutton.Create(Self) do begin Application.ProcessMessages; // aqui Parent := Toolbar1; ...
Veja o que acontece... :roll: e boa sorte!
29/09/2004
Wart
ja to entrando em parafuso... :wink:
plz, alguem me dá uma luz![/b]
29/09/2004
Marcelo Saviski
só p/ tirar a prova real, esperimente verificar no ToolBar1, o nº de botões que ha nele, depois de criar um.
ou talvez se vc trocar o Self do TToolbutton.Create(Self) pelo form principal.
29/09/2004
Wart
Ñão, além de só ter toolbar no form principal, todos os MDICHild criavam um botão quando o form era criado e agora nenhum cria mais... eu só consigo criar o botão se eu chamar o método de dentro do form assim:
CriaBotao(parametros);
ou assim
Self.CriaBotao(parametros);
Se eu chamar assim:
Form3.CriaBotao(parametros);
ele não funciona também...
A contagem por ButtonCount tá retornando zero...
Cabei de tenta e nada tb...
Hehe, será que ainda resta alguma esperança? :wink:
Clique aqui para fazer login e interagir na Comunidade :)