Pergunta

Em um formulário Delphi, eu gostaria de substituir um componente visual com o outro. Exemplo: Eu quero substituir um componente Painel com uma ElPanel de um pacote de 3rd party.

gostaria todas as propriedades idênticas e eventos do primeiro componente a ser transferidos para o novo, e todos os componentes que pertencem ao primeiro componente (por exemplo, barras de ferramentas, memorandos, barras de estado, etc.) para acabar colocado sobre o novo componente exatamente onde eles estavam no primeiro.

Existe uma maneira melhor / mais fácil de fazer isso além de adicionar o novo componente para o formulário e meticulosamente transferência de cada propriedade, evento e componente para que um por um?

Foi útil?

Solução

Eu fazê-lo da seguinte forma:

  1. Botão direito do mouse no formulário e escolha (Ver como texto).
  2. Pressione Ctrl + F para procurar o nome da classe Component como TPanel e substituí-lo com TElPanel
  3. Volte para voltar à forma (Ver como forma)
  4. Na seção interface de substituir o TPanel com TElPanel.

Se você tem muitos componentes usando GExperts será soluções mais viáveis.

Outras dicas

Você pode usar GExperts ou você pode fazê-lo com a mão.

Para fazê-lo manualmente, abra o .dfm no bloco de notas e substituir todos os nomes de classe. (Substitua TPanel com TElPanel por exemplo). Quando você tiver feito todas as suas alterações, abra o arquivo .pas com bloco de notas e fazer a mesma coisa.

Certifique-se de adicionar as unidades necessárias à sua cláusula de usos.

Em seguida, abra o formulário no IDE e limpar todos os eventos incompatíveis ou problemas de propriedade desconhecida.

Se bem me lembro as excelentes GExperts gratuitos plugin faz isso. Botão direito do mouse o formulário e selecione "substituir componentes". http://www.gexperts.org

IMHO, a grande desvantagem do GExpert componente Substituir é que ela muda a ordem dos componentes no código-fonte. Isso não é muito VCS amigável. : -)

Se você tiver outros componentes dentro de um recipiente fazendo essa substituição com GExperts fará com algumas exceções feias e comportamento possivelmente inesperada no IDE.
Assim, a melhor solução é editar o arquivo .dfm onde quiser (dentro ou fora do IDE) e substituir manualmente os tipos de componentes que você deseja alterar. Talvez ele irá causar algumas exceções também, mas o IDE conseguiu-los.
Se você fazê-lo dentro do IDE, após a mudança para modo de design se você salvar o .dfm inmediately o IDE irá pedir-lhe para alterar o tipo de variáveis ??relacionadas aos componentes que você tocou, liberando-lo a fazê-lo.

Para converter entre texto e formatos DFM binários, use a ferramenta convert.exe no bin \ Delphi. - Tim Knipe (28 de outubro às 4:15)

Você também pode usar o menu de contexto do designer de formulário -., Pelo menos, com BDS 2006. É o último item do menu ( "Text-DFM" em um IDE alemão)

No meu projeto eu tinha que converter alguns formulários doezens de um conjunto de componentes para outro. Eu criei script perl pequena para converter componentes e suas propriedades e fazer todas mapings neccesary. O script é uma solução rápida e suja, mas é altamente configurável. Ele scanns todos os arquivos DFM e pas nas definições direcotory projeto e DFM convertido componentes de acordo com regras que você deve fornecer em ObjectBeginFound, PropertyFound, ObjectEndFound procedimentos / eventos.

arquivos DFM deve estar em modo de texto. Testado em Delphi 5 arquivos. Eu não sei se ele vai ser compatível com as versões mais recentes. Por favor, envie mensagens se você encontrá-lo.

USO: perl.exe cxdfm.pl> logfile.txt

Link para download http://dl.dropbox.com/u/15887789/cxdfm.pl

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top