Webコンポーネントのカスタマイズ入門

Similar documents
Indyを利用したメール送信機能開発

Webサービスを利用して機能UP!

FastReportへの効率的な帳票レイアウトコンバート

Delphi/400を使用したWebサービスアプリケーション

Delphi/400活用! スマートデバイスアプリケーション開発

Delphi/400を利用したはじめてのWeb開発

FastReportを活用した電子帳票作成テクニック

JC/400でポップアップウィンドウの制御&活用ノウハウ!

Delphi/400バージョンアップに伴う文字コードの違いと制御

インテル(R) Visual Fortran コンパイラ 10.0

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

Web & ハイブリッドアプリ開発で役立つIBM i & ブラウザデバッグテクニック

Team Foundation Server 2018 を使用したバージョン管理 補足資料

Delphi/400:帳票開発ノウハウ公開

JACi400のご紹介~RPGとHTMLで簡単Web化~

試作ツールは MIT ライセンスによって提供いたします その他 内包された オープンソース ソフトウェアについてはそれぞれのライセンスに従ってご利用ください

10th Developer Camp - B5

24th Embarcadero Developer Camp

C#の基本

2 / 26 平成 26 年 4 月 11 日 ( 金 ) 午後 1 時 9 分 Visual C Express の使用法 ( 東海大学理学部物理学科 ) 無償で利用できる開発環境 (Windows XP 以降 ) Visual Studio 2010 Express

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

Microsoft Word - VB.doc

LightSwitch で申請システム Windows ストアアプリで受付システムを構築してみた 情報政策グループ技術職員金森浩治 1. はじめに総合情報基盤センターでは 仮想サーバホスティングサービスや ソフトウェアライセンス貸与といった さまざまなエンドユーザ向けサービスを行っている 上記のよう

C) 信頼済みサイトダイアログにて以下の操作を実施する 次の Web サイトをゾーンに追加する (D); 欄に電子入札 URL を入力する 追加 ボタンをクリックし Web サイト (W) に URL が追加されたことを確認する 3 上記 ~ を必要なサイト分行う 登録するWebサイト受注者 : h

ミガロ.製品 最新情報

目次 はじめに ツールのインストール ソフトウェアを起動する 画像ファイルの選択... 7 位置の調整... 8 背景色の設定 進捗バーの設定 パスワード設定 ユーザー情報の設定 設定

はじめに 本ドキュメントでは Salesforce 標準機能である 変更セット を使用して Visualforce ページ Apex クラスを Sandbox から本番環境に移行する手順を説明します 但し前提条件として Sandbox 本番環境共に SkyVisualEditor がインストールされ

Javaの作成の前に

Delphi/400開発ノウハウお教えします Googleマップ連携によるリッチなGUIアプリ開発

CubePDF ユーザーズマニュアル

TestDesign for Web

APIリファレンス | IP Geolocation API どこどこJP

ホームページ公開方法

Microsoft Word - XOOPS インストールマニュアルv12.doc

IBM i のスマート・デバイス活用【HATSのiPhone / iPadサポート編】

メディプロ1 Javaプログラミング補足資料.ppt

実習を行う上での心構えについて

設定 1 Windows10 の規定ブラウザの変更手順について 1 Windows10 のスタートメニューから 設定 をクリックしてください 2 システム をクリックしてください -1-

Microsoft Word - ModelAnalys操作マニュアル_

001_migaro_あいさつ_初.indd

VB実用Ⅲ⑩ フリーデータベースⅡ

更新履歴 変更履歴 版数 リリース日 更新内容 第 1 版 2017/5/15 第 1 版発行 第 2 版 2017/7/13 更新履歴 変更内容を追加 (2ページ) 編集の前に を追加(8 ページ ) ブロックエディタ スマートモード エディタモード の説明を追加 (10~12 ページ ) ブロッ

本書は INpMac v2.20(intime 5.2 INplc 3 Windows7/8/8.1に対応 ) の内容を元に記載しています Microsoft Windows Visual Studio は 米国 Microsoft Corporation の米国及びその他の国における登録商標です

Oracle BI Publisherを利用したレポートの作成

PowerPoint Presentation

JavaScriptで プログラミング

Rational Roseモデルの移行 マニュアル

InstallAwareを使った Delphi/400運用環境の構築

intra-mart Accel Platform — 招待機能プログラミングガイド   初版  

2. FileZilla のインストール 2.1. ダウンロード 次の URL に接続し 最新版の FileZilla をダウンロードします URL: なお バージョンが異なるとファイル名が

コンテンツ作成基本編

