2014年02月02日

基本的なウィンドウ部品の配置例 その2 参照ウィンドウ

今回は、ファイル / フォルダのパスを設定するためのウィンドウを紹介します。
外部アプリケーションや、ルートのフォルダを指定するために、いろいろなプログラムの設定メニューなどから開く、例のダイアログボックスです。

──────────────────────────────
■字下げを含んだプログラム(ウィンドウのみ)
──────────────────────────────

ウィンドウ1を表示する
待機する

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

  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり

  初期化する手順
    この内部領域大きさを{353、103}に変える
    この内容を「参照画面」に変える
    このドラッグドロップを○に変える
    この初期位置を「中央」に変える

    ラベル1というラベルを作る
      その内容を「ファイル名」に変える
      その位置と大きさを{13、13、39、12}に変える

    テキスト1というテキストを作る
     その位置と大きさを{13、29、244、19}に変える

    ボタン1というボタンを作る
      その内容を「参照」に変える
      その位置と大きさを{264、24、75、23}に変える

    ボタン2というボタンを作る
      その内容を「OK」に変える
      その位置と大きさを{182、67、75、23}に変える

    ボタン3というボタンを作る
      その内容を「キャンセル」に変える
      その位置と大きさを{264、67、75、23}に変える

  終わり

終わり

──────────────────────────────
■字下げを削除したプログラムと、簡単な使用例
1.実行ファイルのパスを設定する
──────────────────────────────

ウィンドウ1を表示する
待機する

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

はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
終わり

初期化する手順
この内部領域大きさを{353、103}に変える
この内容を「参照画面」に変える
このドラッグドロップを○に変える
この初期位置を「中央」に変える

ラベル1というラベルを作る
その内容を「ファイル名」に変える
その位置と大きさを{13、13、39、12}に変える

テキスト1というテキストを作る
その位置と大きさを{13、29、244、19}に変える

ボタン1というボタンを作る
その内容を「参照」に変える
その位置と大きさを{264、24、75、23}に変える

ボタン2というボタンを作る
その内容を「OK」に変える
その位置と大きさを{182、67、75、23}に変える

ボタン3というボタンを作る
その内容を「キャンセル」に変える
その位置と大きさを{264、67、75、23}に変える

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

終わり

ーー参照
ボタン1がクリックされた時の手順
開く画面の種類を、「アプリケーション|*.exe|すべてのファイル|*.*」に変える
//この例では、[開く画面]で表示されるファイルの種類を、
//実行ファイル .exe に絞り込んでいます。
//一応、念のために すべてのファイル をドロップダウンリストの選択肢に
//加えています。

開く画面のフォルダ名を、「[プログラムファイル]」に変える
//プロデルの基本フォルダの記述から[プログラムファイル]を指定します。
//32bit版Windowsでは C:\Program Files\
//64bit版Windowsでは C:\Program Files (x86)\
//のフォルダが、それぞれ開いた状態でダイアログボックスが表示されます。

開く画面を表示する
//Windows標準の「ファイルを開く」ダイアログボックスが表示されます。

もし 開く画面のキャンセルは、○ なら 手順から抜ける
//ファイルを開くダイアログボックスがキャンセルされた時は、
//以降の処理はキャンセルされます。

テキスト1の内容を、「[開く画面のファイル名]」に変える
//ファイルを開くダイアログボックスの、ファイル名の欄の
//ファイル名を[開く画面のファイル名]という変数に代入して、
//それを、ウィンドウのテキスト1に入力します。

終わり

ーーOK
ボタン2がクリックされた時の手順
もし、テキスト1の内容が「」でないなら
//ユーザーが入力していなかったり、参照ボタン(ボタン1)から
//ファイル名を入力していない場合を想定して、テキスト1が空なら、
//以降の処理を実行しない、言い換えると、テキスト1に入力されている時だけ
//以降の処理が実行されるように、もし文を使って指定しておきます。

「[テキスト1の内容] を登録します。」を情報アイコンで表示する
//ここではメッセージボックスで結果を表示していますが、
//実際のプログラムでは、設定ファイルに書き込んだりする手順が
//必要になります。
//その場合は、設定ファイルに書き込むなどの命令文を書いてから
//メッセージを表示するようにします。

自分を閉じる
//一連の処理を終えてから、ウィンドウを閉じます。

もし終わり
終わり

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

終わり

──────────────────────────────
■字下げを削除したプログラムと、簡単な使用例
2.ルートのフォルダを設定する
──────────────────────────────

