Como um software de relatório desenvolvido pela Plug-in, o FineReport precisa ser desenvolvido por si só. O pacote de plug-in desenvolvido pela FanRuan é oficialmente fornecido pelo Fanruan Forum. Você pode pesquisar no fórum Fanruan. Este artigo apresentará principalmente como desenvolver um controle personalizado. Aqui está uma metodologia.
Etapa 1: instanciar uma interface que registra o controle
Dê quatro informações à nossa classe de controle, classe de interface, caminho do ícone, nome do tipo de controle
package com.hg.free.plugin.customcombo.param;import com.fr.design.designer.creator.XComboBox;import com.fr.design.fun.impl.AbstractParameterWidgetOptionProvider;import com.fr.form.ui.Widget;public class WidgetRegister extends AbstractParameterWidgetOptionProvider { @Override public Classe <? estende o widget> classForWidget () {return customComboBox.class; } @Override public class <?> Aparênciaforwidget () {return xcombobox.class; } @Override public String iconPathForWidget () {return "/com/fr/web/images/combobox.png"; } @Override public string nameforWidget () {return "Caixa suspensa personalizada"; }}O segundo passo é reescrever a classe de controle
pacote com.hg.free.plugin.customcombo.param; importar com.fr.form.ui.comBOBOX; importar com.fr.ui.datafilter; classe pública CustomComboBox estende o ComboBox {private estático final serialversionuid = 716977106215334236l; @Override public String getxType () {return "CustomCombo"; } @Override Protected DataFilter CreateTAfilter () {return new CustomComBoboxDataFilter (); }}Porque para alterar o método de filtragem, você deve reescrever um filtro
pacote com.hg.free.plugin.customcombo.param; importar com.fr.form.ui.comBOBOXDATAFILTER; public class CustomComBoboxDataFilter estende ComboBoxDataFilter {@Override public boolean ismatch (string txt, filtro de string) {se (Null === if (null == txt && null == filter) retornar true; retornar txt.IndexOf (filtro)! =-1; }}Etapa 3: herdar o controle do front-end JS
(function ($) {fr.customcomboboxeditor = fr.extend (fr.comBoboxeditor, {_init: function () {fr.customcomboboxeditor.superclass._init.apply (this, argumentos);});OK ~ O acima é todo o desenvolvimento do código ~ Então, escreva um XML e empacote-o em um plug-in com ANT.
Explicação de código:
Primeiro, vamos ver o que esse código significa?
Eu defini um controle com o tipo de controle CustomCombOBoxeditor. Ele herda todos os métodos e propriedades do ComboBoxeditor, e eu declarei a tag do tipo de controle recém -definido como CustomCombo. Qual é o uso desta tag? Não vou falar sobre outros usos. Apenas o objetivo aqui é que o próprio Java não pode deixar o front-end obter o controle que ele gera ~ em vez disso, dizendo ao front-end uma configuração, o mecanismo JS front-end (vamos chamá-lo, esse é o nome) ~ Executar o script correspondente de acordo com essa configuração para gerar os estilos de domínio correspondente e, o que você está de acordo com a devolução e a devolução, que é a devolução, o que você está de acordo com a queda, o que você está de acordo com a queda, o que é que você está de acordo com a configuração, que é que a contorção é que a devolução é que a contorção é que a devolução é que a contorção é que a devolução é que a contorção é que a devolução é que a contorção é que a contorção é que a contorção é que a devolução é que a contorção é que a devolução é que a contorção é que a devolução é que a contorção é que você entende que a devolução é que a referência. FR. CustomComboBoxeditor como um mapa ~ e depois lança a configuração do controle nesse método para executar. Nosso controle é gerado.
Como não há exigência de modificação no front-end neste exemplo ~ para que nenhuma alteração seja feita ~ Vejamos o back-end.
Nosso exemplo é modificar o método de correspondência difusa.
Então, o que o mecanismo de correspondência de controle original fez? É assim: suponha que eu seja um chefe (só posso assumir). Agora quero saber os detalhes de um contrato de papel, mas a empresa tem um grande contrato de papel, como posso encontrá -lo? Claro, contrato uma secretária (a beleza é a melhor) e disse a ela quais informações queria. Então ela foi encontrar e me deu o último contrato que encontrou.
O CONTROL COMBOBOX AQUI é o chefe, o ComboBoxDataFilter é o secretário, é isso que isso significa. Todo secretário aqui deve ter seu próprio conjunto de métodos para encontrar um contrato. No passado, o secretário encontrou tudo se estivesse um pouco relacionado. A nova secretária encontrou apenas o contrato que foi comparado com as informações solicitadas pelo chefe. O método para encontrar a correspondência é a correspondência. Este código é assim. De fato, desde que o código seja cuidadosamente analisado, ele pode ser mapeado para muitas transações na vida real. Como o código também é projetado pelos seres humanos, a lógica nunca pode escapar do pensamento dos humanos que lidam com assuntos.
O exposto acima é todo o conteúdo deste artigo. Espero que o conteúdo deste artigo seja de ajuda para estudar ou trabalhar de todos. Eu também espero apoiar mais wulin.com!