2015年05月13日

質問する = 問い合わせ

質問する = 問い合わせ

■はじめに

パソコンで何かを実行しようとすると、「問い合わせ」のダイアログボックスが現れることがよくあります。
たとえば、「このまま保存しないで終了してもよろしいですか?」とか、「既に同じファイルがあります。上書きしてよろしいですか?」といったダイアログボックスです。
プロデルでは、この「問い合わせ」のダイアログボックスの手順は「質問する」となっています。

今回は、この「質問する = 問い合わせ」のダイアログボックスを表示し、ユーザーの操作によってその後の処理を変化させる手順について説明いたします。
特にプロデルでは、ファイルのコピーや、内容の保存を実行すると、問答無用で上書きされてしまいますので、「質問する」の手順は必須と言っても過言ではありません。

■「質問する」の基本書式

結果は、「よろしいですか?」をはいといいえで質問アイコンにして質問したもの
//「よろしいですか?」の 「 」 の中に、問い合わせのメッセージを書きます。
//ここに書かれたメッセージがダイアログボックスに表示され、
//PC-talkerでも読み上げられます。
//はいといいえで〜の部分は、ユーザーの選択肢として、ダイアログボックスの中の
//ボタンとして表示されます。
//ボタンなので、Tabキーで移動して操作することが出来ます。

もし結果が、「はい」なら
//結果というのは、ユーザーがどのボタンを押したか、ということを示します。
//どのボタンが押されたかによって、どういう処理を行なうかを、
//「もし文」の形で続いて書いていきます。

ーー(その時の処理の命令文)
//この場合は、「はい」のボタンが押されたら〜の命令を書きます。

他でもし結果が、「いいえ」なら
//ここでは、「いいえ」のボタンが押されたら〜の命令を書きます。

ーー(その時の処理の命令文)

もし終わり
//「もし文」を閉じます。

■選択肢とアイコン

選択肢には、

はいといいえ
はいといいえとキャンセル
OKとキャンセル
中止と再試行と無視
再試行とキャンセル

が指定できます。

アイコンには、

質問アイコン
情報アイコン
警告アイコン
中止アイコン

を指定することが出来ます。

※ここでは「質問アイコン」のみを使って進めていきます。他のアイコンについては、リファレンスを参照してください。

■具体的なプログラム

具体的に処理を書いたプログラムを下に紹介します。ダイアログボックスの表示と、その後の処理を確認してみてください。

──────────
結果は、「よろしいですか?」をはいといいえとキャンセルで質問アイコンにして質問したもの
もし結果が、「はい」なら
「はい が押されました。」を表示する
他でもし結果が、「いいえ」なら
「いいえ が押されました。」を表示する
他でもし結果が、「キャンセル」なら
「キャンセルされました。」を表示する
もし終わり
──────────

■ファイルの上書きの確認

はじめの方に書いた通り、プロデルでは、ファイルのコピーや内容の保存などの際、そのままだと、問答無用で上書きされてしまいます。トラブルを防ぐために、処理を行なう前に質問する方法=手順を紹介します。
[マイドキュメント]にある「文章.txt」というファイルを、[デスクトップ]にコピーする、という想定でのプログラムです。
実際にプログラムを試す時は、実在するファイルのフルパス(ファイル名)に書き替えてください。

──────────
もし「[デスクトップ]文章.txt」というファイルが存在するなら

結果は、「文章.txt[改行]というファイルは既に存在します。[改行]上書きしてもよろしいですか?」をはいといいえで質問アイコンにして質問したもの
もし結果が、「はい」なら
「[マイドキュメント]文章.txt」を、「[デスクトップ]文章.txt」へコピーする
「コピーしました。」を表示する
他でもし結果が、「いいえ」なら
「コピーをキャンセルしました。」を表示する
もし終わり

もし終わり
──────────

■プログラムの説明

──────────
もし「[デスクトップ]文章.txt」というファイルが存在するなら
//ファイルの存在を確認する手順です。
//「[デスクトップ]文章.txt」というファイルが存在する場合だけ
//以下の手順が実行されます。
//「[デスクトップ]文章.txt」というファイルが存在しない時は、
//そのままファイルをコピーします。

結果は、「文章.txt[改行]というファイルは既に存在します。[改行]上書きしてもよろしいですか?」をはいといいえで質問アイコンにして質問したもの
//メッセージの中の [改行] は、文章が長くなる時や、
//途中で区切りを入れたい時に記述します。
//文字通り [改行] の所で改行されてダイアログボックスに表示されます。

