2018 04123456789101112131415161718192021222324252627282930312018 06
「H&Sの実験棟」は年中無休です入館は無料ですのでお気軽にどうぞ。
No. 499

コントロールの動的生成に再挑戦した

プロデルの試用中にコントロールの動的生成を検証した事が有ります。(No.444)
その時は動的生成には成功しましたが個別にハンドルできませんでした。
昨年は何回か試用しただけなのでプロデルに関して良く分かっていませんでした。
今年になってから本腰を入れてプロデルを使い始め少しだけ理解が深まったので、
改めてコントロールの動的生成にチャレンジしてみました。

実際にコントロールの動的生成を必要と感じたのは DS工房のメニューです。
DS工房は本館のレポートを実践する時に使用すると便利なツールです。
巨大なバッチファイルと VBScript や HTA および C# 等で構成されています。
ユーザ毎に必要な機能が異なるので予めメニューの構成を決められません。
そのような事情で動的にメニューを生成しています。

メニュー本体は初めは有志の方に C# で作成して頂きましたが、
その後、私自身でも HTA で作成して使用しています。
このメニューに必要な機能はメニューの基となるデータファイルを読み込んで、
その内容に応じてメニューを作成して表示する事です。
更にメニュー項目が選択されたらその番号をバッチファイルに返す事です。

HTA 版では仕様の殆どを満たしていましたが未解決の課題も残っていました。
DS工房で使用するメニューはメニュー項目の数だけボタンを並べたものですが、
その項目数や文字数に応じてボタンやメニュー ウィンドウの大きさが変わります。
問題は欧文混じりの文字列長を正確に計算できない事でした。
その為にメニュー内容が途中で途切れてしまう事も起きていました。

レポート用

今回は以上の問題をプロデルで解決して写真の様なメニューを完成させました。
このメニューの仕様は DS工房用に最初設計した内容を忠実に再現できました。
メニュー内容が書かれたテキストファイルを読み込んでメニューを表示させ、
選択されたメニュー番号を終了コードで返します。
それをバッチファイルのエラーレベルで判定して処理を分岐させます。

機能はシンプルですがデータファイルの内容次第で変わるメニューボタンの数や、
ボタンの横幅とウィンドウサイズを起動時に決定しています。
また、マウスだけでなくキーボードによる選択も可能としています。
今回、一番時間を費やしたのはこの部分かも知れません。

掲載したファイルは成果保管室からダウンロード可能です。
ソースは生産研究室にて公開しています。
[No. 499] 2018/04/06(金) その他のH&S track back(0) comment(0)

コメントの投稿















| ホーム |
Page Top↑