ウィンドウ1を表示する
待機する

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

はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
終わり

初期化する手順
この内部領域大きさを{353、103}に変える
この内容を「参照画面」に変える
このドラッグドロップを○に変える
この初期位置を「中央」に変える

ラベル1というラベルを作る
その内容を「フォルダ名」に変える
その位置と大きさを{13、13、39、12}に変える

テキスト1というテキストを作る
その位置と大きさを{13、29、244、19}に変える

ボタン1というボタンを作る
その内容を「参照」に変える
その位置と大きさを{264、24、75、23}に変える

ボタン2というボタンを作る
その内容を「OK」に変える
その位置と大きさを{182、67、75、23}に変える

ボタン3というボタンを作る
その内容を「キャンセル」に変える
その位置と大きさを{264、67、75、23}に変える

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

終わり

ーー参照
ボタン1がクリックされた時の手順
フォルダ選択画面の説明を、「フォルダを選択してから OK のボタンを押して下さい。」に変える
//この説明は、任意のものに変えることが出来ます。

フォルダ選択画面を表示する
//Windows標準のフォルダ選択のダイアログボックスが表示されます。

もしフォルダ選択画面のキャンセルなら、手順から抜ける
テキスト1の内容を、フォルダ選択画面のフォルダ名に変える
//ダイアログボックスで選択したフォルダ名を、テキスト1に入力します。

終わり

ーーOK
ボタン2がクリックされた時の手順
もし、テキスト1の内容が「」でないなら
「[テキスト1の内容] を登録します。」を情報アイコンで表示する
自分を閉じる
もし終わり
終わり

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

終わり

──────────────────────────────
【produireの最新記事】
posted by yanikun at 03:26| Comment(0) | TrackBack(0) | produire

2014年02月01日

基本的なウィンドウ部品の配置例 その1 入力ウィンドウ

こんにちは、yanikunです。ご無沙汰でした。
久しぶりにブログを更新します。

これまでも、いくつかウィンドウに部品を配置したプログラムの例を掲載してきましたが、今回から何回か、基本的な部品を配置したウィンドウのプログラムを掲載することにします。

ウィンドウを使わずに、文字列や配列を扱うプログラムも出来ますが、用途や機能が限定されがちです。また、古くからのパソコンユーザーはともかく、私も含めて新しいユーザーは、ウィンドウ上にボタンやリストなどが配置されたプログラムに馴染んでいるため、使い勝手の面からもウィンドウは必要だというのが私の考えです。

なお、前に書いた記事の内容を、かなり忘れてしまっているために、重複した記述があるかもしれませんが、ご容赦を。

記事のスタイルは、次のようになります。

1.字下げを含んだプログラム。
※字下げは Tab を全角スペース×2文字に置き換えています。

2.字下げを削除したプログラムと、簡単な使用例。
※プログラムの説明は、こちらに記載します。

■部品の配置の順番について

私は、ウィンドウの中での部品の配置は、出来るだけタブインデックスの順番通りにプログラムを書くようにしています。
タブインデックスというのは、ウィンドウ上でTabキーを押して、フォーカスを移動していく時の順番のことです。

その移動順を3に変える

という書き方もプロデルにはあるのですが、部品の数が多くなってくると、訳がわからなくなって 混乱してしまうため、タブインデックスの順番通りに書くようにしている、というわけです。

──────────────────────────────
■字下げを含んだプログラム(ウィンドウのみ)
──────────────────────────────

入力ウィンドウを表示する
待機する

入力ウィンドウとは
  ウィンドウを継承する

  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり

  初期化する手順
    この内部領域大きさを{262、96}に変える
    この内容を「入力ウィンドウ」に変える
    このドラッグドロップを○に変える
    この初期位置を「中央」に変える

    ラベル1というラベルを作る
      その内容を「入力して下さい。」に変える
      その位置と大きさを{13、13、39、12}に変える

    テキスト1というテキストを作る
      その位置と大きさを{13、29、238、19}に変える

    ボタン1というボタンを作る
      その内容を「OK」に変える
      その位置と大きさを{95、60、75、23}に変える

    ボタン2というボタンを作る
      その内容を「キャンセル」に変える
      その位置と大きさを{176、60、75、23}に変える

  終わり

終わり

──────────────────────────────
■字下げを削除したプログラムと、簡単な使用例
──────────────────────────────

入力ウィンドウを表示する
待機する

入力ウィンドウとは
ウィンドウを継承する

はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
//ウィンドウを作成(初期化)したあとに、ウィンドウ上の部品に対して
//何らかの操作や処理・入力などの必要があれば、ここに命令文を書きます。

終わり

初期化する手順
この内部領域大きさを{262、96}に変える
この内容を「入力ウィンドウ」に変える
このドラッグドロップを○に変える
// ↑ この一行は、お約束で自動的に書き込まれます。不要なら削除して下さい。

この初期位置を「中央」に変える
//Windows標準のダイアログ(メッセージ)ボックスは、画面中央に表示されますが、
//自分で作成したウィンドウは、表示位置が一定ではありません。
//視覚障害者の中で、視野が狭い弱視のユーザーには操作が困難になります。
//そのため、ウィンドウの初期の表示位置を中央に指定しています。
//ただし、絶対必要というものではありません。

ラベル1というラベルを作る
その内容を「あなたの名前を入力して下さい。」に変える
//次のテキスト部品に、名前を入力するよう促しています。
//必要に合わせてこのラベルの内容を書き換えて下さい。
//PC-talkerでは、[ラベルの内容] のエディット 文字入力 とガイドされます。

その位置と大きさを{13、13、39、12}に変える

テキスト1というテキストを作る
その位置と大きさを{13、29、238、19}に変える
//パスワードを入力してもらう場合は、
//そのパスワード文字を「●」に変える
//と書くことによって、入力された文字が隠されて ● で表示されます。
//また、PC-talkerでは「パスワード入力」とガイドされるようになります。
//他には「*」も指定できます。

ボタン1というボタンを作る
その内容を「OK」に変える
その位置と大きさを{95、60、75、23}に変える

ボタン2というボタンを作る
その内容を「キャンセル」に変える
その位置と大きさを{176、60、75、23}に変える

この決定ボタンを、ボタン1に変える
//決定ボタンというのは、ウィンドウ上で Enterキーが押された時に
//どのボタンの処理が実行されるのかを指定するものです。
//この例では、ボタン1 = 「OK」というボタンをクリック または押した時と
//同じ手順が実行されます。
//ユーザーが、変換文字の確定などと間違えて操作することが予想される時は、
//この設定はしないほうがいいでしょう。

この取消ボタンを、ボタン2に変える
//取消ボタンというのは、ウィンドウ上で Escapeキーが押された時に
//どのボタンの処理が実行されるのかを指定するものです。
//この例では、ボタン2 = 「キャンセル」というボタンをクリック または押した時と
//同じ手順が実行されます。

終わり

ーーボタン1 = OK
ボタン1がクリックされた時の手順
「こんにちは、[テキスト1の内容]さん。」を表示する
//テキスト1に入力された文字列 = [テキスト1の内容] を変数にして、
//「こんにちは、[テキスト1の内容]さん。」というメッセージを表示します。

終わり

ーーボタン2 = キャンセル
ボタン2がクリックされた時の手順
自分を閉じる
//処理をキャンセルして[自分] = 入力ウィンドウを閉じます。

終わり

終わり

──────────────────────────────
posted by yanikun at 10:23| Comment(0) | TrackBack(0) | produire

2013年08月12日

配列 その11 前回の記事のプログラムの説明

■配列 その11 前回の記事のプログラムの説明

プログラムの説明:
──────────────────────────────
「Produire.WinControl.dll」を利用する

ウィンドウ1を表示する
待機する

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

はじめの手順
初期化する
名簿(1)は、{「青山」、「23」、「男」}
名簿(2)は、{「木村」、「54」、「男」}
名簿(3)は、{「鈴木」、「37」、「女」}
名簿(4)は、{「中村」、「28」、「男」}
名簿(5)は、{「村田」、「60」、「女」}
名簿(6)は、{「山田」、「45」、「男」}
//[名簿]という2次配列を作成します。

名簿を要素にそれぞれ繰り返す
//その配列を、要素ごとに繰り返して処理します。

名字は、要素(1)
//[名簿]という2次配列の要素は、{名字、年齢、性別}という配列なので、
//その要素番号1を[名字]という変数に代入します。
//[名前]という変数名は、エラーになることがあるので[名字]にしています。

年齢は、要素(2)
//[名簿]という2次配列の要素は、{名字、年齢、性別}という配列なので、
//その要素番号2を[年齢]という変数に代入します。

性別は、要素(3)
//[名簿]という2次配列の要素は、{名字、年齢、性別}という配列なので、
//その要素番号3を[性別]という変数に代入します。

