プラグインによって開発されたレポートソフトウェアとして、Finereportを単独で開発する必要があります。 Fanruanが開発したプラグインパッケージは、Fanruanフォーラムによって正式に提供されています。 Fanruanフォーラムで検索できます。この記事では、主にカスタムコントロールの開発方法を紹介します。これが方法論です。
ステップ1:コントロールを登録するインターフェイスをインスタンス化します
コントロールクラス、インターフェイスクラス、アイコンパス、コントロールタイプ名に4つの情報を提供します
パッケージcom.hg.free.plugin.customcombo.param; Import com.fr.design.design.designer.creator.xcombobox; Import com.fr.design.fun.fun.fun.fun.fun.fun.impl.abpr.widgetoptionprovider; Import com.fr.form.ui.widget; @Overrideパブリッククラス<? widget> classforwidget(){customcombobox.classを返します。 } @Override public class <?> sigplewidget(){return xcombobox.class; } @Override public String iconpathforwidget(){return "/com/fr/web/images/combobox.png"; } @Override public string nameforwidget(){return "カスタムドロップダウンボックス"; }}2番目のステップは、コントロールクラスを書き換えることです
パッケージcom.hg.free.plugin.customcombo.param; Import com.fr.form.ui.combobox; Import com.fr.ui.datafilter; public class customcombobox extends combox {private static final long serialversionuid = 7169777106215333336L; @Override public String getXtype(){return "CustomCombo"; } @Override Protected DataFilter createdAtafilter(){return new CustomComboBoxDataFilter(); }}フィルタリング方法を変更するには、フィルターを書き直す必要があるため
パッケージcom.hg.free.plugin.customcombo.param; import com.fr.form.ui.comboboxdatafilter; public customcomboboxdatafilter extends comboboxdatafilter {@override public boolean ismatch(string txt、string filter){if(null == txt && null!= filter!= filter! if(null == txt && null == filter)trueを返します。 txt.indexof(フィルター)!= -1を返します。 }}ステップ3:フロントエンドコントロールJSを継承します
(function($){fr.customcomboboxeditor = fr.extend(fr.comboboxeditor、{_init:function(){fr.customcomboboxeditor.superclass._init.apply(this、arguments);}}); $ .shortcut( "customcombo"、fr.customcombobobleditor);OK〜上記はすべてのコード開発〜〜XMLを書き、ANTを使用したプラグインにパッケージ化します。
コード説明:
まず、このコードの意味を見てみましょう。
コントロールタイプのCustomComboBoxEditorでコントロールを定義しました。 ComboBoxEditorのすべての方法とプロパティを継承し、新しく定義された制御タイプのタグをCustomComboとして宣言しました。このタグの使用は何ですか?他の用途については話しません。ここでの目的は、Java自体がフロントエンドのコントロールを生成することができないことです〜代わりに、フロントエンドに構成を伝えることで、フロントエンドJSエンジン(名前だと呼びましょう)〜この構成に従って対応するDOMスタイルに従って実行して、〜ショートカットでは、カスタムコントロールを生成するために、これを理解することを理解しています。 fr.customcomboboxeditorのようにcustomcomboboxeditor〜を使用して、コントロールの構成をこのメソッドにスローして実行します。私たちのコントロールが生成されます。
この例では、フロントエンドの変更の要件がないため、変更は行われません〜バックエンドを見てみましょう。
私たちの例は、ファジーマッチング方法を変更することです。
では、元の制御マッチングメカニズムは何をしましたか?このようなものです。私がボスだとします(私はそれを想定することしかできません)。今、私は紙の契約の詳細を知りたいのですが、会社には紙の契約が大きな契約を結んでいますが、どうすればそれを見つけることができますか?もちろん、私は秘書を雇って(美しさは最高です)、私は彼女に私が望んでいた情報を伝えました。それから彼女はそれを見つけに行き、彼女が見つけた最後の契約を私に与えました。
ここのコントロールコンボボックスはボスです、ComboBoxDatafilterは秘書であり、それが意味します。ここのすべての秘書は、契約を見つけるための彼自身の一連の方法を持っている必要があります。過去に、秘書は少し関連していればすべてを見つけました。新しい秘書は、ボスによって促された情報と一致する契約のみを見つけました。一致を見つける方法は一致です。このコードはこのようなものです。実際、コードが慎重に分析されている限り、実生活で多くのトランザクションにマッピングできます。コードは人間によっても設計されているため、論理は人間の取り扱いの考え方から逃れることはできません。
上記はこの記事のすべての内容です。この記事の内容が、すべての人の勉強や仕事に役立つことを願っています。また、wulin.comをもっとサポートしたいと思っています!