もし結果が、「はい」なら
「[マイドキュメント]文章.txt」を、「[デスクトップ]文章.txt」へコピーする
「コピーしました。」を表示する
//「はい」のボタンが押された時は、コピーを実行して、
//その胸のメッセージを表示します。

他でもし結果が、「いいえ」なら
「コピーをキャンセルしました。」を表示する
//「いいえ」のボタンが押された時は、ファイルをコピーせず、
//「キャンセルされた旨のメッセージを表示します。

もし終わり
//「質問する」の手順の「もし文」を閉じます。

もし終わり
//ファイルの存在を確認する「もし文」を閉じます。

──────────

■既定ボタン

「既定ボタン」というのは、ダイアログボックスが表示された時に、フォーカスが当たるボタンを指します。
上記のプログラムでは、この「既定ボタン」が「はい」の選択肢(ボタン)になっていますので、「はい」のボタンにフォーカスが当たった状態でダイアログボックスが表示されます。
人間は誰でも「うっかり」「ということがあります。パソコンの操作に慣れてくると、つい 手拍子でEnterキーやSpaceキーを押してしまうこともあります。
そうした事態を考慮して、ユーザーが反射的に意図と違った操作をしないようにするために、または、意図と違ったボタンを押しても実害がないように、「既定ボタン」の設定を使うことが出来ます。

「既定ボタン」には、次の3種類が指定出来ます。それぞれのボタンは、プログラムの中の選択肢の順版に対応しています。

第1ボタン
第2ボタン
第3ボタン

■「既定ボタン」を取り入れたプログラム

先ほど紹介したプログラムに、この「既定ボタン」を取り入れたプログラムを、以下に記します。
「第2ボタン」は、ここでは「いいえ」のボタンになりますので、ダイアログボックスが表示されると、フォーカスは「いいえ」のボタンに当たっています。

──────────
もし「[デスクトップ]文章.txt」というファイルが存在するなら

結果は、「文章.txt[改行]というファイルは既に存在します。[改行]上書きしてもよろしいですか?」をはいといいえから第2ボタンにして質問アイコンで質問したもの
もし結果が、「はい」なら
「[マイドキュメント]文章.txt」を、「[デスクトップ]文章.txt」へコピーする
「コピーしました。」を表示する
他でもし結果が、「いいえ」なら
「コピーをキャンセルしました。」を表示する
もし終わり

もし終わり
──────────

■参考

リファレンス > 広域種類 > 基本 > 質問する
http://rdr.utopiat.net/docs/reference/core/core.htm#質問する
【produireの最新記事】
posted by yanikun at 07:36| Comment(0) | TrackBack(0) | produire

2014年12月31日

簡単ランチャ

簡単ランチャ

「Launcher ランチャ」というのは、普段よく使うアプリケーションやフォルダなどを素速く開くためのソフトです。世間には山ほどランチャソフトが公開されていますが、今回はプロデルで簡単なランチャのプログラムを作ってみます。

HotKey Launcher.NET 〜 ホットキーで効率アップ
http://talk-pc.sakura.ne.jp/hotkey-launcher.html

のページで紹介している「HotKey Launcher」を使ってホットキーも設定しているのですが、すぐに起動したいソフトや開きたいフォルダが多すぎて、設定が間に合いません。
というのは、スクリーンリーダーや視覚障害者用ソフトには、それぞれ 数多くのホットキーやショートカットキーが設定されているため、その間隙を縫って設定するのが大変だからです。

そこで、様々なソフトやフォルダのショートカットを作成して、デスクトップの「shortcut」というフォルダに入れておいて、そこから起動したり開いたりしているのですが、この方法だと、ソフトを起動した後に、「shortcut」のExplorerを閉じなければいけません。たいした手間ではないのですが、このひと手間が気になるのです、私は。

というわけで、ソフトを起動したりフォルダを開いたりした後に、ウィンドウを閉じてしまうプログラムにしました(閉じないようにすることも可能)。
プログラムを起動して、リストビューから項目を選択し、Enterキーを押すとソフトが起動(またはフォルダが開き)、プログラム本体のウィンドウが閉じるようになっています。

■プログラム
──────────────────────────────
プログラムのタイトルは、「shortcutBox」

「Produire.WinControl.dll」を利用する

メイン画面を表示する
待機する

メイン画面とは
ウィンドウを継承する