リストビュー1に、名字を追加する
//[名字]という変数に代入した配列の要素=それぞれの名字を、
//リストビュー1の一覧に追加していきます。

その詳細を、{[年齢]、[性別]}に変える
//リストビューの表示を「詳細」にしてあるので、上の命令文で追加した項目に、
//それぞれ対応する項目を追加していきます。
//この詳細の追加は、配列形式で項目を指定します。
//ここでは、[年齢] [性別] という変数に代入したデータを追加しています。
//この命令文は、次のように書くことも出来ます。タイプ数が少なくなります。
//その詳細は、{[年齢]、[性別]}

繰り返し終わり
終わり

初期化する手順
この内部領域大きさを{359、188}に変える
この内容を「ウィンドウ1」に変える

ラベル1というラベルを作る
その内容を「名簿」に変える
その位置と大きさを{13、13、39、12}に変える

リストビュー1というリストビューを作る
その位置と大きさを{13、29、121、143}に変える
その表示方法を「詳細」に変える
//リストビューの表示設定を「詳細」にします。
//こうすると、Explorerの詳細表示と似た形になります。

その見出し一覧を{「名字」、「年齢」、「性別」}に変える
//「見出し一覧」は、リストビューの上部にある「カラム」と呼ばれる部分です。
//Explorerでは、名前・サイズ・種類・更新日時…などになっています。
//横に並んだ各項目の途中に区切りを入れて見やすく整えるものです。
//そして、それぞれの「見出し」に配列の要素を格納していくようになっています。

その見出し幅を{45,38,38}に変える
//見出し(カラム)の横幅を指定します。単位はピクセルです。

その罫線を○に変える
//音声では関係ありませんが、リストビューの項目ごと・カラムごとに
//罫線を引くことによって見やすくすることが出来ます。
//将来的に一般に公開する時に、晴眼者や弱視のユーザーには親切な設定になります。

ボタン1というボタンを作る
その内容を「男」に変える
その位置と大きさを{141、29、75、23}に変える

ボタン2というボタンを作る
その内容を「女」に変える
その位置と大きさを{141、59、75、23}に変える

ボタン3というボタンを作る
その内容を「年齢 上」に変える
その位置と大きさを{141、89、75、23}に変える

ボタン4というボタンを作る
その内容を「年齢 下」に変える
その位置と大きさを{141、119、75、23}に変える

ラベル2というラベルを作る
その内容を「結果」に変える
その位置と大きさを{222、13、39、12}に変える

テキスト領域1というテキスト領域を作る
その位置と大きさを{222、26、121、146}に変える

ボタン5というボタンを作る
その内容を「閉じる」に変える
その位置と大きさを{141、149、75、23}に変える
この取消ボタンを、ボタン5に変える
//「取消ボタン」を、ウィンドウを閉じるボタンに割り当てることによって、
//Escapeキーを押した時にウィンドウを閉じるように設定することが出来ます。

終わり
//ウィンドウ1の初期化の終わりです。

ーー男
ボタン1がクリックされた時の手順
テキスト領域1をクリアする
//以下の手順で得られた結果を書き出すために、
//テキスト領域をあらかじめクリアしておきます。

配列は、リストビュー1の詳細一覧
//[配列]という変数に、リストビューの詳細一覧(2次配列)を代入します。

男は、配列から「男」を探したもの
//[配列]の要素の中から「男」というキーワードを探します。
//ヒットしたら、その要素番号を[男]という変数に代入します。

もし、男が「{}」でないなら
//ここでは、確実に存在(ヒット)するキーワードを探していますが、
//ヒットするかどうかわからないケースを想定して、
//「もし文」によって、エラーを回避しています。

男を要素にそれぞれ繰り返す
結果は、配列([要素])
//[男]という変数に代入されたデータは、配列の形になっています。
//その配列を、要素ごとに繰り返して処理していきます。
//参考:配列 その6 http://talk-pc.sblo.jp/article/70078098.html?1372824930

名字は、結果(1)
//[結果]は、指定されたリストビューの項目のデータが配列の形で戻ってきます。
//例:要素番号 2 = {青山,23,男}
//ここでは[名字]を使いたいので、[結果]の1番目の要素を指定します。

名字を、テキスト領域1に改行して挿入する
//上で得られたデータ[名字]を、テキスト領域に挿入します。
//テキスト領域への文字列の挿入は、テキスト領域の[内容]の最後の位置に挿入されます。
//一行に一人ずつ[名字]を表示させたいので、「改行して挿入」を使います。