設定 1 USB キー証明書ソフトの更新手順 1 産科医療補償制度のホームページ ( へアクセスし 分娩機関の皆さまへ 加入手続き をクリックしてください 2 専用 Web システムの導入要件 をクリックしてくださ

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

WebARENA SuiteX V2 EC-CUBE 2.13 インストールマニュアル ( 標準 MySQL+ 非 SSL ) 作成 :2014 年 2 月 Ver.1.1

シヤチハタ デジタルネーム 操作マニュアル

Master'sONEセキュアモバイル定額通信サービス(MF120)設定手順書(Ver1_2).doc

intra-mart Accel Platform

Syslog、SNMPトラップ監視の設定

InstallShiled FAQ デバイスドライバーのインストール 注 ) このドキュメントは InstallShield 2011 Premier Edition を基に作成しています InstallShield 2011 以外のバージョンでは設定名などが異なる場合もあります 概要 Instal

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

IME( 日本語入力システム ) の確認 変更方法 / プロパティ確認の手順 ************************************************************************************ ドキュメント目次 IME( 日本語入力システム )

目次 1 はじめに 利用条件 動作環境 アドインのインストール アドインの操作方法 アドインの実行 Excel CSV の出力 テンプレートの作成 編集 テンプレートのレイアウト変更 特記

Create!Form V11 - 機能リファレンス - テスト実行

Microsoft PowerPoint - DELPHI�礔.ppt

PowerPoint プレゼンテーション

PALNETSC0184_操作編(1-基本)

スクールCOBOL2002

クライアント証明書インストールマニュアル

Windows10 の設定

目次 1. PDF 変換サービスの設定について )Internet Explorer をご利用の場合 )Microsoft Edge をご利用の場合 )Google Chrome をご利用の場合 )Mozilla Firefox をご利

