Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
Mosconi Novato

Registrado: Terça-Feira, 1 de Março de 2016 Mensagens: 12
|
Enviada: Seg Jul 23, 2018 12:22 pm Assunto: Replace arquivo pas |
|
|
Boa Tarde Galera;
Vê se vocês podem me dar uma força, tenho um componente hoje que percorre os componentes da unit em questão e troca o nome desses componentes com um padrão que usamos desta forma se for por exemplo um dbedit com nome campo ficaria DBE_CAMPO;
até aí tranquilo, o meu problema está no .pas, porque algumas telas antigas não tinha essa padronização então quando uso o componente ele acerta o nome dos componentes, porém existe métodos no meio do fonte que usa/ valida esses campos, sendo necessário trocar para o novo nome, pois fica no nome DBE_CAMPO e no fonte campo;
toda vez tenho que fazer um replace na mão, porém em alguns casos são muitos campos o que acaba levando muito tempo, gostaria de saber se vocês tem alguma sugestão quanto ao caso, minha necessidade é que ao alterar o nome dos componentes da unit, consiga de alguma forma dar um find na unit também e alterar quando encontrar este nome para o novo nome...
Desde já, Muito Obrigado. |
|
Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qua Jul 25, 2018 3:10 pm Assunto: |
|
|
e como vc faz esse replace na mao?
se o campo é dbedit1, e vc muda pra dbe_campo, nao da pra fazer um replace em todos da unit? _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
 |
Mosconi Novato

Registrado: Terça-Feira, 1 de Março de 2016 Mensagens: 12
|
Enviada: Qua Jul 25, 2018 3:56 pm Assunto: |
|
|
Boa Tarde!!
Então na verdade, hoje esse replace na mão seria o Ctrl+R no pas, trocando o dbedit1 pelo novo nome, se é um campo ou outro até vai mais geralmente telas mais antigas como cliente tem muitos campos o que dificulta esse tipo de manutenção;
Para ficar mais claro segue o código atual do componente onde trocamos pelo novo nome:
Código: |
totalcomponentes := Owner.ComponentCount - 1 ;
for indice := 0 to totalcomponentes do
begin
if (Owner.components[indice].ClassType = TDBEdit ) then
begin
if TDBEdit(Owner.components[indice]).DataField <> '' then
begin
nomecomponente := TDBEdit(Owner.components[indice]).Name;
try
TDBEdit(Owner.components[indice]).Name := 'DBE_'+ TDBEdit(Owner.components[indice]).DataField;
except
TDBEdit(Owner.components[indice]).Name := nomecomponente;
end;
end;
end
end;
|
Qual a ídeia, lembrando que eu não sei se é possível isto, antes de alterar o nome do componente (entre o try except), de alguma forma recuperar as referencias deste componente no pas e alterar para o novo nome, acho que a ideia tenha ficado mais claro agora... |
|
Voltar ao Topo |
|
 |
joemil Moderador

Registrado: Quinta-Feira, 25 de Março de 2004 Mensagens: 9100 Localização: Sinop-MT
|
Enviada: Qui Jul 26, 2018 9:48 am Assunto: |
|
|
mas vc ta fazendo isso em tempo de execucao?
pensei q vc tava trocando no .dfm e no .pas, pq eu altero o .dfm e o .pas fora do delphi _________________ <b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/ |
|
Voltar ao Topo |
|
 |
Mosconi Novato

Registrado: Terça-Feira, 1 de Março de 2016 Mensagens: 12
|
Enviada: Qui Jul 26, 2018 9:58 am Assunto: |
|
|
não em tempo de execução, de implementação, quando estou efetuando a manutenção eu jogo o componente na tela e ativo, aí ele roda essa rotina que altera os nomes;
alterar por fora do delphi? como assim? |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Qui Jul 26, 2018 11:36 pm Assunto: |
|
|
Tente olhar o código da JVCL em DevTools o demo JVCLConvert que você vai ter sua resposta.
Inclusive ele pode fazer em todo o código, seja .pas ou .dfm, renomeando todos os componentes.
Com este código você pode fazer sua própria ferramenta para renomear seus componentes.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
|