はじめの手順
初期化する
一覧は、(フルパスで「D:\Desktop\shortcut\」のファイルの一覧)
一覧を要素にそれぞれ繰り返す
(要素のファイル名だけ)を、リストビュー1に追加する
その詳細は、「[要素]」
繰り返し終わり
リストビュー1の選択番号を1に変える
チェックボックス1のチェックを○に変える
終わり

初期化する手順
この内部領域大きさを{292、378}に変える
この内容を「[プログラムのタイトル]」に変える
このドラッグドロップを○に変える

ラベル1というラベルを作る
その内容を「ショートカット一覧(&S)」に変える
その位置と大きさを{13、13、39、12}に変える

リストビュー1というリストビューを作る
その位置と大きさを{13、29、267、277}に変える
その表示方法を「詳細」に変える
その見出し一覧を{「ショートカット名」、「パス」}に変える
その見出し幅を{267,100}に変える
その罫線を○に変える

チェックボックス1というチェックボックスを作る
その内容を「起動した後 ウィンドウを閉じる(&W)」に変える
その位置と大きさを{22、313、258、24}に変える

ボタン1というボタンを作る
その内容を「起動(&E)」に変える
その位置と大きさを{124、343、75、23}に変える

ボタン2というボタンを作る
その内容を「閉じる(&X)」に変える
その位置と大きさを{205、343、75、23}に変える

この決定ボタンを、ボタン1に変える
この取消ボタンを、ボタン2に変える

終わり

ーー起動
ボタン1がクリックされた時の手順
「"[リストビュー1の選択項目の詳細(2)]"」を起動する
もし、チェックボックス1のチェックが○なら
自分を閉じる
もし終わり
終わり

ーー閉じる
ボタン2がクリックされた時の手順
自分を閉じる
終わり

終わり
──────────────────────────────

■プログラムの説明
──────────────────────────────
プログラムのタイトルは、「shortcutBox」
//タイトルはお好みの名前でどうぞ。

「Produire.WinControl.dll」を利用する
//リストビュー部品を使うため、ここに記述しておきます。

メイン画面を表示する
待機する

メイン画面とは
ウィンドウを継承する

はじめの手順
初期化する
一覧は、(フルパスで「D:\Desktop\shortcut\」のファイルの一覧)
//ショートカットを入れておくフォルダの中のショートカットファイルの一覧を
//配列の形で取得して[一覧]という変数に格納します。
//単に「ファイルの一覧」とすると、ファイル名だけになってしまいますので、
//「フルパスで」と記述することによって、それぞれのファイルのフルパスを
//取得するようにします。
//フォルダ名(パス)は、任意のものに書き替えてください。

一覧を要素にそれぞれ繰り返す
//一覧に格納された配列の要素に対して、それぞれ以下の手順を実行します。

(要素のファイル名だけ)を、リストビュー1に追加する
//フルパスで取得したパス名から「ファイル名」だけを取り出して、
//リストビューの項目に表示されるようにします。

その詳細は、「[要素]」
//ショートカットファイルの起動に使うため、フルパスで取得した[要素]を、
//先ほどリストビューに追加した項目(ファイル名)に対応する行に追加していきます。

繰り返し終わり
リストビュー1の選択番号を1に変える
//リストビューへの追加が終ったら、リストビューの一番上の項目を選択します。
//リストビュー部品で何かの処理を行なう場合、いずれかの項目が
//選択状態になっていないと、エラーになってしまうためです。

チェックボックス1のチェックを○に変える
//チェックボックスは後に出てきますが、このチェックがオンになっていれば、
//ソフトを起動した後にウィンドウを閉じる手順になっています。

終わり

初期化する手順
この内部領域大きさを{292、378}に変える
この内容を「[プログラムのタイトル]」に変える
このドラッグドロップを○に変える

ラベル1というラベルを作る
その内容を「ショートカット一覧(&S)」に変える
その位置と大きさを{13、13、39、12}に変える

リストビュー1というリストビューを作る
その位置と大きさを{13、29、267、277}に変える
その表示方法を「詳細」に変える
その見出し一覧を{「ショートカット名」、「パス」}に変える
その見出し幅を{267,100}に変える
//リストビューの幅を全て「ファイル名」の表示に使っています。
//フルパスは見えなくてもいいので、適当に幅を設定してあります。
//ウィンドウからはみ出してしまいますが、画面には表示されません。

その罫線を○に変える

チェックボックス1というチェックボックスを作る
その内容を「起動した後 ウィンドウを閉じる(&W)」に変える
その位置と大きさを{22、313、258、24}に変える

ボタン1というボタンを作る
その内容を「起動(&E)」に変える
その位置と大きさを{124、343、75、23}に変える