目次 1. アニメーションの仕組み 3 2. ワードアートでムービーのタイトルを作成 7 3. まとめ 課題にチャレンジ 19 [ アニメーション ] 機能 PowerPoint に搭載されている [ アニメーション ] 機能を使用すると 文字や図形にアニメーション ( さまざまな動きや

目次 1. 回答作成手順 2 2. ツールの起動 3 3. 一般情報の入力 6 4. 成分表の入力 9 5. 依頼者情報の入力 エラーチェック XMLファイルの作成 動作設定 ( 任意 ) ( ご参考 ) 各種シートのボタン機能 ( ご参

Microsoft Word combine.doc

WebOTXマニュアル

帳票エラーが発生した場合のチェックリスト 確認番号 1 企業内 LAN にて ActiveDirectory のリダイレクト機能 ( シンクライアント等 ) を利用しているか 利用している場合 帳票を正常に表示できないことがあります 項目確認方法チェック対応方法 2 事前準備セットアップを実行してい

改版履歴 版数 改版日付 改版内容 /03/14 新規作成 2013/03まで製品サイトで公開していた WebSAM DeploymentManager Ver6.1 SQL Server 2012 製品版のデータベース構築手順書 ( 第 1 版 ) を本 書に統合しました 2

作業環境カスタマイズ 機能ガイド(応用編)

Transcription:

佐田雄一 株式会社ミガロ. システム事業部システム 1 課 Web コンポーネントのカスタマイズ入門カスタムコンポーネントを開発できれば さらなる Web 開発の効率化が見込める VCL for the Web ならではのカスタムコンポーネント作成手法を述べる はじめに カスタムコンポーネントを利用するメリット Ajax JavaScript との連携 数値専用 WebEdit の作成例 まとめ 略歴 1985 年 12 月 6 日生 2009 年甲南大学経営学部卒 2009 年 04 月株式会社ミガロ. 入社 2009 年 04 月システム事業部配属 現在の仕事内容 Delphi/400 を利用したシステム開発や保守作業を担当 Delphi および Delphi/400 のスペシャリストを目指して精進している 1. はじめに VCL for the Web(IntraWeb) は Delphi/400 の開発機能の 1 つである この機能を用いると C/S( クライアント / サーバー型 ) アプリケーションの開発と同様の手法で Web アプリケーションを作成することができる この VCL for the Web を活用することで Web 開発に馴染みの薄い開発者であっても 使い慣れた Delphi/400 を用いて 容易に Web アプリケーションを作成することが可能になるだろう 本稿では Delphi/400 を使用した Web アプリケーション開発のバリエーションをさらに広げていただけるよう 特にコンポーネントのカスタマイズ手法について取り上げ くわしく紹介する 2. カスタムコンポーネントを利用するメリット Delphi/400 では 開発機能の 1 つである 継承 を活用して 既存のコンポー ネントから新しいコンポーネントを作成することができる 図 1 このようにして作成されたコンポーネントは カスタムコンポーネント と呼ばれ 要件にあわせてさまざまな追加機能を組み込むことができる 本稿では VCL for the Web ならではのカスタムコンポーネント作成手法について述べる なお C/S アプリケーションの開発におけるカスタムコンポーネントの作成手法については ミガロ. テクニカルレポート 2012 に カスタマイズコンポーネント入門 Delphi/400 開発効率向上 を掲載している わかりやすく解説されているので ぜひ参考にしていただきたい 3.Ajax JavaScript との連携 VCL for the Web 専用コンポーネントの特徴の 1 つとして Ajax と連携した Async イベントが利用できる点が挙 げられる Ajax Ajax とは Asynchronous JavaScript + XML の略で JavaScript によって実現する機能の総称である Ajax の仕組みを作成することは難しいが Delphi ではイベントで提供されているため 簡単に利用することが可能である 例えば C/S アプリケーションの開発においては TEdit でフォーカスが抜けた際に OnExit イベントが実行される 一方 VCL for the Web アプリケーションの TIWEdit においては OnAsyncExit イベントが実行される このイベントでは HTML 上でフォーカスが抜けたことを JavaScript で検知し 非同期で処理を行うことが可能である 図 2 Async イベント C/S アプリケーションにおけるイベントの多くは VCL for the Web アプリケーションでは Async イベントで代替 58

図 1 図 2 図 3 図 4 59

されている 加えて これらは Ajax の処理に依存しているため 中には実行タイミングや処理の種類が異なるものも存在する 例えば C/S アプリケーションにおける TEdit の OnChange イベントは 1 文字でも値が変更されたタイミングで実行される それに対し TIWEdit の OnAsyncChange イベントでは フォーカスが抜けたタイミングで 値が変更されていれば実行される JavaScript 連携 VCL for the Web アプリケーションのコンポーネントは JavaScript と密接な関係がある コンポーネントに JavaScript を埋め込み キー押下時やフォーカスセット時などの制御を JavaScript で行うことが可能である コンポーネントのカスタマイズにおいて 実際に埋め込み 制御を行う手法については 次章でコンポーネントを作成しながら解説する Asynchronous = 非同期 4. 数値専用 WebEdit の作成例 カスタムコンポーネントを作成することで 処理の共通化を実現し 開発の効率化を図ることが可能になる VCL for the Web のカスタムコンポーネントも同様であり その特徴は前述の通りである ここからは 実際に VCL for the Web アプリケーション用のカスタムコンポーネントを作成していこう 今回は例として TIWEdit を継承して TIWNumEdit という数値入力専用の WebEdit を作成する 前述の Async イベントおよび JavaScript を活用することで C/S アプリケーションのコンポーネントと同等の制御を Web アプリケーションでも実現できるだろう (1) コンポーネントの新規作成 C/S アプリケーションで作成する際と同様に コンポーネントソースを新規作成する 手順に沿って説明していこう なお 今回の開発環境は Delphi/400 Version XE3 を使用している 1コンポーネントの新規作成メニューの [ ファイル 新規作成 その他 ] を選択し 新規作成ウィンドウより コンポーネント を選択する 図 3 2 フレームワークの指定 (Version XE3 ) フレームワーク指定のダイアログでは VCL for Delphi Win32 を選択する 図 4 3 継承元コンポーネントの指定今回は TIWEdit を継承するため TIWEdit を指定する 図 5 4 コンポーネント名とパレットページ 保存先の指定クラス名に 今回作成するコンポーネント名である TIWNumEdit を指定する パレットページ名に 新規追加するコンポーネントパレットのパレットページ名を指定する なお 今回はデフォルト値の Samples を使用する ユニット名に 今回追加するカスタムコンポーネントの pas ファイル名 および保存先を指定する なお 今回は保存先を C: Projects TechRep Sample NumEdit.pas と設定する 図 6 5 コンポーネントの新規作成の完了完了すると 図 7 の画面が表示される 図 7 (2) 宣言部の作成 今回の数値入力用 WebEdit では 以下の機能を実装したいと思う Value:Edit 値を数値として設定 / 保持するための新規プロパティ Text: 既存の Text から変更し 読み取り専用プロパティにする JavaScript で不必要なキー押下を無効にする フォーカスが抜けた時に 数値でない値がセットされていれば色を変更する これらを実現するため ソース 1 のように宣言部を記述する それぞれのプロ パティやイベントの詳細については後述する ソース 1 1 uses HookEvents イベントの実装に必要な IWRenderContext IWScriptEvents 色の指定を行うために必要な Graphics を宣言部の uses に追加する 2 private 宣言入力された数値を内部で保管するための変数 FValue を private 部に宣言する また SetValue GetValue GetText については後で自動生成されるため この時点では記載不要である 3 protected 宣言 ScriptEvents の設定を行うための HookEvents イベント およびフォーカスが抜けた際に実行する EditExit イベントを protected 部に宣言する また HookEvents は上位クラスから継承されているため 宣言の後ろに override; を記述する 4 public 宣言クラス生成時イベント (constructor) を使用するため public 部に宣言する 5 published 宣言実際に画面に貼りつけた際にオブジェクトインスペクタに表示される変数 Value を宣言する また Text は上位クラスから存在するが write を指定しない (read のみとする ) ことで 読み取り専用のプロパティになる 各宣言部が完成したら Ctrl + Shift +[C] キーを同時に押下することで実装部 および先述した SetValue GetValue GetText が自動生成される (3)Create イベントの作成 Create は コンポーネントの生成時に実行されるイベントである 画面にコンポーネントを配置した際や ソース内で動的にコンポーネントを生成した際のプロパティの初期値は ここで設定した値となる 記述例については ソース 2 を参考にしていただきたい これらの中で注意が 60

図 5 図 6 図 7 61

必要なプロパティやイベントは 次の 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 Text と記述することで 画面にセットされている文字列をそのまま返すことができる GetValue GetValue は Value の値を読み取るためのイベントで GetText と同様に他のクラスから Value を呼び出すと このイベントを通して値が渡される SetValue SetValue は逆に Value に値を書き込むためのイベントで 内部保管用の FValue 変数および画面の Text にセットされた数値を代入する (6)EditExit イベントのコーディング EditExit 手続きを使用することで Edit からフォーカスが抜けた時に Text に入力した文字列を数値に変換して内部保管値に代入する処理を行う その際 コピー & ペースト等によって数値でない文字列がセットされた状態でフォーカスが抜けた場合には 背景色を赤に変更し 内部保管値に初期値 (0) を代入する また 数値の判定に成功した際は 背景色をもとに戻す処理を記述している ただし 無色を示す clnone を BGColor プロパティにセットしても色の変更が行われないため 他の色 ( 今回の場合ウィンドウ色 ) を指定する必要がある ソース記述については ソース 5 を参考にしていただきたい ソース 5 以上で TIWNumEdit コンポーネントのコーディングは完了である (7) インストールと画面への実装 作成したコンポーネントを実際に使用するには パッケージを新規作成してインストールを行う 手順に沿って説明しよう 1パッケージを新規作成するメニューの [ ファイル 新規作成 その他 ] を選択し 新規作成ウィンドウより パッケージ を選択する 図 8 パッケージを作成したら プロジェクトを任意の場所に名前を付けて保存する ( 今回作成したユニットと同じディ レクトリ内が望ましい ) 今回は SamplePackage.bpl として保存する なお 既存のパッケージに今回作成したユニットを追加する場合は ここの手順は不要である 2パッケージにユニットを追加次に メニューの [ プロジェクト プロジェクトに追加...] を選択し 今回作成したユニットをパッケージに追加する 図 9 3インストール図 9 のプロジェクトマネージャ内にある SamplePackage.bpl を右クリックし 再構築 ( ビルド ) を行う 再構築が正常に行えたことを確認したら 再度 SamplePackage.bpl を右クリックし インストール を選択すると コンポーネントのインストールが実行される インストールが正常に完了すると ダイアログが表示される 図 10 4 画面への組み込みインストールが完了したら VCL for the Web の新規プロジェクトを作成すると デザイン画面のツールパレットに TIWNumEdit が追加される 図 11 TIWNumEdit を選択して画面内をクリックすると 図 12 のような項目が配置される 見た目はカスタム前の TIWEdit と異なっているが TIWEdit と同じようにプロパティやイベントの設定を行うことが可能である 図 12 5ライブラリパス設定と実行作成したカスタムコンポーネントを使用したプロジェクトのコンパイルが通るようにするには Delphi/400 開発環境のライブラリパスの設定を行う必要がある メニューの [ ツール オプション ] を選択し 今回作成した SampleNumEdit. pas の保管先ディレクトリをライブラリパスの一覧に追加する 図 13 ここまでの手順で 今回作成した TIWNumEdit を使用する準備はすべて完了である アプリケーションにコンポーネントを組み込んでコンパイルすれば TIWNumEdit の機能動作を確認するこ 62

ソース 1 ソース 2 ソース 3 63

とができるだろう 図 14 5. まとめ 近年 Web アプリケーションやスマートデバイス用アプリケーションへの需要が高まり C/S アプリケーションだけではなく Web アプリケーションでのシステム構築が多くなってきている 今回は Web のカスタムコンポーネント開発手法を説明したが カスタムコンポーネントを開発できるようになれば さらなる Web 開発の効率化が見込めるだろう Web アプリケーション開発に難しさを感じておられる開発者の皆様にとって 本稿が新たなアプリケーション開発の一歩となる内容であれば幸いである M 64

ソース 4 ソース 5 図 8 65

図 9 図 10 図 11 図 12 66

図 13 図 14 67