Guest --Sergio -- Postado Março 18, 2008 Denunciar Share Postado Março 18, 2008 Ola amigos, preciso de uma pequena ajuda. como faço paracolocar o nome de um componente em uma variável e depois fazer referência à esse componente utilizando avariável Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Vivendo&Aprendendo Postado Março 18, 2008 Denunciar Share Postado Março 18, 2008 Para utilizar o nome do componente basta indicar para a variável...Variavel := Componente.name;Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 18, 2008 Denunciar Share Postado Março 18, 2008 (...) e depois fazer referência à esse componente utilizando a variávelVivendo&Aprendendo, ficou faltando explicar esta parte. ;)Sergio, feito o que o colega sugeriu você acessa o componente (em um form) pelo nome utilizando o método FindComponent do form em questão e atribuí-lo a uma variável do tipo TComponent - para facilitar seu manuseio; Vamos a um exemplo:1) em algum momento você guardou o nome do componente (conf. outro post) em uma variável chamda NomBotao (string);2) usando esta variável, utiliza FindComponent para acessar o componente:var Componente :TComponent; begin Componente := FindComponent(NomBotao); // receberá o endereço do componente se existir if Assigned(Componente) then // testamos se o componente foi encontrado begin // sabendo que ele é um botão (TButton), vamos fazer um type-cast // para manipular uma de suas propriedades TButton(Componente).Caption := 'Novo caption do botão'; end; end;a idéia é por aí. Detalhes, dependem da aplicação que você irá implementar.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Sérgio -- Postado Março 20, 2008 Denunciar Share Postado Março 20, 2008 (editado) Ola amigo, implementei o código como você meensinou, mas não deu certoO Código abaixo funciona normalprocedure TForm1.SpeedButton9Click(Sender: TObject); begin DataModule2.ZQueryClientes. next; end; Mas da forma como você falou: procedure TForm1.SpeedButton9Click(Sender: TObject); var tabela :TComponent; begin tabela := findcomponent('ZQueryClientes'); ou tabela := findcomponent('DataModule2.ZQueryClientes'); If assigned(tabela) then Begin TZQuery(tabela).Next; end; end;O "if" não é executado e seu tiro o "if" da a seguinte mensagemna execução embora na compilação não apresente nada.Project teste.exe raised exception class EaccessViolation withmessage 'Access Violation at address' bla bla bla... Editado Março 20, 2008 por Micheus Incluída tag's CODE para melhorar a visualização, bem como identado o código. Utilize a identação também ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 20, 2008 Denunciar Share Postado Março 20, 2008 amigo, implementei o código como você meensinou, mas não deu certonão fez não. Observe o que eu escrevi: "Sergio, feito o que o colega sugeriu você acessa o componente (em um form) pelo nome utilizando o método FindComponent do form em questão (...)"Veja que o componente não está em um form, é verdade, mas está no datamodule. Logo, é neste que você dever procurar pelo componente, também usando o mesmo procedimento.procedure TForm1.SpeedButton9Click(Sender: TObject); var tabela :TComponent; begin tabela := DataModule2.FindComponent('ZQueryClientes'); If assigned(tabela) then Begin TZQuery(tabela).Next; end; end;e seu tiro o "if" da a seguinte mensagemna execução embora na compilação não apresente nada.Project teste.exe raised exception class EaccessViolation withmessage 'Access Violation at address' bla bla bla...o que é lógico, já que a variável está nula, ou seja, é NIL!Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Sérgio -- Postado Março 21, 2008 Denunciar Share Postado Março 21, 2008 Vocês são ótimos! Funcionou! Espero sempre contarcom vocês e um dia, se puder, colaborar também.Um grande abraço e feliz pascoa. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest --Sergio --
Ola amigos, preciso de uma pequena ajuda. como faço para
colocar o nome de um componente em uma variável e
depois fazer referência à esse componente utilizando a
variável
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.