ボタン2というボタンを作る
その内容を「閉じる(&X)」に変える
その位置と大きさを{205、343、75、23}に変える

この決定ボタンを、ボタン1に変える
//エンターキーを押したときに、クリックしたことになるボタン部品です。

この取消ボタンを、ボタン2に変える
//Escボタンを押したときに、クリックしたことになるボタン部品です。
//ウィンドウを閉じる場合は、その手順の記述が必要です。

終わり

ーー起動
ボタン1がクリックされた時の手順
「"[リストビュー1の選択項目の詳細(2)]"」を起動する
//「リストビュー1の選択項目の詳細」は、リスト上で現在選択状態にある項目の
//内容を配列の形で取得したものです。
//Excelで、一行に書かれているデータを配列で取得したもの、
//というようなイメージです。
//(2)という添え字を続けて記述して、上記の配列の2番目のデータを
//取得します。この場合は、ファイルのフルパスになります。
//取得したフルパスを [ ] で変数に代入し " " で括ります。
//この括りは、半角・全角スペースが含まれているパス名のための対策です。

もし、チェックボックス1のチェックが○なら
//ウィンドウを初期化した後に、ここにチェックを付けていますので、
//チェックを外さなければ、ウィンドウが閉じられます。
//ユーザーがチェックを外してから「起動」ボタンを押した場合は、
//ウィンドウは閉じられません。
//なお、このケースでは、「でないなら」「チェックが×なら」
//という命令文(もし文)は記述する必要はありません。

自分を閉じる
もし終わり
終わり

ーー閉じる
ボタン2がクリックされた時の手順
自分を閉じる
終わり

終わり
──────────────────────────────

■参考

ショートカットファイルを作成したり、ホットキーを設定するプログラムと組み合わせることも可能です。面倒なので、ここでは記載しませんが、下記のページ等を参考にしてください。

ショートカットファイル
http://rdr.utopiat.net/docs/reference/file/shoutcut.htm

ホットキー
http://rdr.utopiat.net/docs/reference/wincontrol/mics/hotkey.htm

リストビュー
http://rdr.utopiat.net/docs/manual/controls/listview.htm

ウィンドウ
http://rdr.utopiat.net/docs/reference/core/window.htm
posted by yanikun at 11:28| Comment(0) | TrackBack(0) | produire

2014年05月21日

プロセスを残さないようにする

プロセスを残さないようにする

プロデルで実行可能ファイルを作成し、それを実行した後に、ボタンやメニュー、または Alt+F4でウィンドウを閉じても、実行ファイルのプロセスが残ってしまうことがあります。

プロセスが残っていると、プログラムを修正して、実行可能ファイルを上書きで作成しようとしても、エラーになって作成出来ません。また、その実行ファイルやフォルダを移動することも出来ません。

実行ファイルを起動してウィンドウを閉じた後は、必ずタスクマネージャで確認するようおすすめします。

■プロセスの確認の方法 Windows 7の場合

Ctrl + Shift + Escape を押して、タスクマネージャを起動し、「プロセス」タグに移動します。

リストビューの一覧の中に、実行ファイルがないかどうか探します。

もしあったら、Applicationキーでコンテキストメニューを開き、「プロセスの終了」を選んで Enterキーを押します。

■プログラムの中で、ウィンドウが閉じた時にプロセスも終了するようにする手順

このように、ウィンドウを閉じてもプロセスが残ってしまう場合は、以下のように、プログラムの中にプロセスを終了させる手順を書き加えて下さい。
※例のプログラムは、大幅に省略してあります。

プログラム例=1 ウィンドウを使わないプログラムの場合
────────────────────
  ……(手順)

「完了」を表示する
終了する
────────────────────

プログラム例=2
────────────────────
ウィンドウ1を表示する
待機する

ウィンドウ1とは
ウィンドウを継承する

はじめの手順
初期化する
終わり

初期化する手順

  ……

この閉じた時の手順は、閉じた

 ……

終わり

閉じた手順
終了する
終わり
────────────────────

プログラム例=3
────────────────────
ウィンドウ1を表示する
待機する

ウィンドウ1とは
ウィンドウを継承する

はじめの手順
初期化する
終わり

初期化する手順

  ……

閉じるボタンというボタンを作る

 ……

終わり

閉じるボタンがクリックされた時の手順
自分を閉じる
終了する
終わり
────────────────────
posted by yanikun at 07:47| Comment(0) | TrackBack(0) | produire