繰り返し終わり
もし終わり
終わり

ーー女
ボタン2がクリックされた時の手順
テキスト領域1をクリアする
配列は、リストビュー1の詳細一覧
女は、配列から「女」を探したもの
もし、女が「{}」でないなら
女を要素にそれぞれ繰り返す
結果は、配列([要素])
名字は、結果(1)
名字を、テキスト領域1に改行して挿入する
繰り返し終わり
もし終わり
終わり

ーー年齢 上
ボタン3がクリックされた時の手順
配列は、リストビュー1の詳細一覧
//「詳細一覧」は、リストビューが「詳細」表示の時の設定項目です。
//リストビューの一列が2次配列の「行」、
//横に配置された見出し(カラム)が2次配列の「列」
//を表しています。

配列を『
//『 』 で括られた部分の手順は、「匿名手順」という手順です。
//匿名手順は、簡単に言うと、手順の「入れ子」のようなものです。
//匿名手順の中で得られる結果を、その前後の手順の引数として渡したり、
//その前後の手順の中の変数に代入することが出来ます。
//このプログラムでは、「名簿」という2次配列の要素を、
//匿名手順の変数として、その手順の中に代入して、それぞれの要素の大小を
//比較して並び変えていきます。

それを{左,右}とみなす
//比較する要素を {左,右} という並び替えのための配列に代入します。

もし左(2)>右(2)なら
-1を返す
//大小を比較する年齢は、各要素の2番目の要素なので (2) と添え字で指定します。
//「左」に代入された年齢が、「右」の年齢よりも大きければ、
//-1 という値をかえします。

他でもし左(2)<右(2)なら
1を返す
//「左」に代入された年齢が、「右」の年齢よりも小さければ、
//1 という値を返します。

そうでなければ
0を返す
//「左」に代入された年齢が、「右」の年齢と同じなら、
//0 という値を返します。

もし終わり
』で並び替える
//以上の匿名手順で得られた結果で、元の「名簿」の配列を並び変えます。

リストビュー1をクリアする
//並び変えた配列を表示酢るために、いったんリストビューの
//全ての項目を消去(クリア)します。

配列を要素にそれぞれ繰り返す
//並び変えられた配列を、要素ごとに処理していきます。

要素(1)を、リストビュー1に追加する
//要素(1)=名字を、リストビューの項目に追加します。

その詳細を、{[要素(2)]、[要素(3)]}に変える
//要素(2)=年齢、要素(3)=性別を、
//対応する名字の行に追加していきます。

繰り返し終わり
リストビュー1にフォーカス
終わり

//上の手順の説明は、読んでいてもよくわからないかもしれません。
//なにしろ、書いている当人が、よくわからないまま書いていますので。
//とりあえず、こうした並び替えの手順が必要な時には、
//プログラムをそのままコピーして使って下さい。
//その際、比較する要素が、配列の何番目にあるのかに注意して書き替えて下さい。

ーー年齢 下
ボタン4がクリックされた時の手順
配列は、リストビュー1の詳細一覧
配列を『
それを{左,右}とみなす
もし左(2)<右(2)なら
//前の手順とは逆に 左(2)<右(2) となっています。
//ここでは[左]の要素が[右]の要素よりも小さいなら〜
//という判断文に変わっています。

-1を返す
他でもし左(2)>右(2)なら
//当然、ここも前の手順とは逆になっています。

1を返す
そうでなければ
0を返す
もし終わり
』で並び替える
リストビュー1をクリアする
配列を要素にそれぞれ繰り返す
要素(1)を、リストビュー1に追加する
その詳細を、{[要素(2)]、[要素(3)]}に変える
繰り返し終わり
リストビュー1にフォーカス
終わり

ーー平均年齢
ボタン5がクリックされた時の手順
年齢配列は、{}
//「年齢配列」という、要素数を限定しない配列を、あらかじめ作成しておきます。
//この配列に、元の配列から[年齢]という要素を追加していって、
//その平均を求めます。

配列は、リストビュー1の詳細一覧
配列を要素にそれぞれ繰り返す
要素(2)を、年齢配列に加える
繰り返し終わり
値は、年齢配列の平均
平均年齢は、値を-2で四捨五入したもの
//小数点以下の数値が多いので、2桁までで四捨五入します。

「[平均年齢]才」を表示する
終わり

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

終わり
──────────────────────────────
posted by yanikun at 08:45| Comment(0) | TrackBack(0) | produire