【DO!BOOK・ページリンク】
migaro_tech2013   64 / 100

BOOKをみる

10秒後にBOOKのページに移動します


62 レクトリ内が望ましい。) 今回は SamplePackage.bpl として保存する。  なお、既存のパッケージに今回作成し たユニットを追加する場合は、ここの手 順は不要である。 Aパッケージにユニットを追加  次に、メニューの[プロジェクト|プ ロジェクトに追加...]を選択し、今回作 成したユニットをパッケージに追加す る。【図9】 Bインストール  図9 のプロジェクトマネージャ内にあ るSamplePackage.bpl を右クリックし、 再構築(ビルド)を行う。  再構築が正常に行えたことを確認した ら、再度SamplePackage.bpl を右クリッ クし、「インストール」を選択すると、 コンポーネントのインストールが実行さ れる。  インストールが正常に完了すると、ダ イアログが表示される。【図10】 C画面への組み込み  インストールが完了したら、VCL for the Web の新規プロジェクトを作成す ると、デザイン画面のツールパレットに TIWNumEdit が追加される。【図11】  TIWNumEdit を選択して画面内をク リックすると、図12 のような項目が配 置される。見た目はカスタム前の TIWEdit と異なっているが、TIWEdit と同じようにプロパティやイベントの設 定を行うことが可能である。【図12】 Dライブラリパス設定と実行  作成したカスタムコンポーネントを使 用したプロジェクトのコンパイルが通る ようにするには、Delphi/400 開発環境 のライブラリパスの設定を行う必要があ る。  メニューの[ツール|オプション]を 選択し、今回作成したSampleNumEdit. pas の保管先ディレクトリをライブラリ パスの一覧に追加する。【図13】  ここまでの手順で、今回作成した TIWNumEdit を使用する準備はすべて 完了である。  アプリケーションにコンポーネントを 組み込んでコンパイルすれば、 TIWNumEdit の機能動作を確認するこ Text と記述することで、画面にセット されている文字列をそのまま返すことが できる。 ・GetValue  GetValue はValue の値を読み取るた めのイベントで、GetText と同様に他 のクラスからValue を呼び出すと、こ のイベントを通して値が渡される。 ・SetValue  SetValue は逆にValue に値を書き込 むためのイベントで、内部保管用の FValue 変数および画面のText にセッ トされた数値を代入する。 (6)EditExitイベントのコーディング  EditExit 手続きを使用することで、 Edit からフォーカスが抜けた時に、 Text に入力した文字列を数値に変換し て内部保管値に代入する処理を行う。  その際、コピー&ペースト等によって 数値でない文字列がセットされた状態で フォーカスが抜けた場合には、背景色を 赤に変更し、内部保管値に初期値(0) を代入する。  また、数値の判定に成功した際は、背 景色をもとに戻す処理を記述している。 ただし、無色を示すclNone をBGColor プロパティにセットしても色の変更が行 われないため、他の色(今回の場合ウィ ンドウ色)を指定する必要がある。  ソース記述については、ソース5 を参 考にしていただきたい。【ソース5】  以上で、TIWNumEdit コンポーネン トのコーディングは完了である。 (7)インストールと画面への実装  作成したコンポーネントを実際に使用 するには、パッケージを新規作成してイ ンストールを行う。手順に沿って説明し よう。 @パッケージを新規作成する  メニューの[ファイル|新規作成|そ の他]を選択し、新規作成ウィンドウよ り「パッケージ」を選択する。【図8】  パッケージを作成したら、プロジェク トを任意の場所に名前を付けて保存す る。(今回作成したユニットと同じディ 必要なプロパティやイベントは、次の2 点である。【ソース2】 ・Font.FontName  Create イベント内でフォント名を指 定する場合、「MS ゴシック」のように 日本語が入っていると正しく認識しない ため、英語で指定する。 ・EditExit  OnAsyncExit イベントにEditExit を代入することで、フォーカスが抜けた 際にEditExit イベントが実行されるよ うになる。このため、EditExit イベン トの引数はOnAsyncExit と同じものを 設定しておく。 (4) HookEventsイベントの コーディング  コンポーネント内でJavaScript を利 用したイベントを実行させることができ るScriptEvents プロパティを利用して、 キー押下時に、数値入力と無関係のキー 押下を無効にする処理を実装する。  これを実現するため、HookEvents イ ベントにおいて、ScriptEvents プロパ ティに対してJavaScript を設定する。 なお、本稿ではJavaScript 言語の詳細 説明については割愛するが、参考文献や 解説しているWeb サイトが多く存在す るので、比較的修得がしやすい言語であ る。  ソースの記述については、ソース3 を 参考にしていただきたい。【ソース3】 (5) ValueとTextの読み取り/ 書き出し時イベントの設定  今回はEdit の値を数値として保持さ せるため、既存のText を読み取り専用 プロパティに変更し、新たに数値型 (Double)のValue プロパティを作成 して値の入出力を行う。  記述例については、ソース4 を参考に していただきたい。【ソース4】 ・GetText  GetText はText の値を読み取るため のイベントで、他のクラスからText を 呼び出すと、このイベントを通して値が 渡される。Text ではなくinherited