タブページのサンプルを修正してみた

プロデルのサンプルフォルダの中にあるサンプルには途中でエラーが発生するものがある。バージョンが上がることで動作が安定しなくなるのは一般的なので修正してみた。
今回の修正は一行のみ
タブページのサンプル

——————————ここから

ーータブページのサンプル
メイン画面を表示する
待機する

メイン画面とは
     ウィンドウを受け継ぐ

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

     初期化する手順
     //この手順は自動生成されたものです
     //編集しないでください
          この内部領域大きさを{292,266}に変える
          この内容を「タブページのサンプル」に変える
          このドラッグドロップを○に変える
          この位置と大きさを{15,15,300,300}に変える
          挿入ボタンというボタンを作る
               その内容を「挿入」に変える
               その移動順を2に変える
               その位置と大きさを{205,12,75,23}に変える
          ラベル1というラベルを作る
               その内容を「タブを追加してください」に変える
               その移動順を3に変える
               その位置と大きさを{12,42,106,12}に変える
          タブフレーム1というタブフレームを作る
               その見出しサイズを{62,17}に変える
               その移動順を4に変える
               そのドラッグドロップを○に変える
               その位置と大きさを{12,57,268,197}に変える
          減らすボタンというボタンを作る
               その内容を「減らす」に変える
               その移動順を2に変える
               その位置と大きさを{93,12,75,23}に変える
          増やすボタンというボタンを作る
               その内容を「増やす」に変える
               その位置と大きさを{12,12,75,23}に変える
               その移動順を1に変える
     終わり

     タブフレーム1が選択された時の手順
          もしタブフレーム1の個数が0なら、抜ける
          ラベル1の内容は、「[タブフレーム1の選択タブの番号]番目が選択されました」
     終わり

     増やすボタンがクリックされた時の手順
          追加タブは、タブフレーム1へ「タブ」を追加したもの
          メモ部品は、追加タブへ文章テキストを作ったもの
          メモ部品の内容は、「メモです」
          メモ部品のドッキング方向を全体に変える
          もし減らすボタンの有効が×なら、減らすボタンの有効を○に変える。
     終わり

     減らすボタンがクリックされた時の手順
          もしタブフレーム1の個数が1以上なら
               タブフレーム1から(タブフレーム1の選択タブ)を消す
          もし終わり
          もしタブフレーム1の個数が0なら、減らすボタンの有効を×に変える。
     終わり

     挿入ボタンがクリックされた時の手順
          選択タブは、タブフレーム1の選択タブ
          もし選択タブが無なら、抜ける
          メモ部品は、選択タブの1番目
          メモ部品の内容は、「[メモ部品の内容][時刻]」

     終わり
終わり

—————————— ここまで

これが正解なのかはわからないけど、エラーを起こすことは無くなった。

修正して時刻が入るようになった

プロデルでファイルを読み表示

サンプルプログラムの順序が逆になってしまったが、プルデルで単純にファイルを読んで画面にテキスト領域に表示する方法を出していなかった。

ファイルを読む
ファイルを読み表示することが出来なければ何も先に進まないので書いておく

——————————ここから

//データを読み込む
データ表を作ってデータとする

データは、「data.csv」から読み込んだもの

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

メイン画面とは
ウィンドウを継承する
はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます

テキスト領域1の内容を,データに変える

終わり
初期化する手順
ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
この内部領域大きさを{852,530}に変える
この内容を「メイン画面」に変える
ボタン1というボタンを作る //——————————– 終わり
その位置と大きさを{770,493,60,25}に変える
その内容を「終了」に変える
その移動順を1に変える
テキスト領域1というテキスト領域を作る
その位置と大きさを{29,23,801,450}に変える
終わり

ボタン1がクリックされた時の手順
終了する
終わり
終わり

——————————ここまで

こんな事をプロデルで実現したい

日本語プログラムには「プロデル」以外にも「なでしこ」や「MIND」がある。歴史が最も古い「MIND」が今年から無償となりもしかしたら今後話題になるかもしれない。

私は「なでしこ」を業務を簡略化するために数年前から使っているので思考ベースがどうしても「なでしこ」になってしまい。「なでしこ」にある機能を使いたい欲が出てくる。
プロデルで、このようなことを行いたいと考えている。

今回は「なでしこ」のサンプル

郵便番号のCSVファイルを読み、グリッド表示する

CSVファイルを読んでグリッドに表示
ぐりっとのターゲット行をクリックしたときにその内容を表示

このプログラムのサンプル

——————————ここから

##
## なでしこでCSVファイルを読みグリッドに表示する
##
「{デスクトップ}data.csv」を開いてCSV取得
住所に代入

#グリッドに表示してみる

郵便住所グリッドとはグリッド
郵便住所グリッドのアイテムは住所
そのダブルクリックした時は~
  それは郵便住所グリッドのテキスト
  A=それ\0,4
  B=それ\0,5
  「A={A}{~}B={B}」を言う

——————————ここまで

プロデルでCSVファイルを扱うとき

プロデルでCSVファイルを扱うときにデータ表というものがあり
私はデータ表=スープレッドシートの表だろうと自分勝手に考え、
自分なりの方法で色々とやってみたのだけど全く上手くいかない。
これでは自分が作りたいものが作れない・・困った

結局のところデータ表を一覧にして、レコード毎に取得すれば
出きることが分かったので、こんなサンプルを書いてみた。

データは郵便番号の東京都のデータを[data.csv]として使用した。

郵便番号データダウンロード – 日本郵便
www.post.japanpost.jp/zipcode/download.html
各種郵便番号データのダウンロードはこちらからどうぞ。

プロデルCSV読み込み01

レコード番号を入れてみる
CSVから読み取った

——————————ここから

/*
CSVファイルを読み込み検索した表示(画面)
*/

新しいウィンドウを表示する
待機する

新しいウィンドウとは
     ウィンドウを継承する
     はじめの手順
          初期化する
          ーー貼り付けた部品に対する操作をここに書きます
          //行番号=1
          データ表を作ってデータとする
          データへ「data.csv」から読み込む
          一覧は、データの一覧

     終わり
     初期化する手順
     ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
     この内部領域大きさを{470,434}に変える
     この内容を「メイン画面」に変える
     テキスト領域1というテキスト領域を作る
          その位置と大きさを{36,274,404,85}に変える
          その移動順を17に変える
     終了ボタン2というボタンを作る
          その位置と大きさを{373,386,67,25}に変える
          その内容を「終了」に変える
          その移動順を15に変える
     行番号というテキストを作る
          その位置と大きさを{162,37,60,19}に変える
          その移動順を8に変える
     検索ボタン1というボタンを作る
          その位置と大きさを{255,32,46,20}に変える
          その内容を「検索」に変える
          その移動順を7に変える
     ラベル1というラベルを作る
          その位置と大きさを{36,36,65,12}に変える
          その内容を「レコード番号」に変える
          その移動順を16に変える
     都道府県ラベルというラベルを作る
          その位置と大きさを{36,68,53,12}に変える
          その内容を「都道府県」に変える
          その移動順を1に変える
     住所ラベルというラベルを作る
          その位置と大きさを{36,96,29,12}に変える
          その内容を「住所」に変える
          その移動順を2に変える
     番地ラベルというラベルを作る
          その位置と大きさを{36,131,29,12}に変える
          その内容を「番地」に変える
          その移動順を3に変える
     都道府県かなラベル2というラベルを作る
          その位置と大きさを{36,165,73,12}に変える
          その内容を「都道府県かな」に変える
          その移動順を4に変える
     住所かなラベル2というラベルを作る
          その位置と大きさを{36,198,49,12}に変える
          その内容を「住所かな」に変える
          その移動順を5に変える
     番地ラベル2というラベルを作る
          その位置と大きさを{36,230,49,12}に変える
          その内容を「番地かな」に変える
          その移動順を6に変える
     テキスト1というテキストを作る
          その位置と大きさを{162,68,98,19}に変える
          その移動順を9に変える
     テキスト2というテキストを作る
          その位置と大きさを{162,96,279,19}に変える
          その移動順を10に変える
     テキスト3というテキストを作る
          その位置と大きさを{162,131,279,19}に変える
          その移動順を11に変える
     テキスト4というテキストを作る
          その位置と大きさを{162,165,98,19}に変える
          その移動順を12に変える
     テキスト5というテキストを作る
          その位置と大きさを{162,198,279,19}に変える
          その移動順を13に変える
     テキスト6というテキストを作る
          その位置と大きさを{162,230,279,19}に変える
          その移動順を14に変える
終わり

     検索ボタン1がクリックされた時の手順
          行番号1=行番号の内容
          行番号1の内容を表示する
          レコードは、一覧(行番号1)
          //レコードを報告する

          テキスト1の内容を「[レコード(7)]」に変える
          テキスト2の内容を「[レコード(8)]」に変える
          テキスト3の内容を「[レコード(9)]」に変える
          テキスト4の内容を「[レコード(4)]」に変える
          テキスト5の内容を「[レコード(5)]」に変える
          テキスト6の内容を「[レコード(6)]」に変える
          テキスト領域1の内容を「[レコード]」に変える

     終わり

終了ボタン2がクリックされた時の手順
          終了     
     終わり
終わり

-—————————ここまで

ここ数日プロデルを学習中

サンプルプログラムを元に
こんなサンプルを作ってみた。

SQLiteを操作するサンプル

// プロデルからSQLiteデータベースを操作する例(改造-画面追加)

——————————ここから

// プロデルからSQLiteデータベースを操作する例(改造-画面追加)
// プロデルサンプル例に画面とボタン、テキスト蘭を追加
//SQLiteを利用するには、System.Data.SQLite.dllが必要です

「Produire.Data.SQLite.dll」を利用する
SQLiteというSQLiteデータベースを作る

SQLiteのデータソースを、「database.db」に変える
SQLiteへ接続する

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

メイン画面とは
ウィンドウを継承する
はじめの手順
初期化する
ーー貼り付けた部品に対する操作をここに書きます
終わり
初期化する手順
ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
この内部領域大きさを{472,429}に変える
この内容を「メイン画面」に変える
メモメモというテキスト領域を作る
その位置と大きさを{25,213,249,79}に変える
その移動順を4に変える
そのドラッグドロップを×に変える
ボタン1というボタンを作る
その位置と大きさを{320,67,61,28}に変える
その内容を「テーブルを作成する」に変える
その移動順を3に変える
そのドラッグドロップを×に変える
テキスト1というテキストを作る
その位置と大きさを{71,66,134,19}に変える
その移動順を5に変える
そのドラッグドロップを×に変える
テキスト2というテキストを作る
その位置と大きさを{71,110,134,19}に変える
その移動順を1に変える
そのドラッグドロップを×に変える
テキスト3というテキストを作る
その位置と大きさを{71,156,134,19}に変える
その移動順を2に変える
そのドラッグドロップを×に変える
ボタン2というボタンを作る
その位置と大きさを{320,110,61,28}に変える
その内容を「データを取得する」に変える
その移動順を5に変える
そのドラッグドロップを×に変える
ボタン3というボタンを作る
その位置と大きさを{320,151,61,28}に変える
その内容を「データを追加する」に変える
その移動順を6に変える
そのドラッグドロップを×に変える
ボタン4というボタンを作る
その位置と大きさを{320,195,61,28}に変える
その内容を「データを更新する」に変える
その移動順を7に変える
そのドラッグドロップを×に変える
ボタン5というボタンを作る
その位置と大きさを{320,239,61,28}に変える
その内容を「データを削除する」に変える
その移動順を8に変える
そのドラッグドロップを×に変える
ボタン6というボタンを作る
その位置と大きさを{320,287,61,28}に変える
その内容を「テーブルを破棄する」に変える
その移動順を9に変える
そのドラッグドロップを×に変える
ボタン7というボタンを作る
その位置と大きさを{25,380,111,28}に変える
その内容を「SQLiteから切断する」に変える
その移動順を10に変える
そのドラッグドロップを×に変える
終わり

ボタン1がクリックされた時の手順
テキスト1を、クリアする
テキスト1へ「テーブルを、作成する手順」を、先頭へ挿入する
メモメモへ「データを、追加する手順」を、先頭へ挿入する
ボタン1の有効を「×」に変える

//テーブルを、作成する手順
ーーテーブルの作成
SQLiteで「CREATE TABLE 楽曲 (
曲名 TEXT,
アーティスト TEXT,
アルバムID NUMBER);」を実行する
終わり

ボタン2がクリックされた時の手順
テキスト1を、クリアする
テキスト1へ「データを、取得する手順」を、先頭へ挿入する
メモメモへ「データを、追加する手順」を、先頭へ挿入する
ボタン2の有効を「×」に変える

//データを、取得する手順
ーーデータの取得
SQLiteから「SELECT 曲名,アーティスト FROM 楽曲」を取得して結果とする
//「初期状態」として結果の内容を情報アイコンで表示する
メモメモをクリアする
メモメモへ「[結果]」を、先頭へ挿入する

終わり

ボタン3がクリックされた時の手順
//データを、追加する手順
テキスト1を、クリアする
テキスト1へ「データを、追加する手順」を、先頭へ挿入する
メモメモへ「データを、追加する手順」を、先頭へ挿入する

ーーデータの追加
SQL文は、「INSERT INTO 楽曲 (曲名,アーティスト) VALUES (?, ?)」
バインド値は、{「I am your singer」、「サザンオールスターズ」}
SQL文をバインド値としてSQLiteで実行して、件数1とする
テキスト2へ「[バインド値(1)]」を、先頭へ挿入する

バインド値は、{「勝手にシンドバット」、「サザンオールスターズ」}
SQL文をバインド値としてSQLiteで実行して、件数2とする
テキスト3へ「[バインド値(1)]」を、先頭へ挿入する

ーー内容の確認
SQLiteから「SELECT 曲名,アーティスト FROM 楽曲」を取得して、結果とする
「追加後」として「[件数1+件数2]件、追加しました。[改行][結果の内容]」を情報アイコンで表示する
メモメモをクリアする
メモメモへ「[結果]」を、先頭へ挿入する

終わり

ボタン4がクリックされた時の手順
テキスト1を、クリアする
テキスト1へ「データを、更新する手順」を、先頭へ挿入する
メモメモをクリアする
メモメモへ「データを、追加する手順」を、先頭へ挿入する

//データを、更新する手順
ーーデータの更新
SQL文は、「UPDATE 楽曲 SET 曲名=? WHERE 曲名=?」
バインド値は、{「I AM YOUR SINGER」、「I am your singer」}
SQL文をバインド値としてSQLiteで実行して、件数とする

ーー内容の確認
SQL文は、「SELECT 曲名,アーティスト FROM 楽曲 WHERE 曲名=?」
バインド値は、{「I AM YOUR SINGER」}
SQLiteからSQL文をバインド値として取得して、結果とする
//「更新後」として「[件数]件、更新しました。[改行][結果の内容]」を情報アイコンで表示する
メモメモをクリアする
メモメモへ「[結果]」を、先頭へ挿入する
終わり

ボタン5がクリックされた時の手順
テキスト1を、クリアする
テキスト1へ「データを、削除する手順」を、先頭へ挿入する
メモメモへ「データを、追加する手順」を、先頭へ挿入する

//データを、削除する手順
SQLiteから「SELECT 曲名,アーティスト FROM 楽曲」を取得して、結果とする
ーーデータの削除
SQL文は、「DELETE FROM 楽曲 WHERE アーティスト=?」
バインド値は、{「サザンオールスターズ」}
SQL文をバインド値としてSQLiteで実行して、件数とする

ーー内容の確認
SQLiteから「SELECT 曲名,アーティスト FROM 楽曲」を取得して、結果とする
//「削除後」として「[件数]件、削除しました。[改行][結果の内容]」を情報アイコンで表示する
メモメモをクリアする
メモメモへ「削除しました。」を、先頭へ挿入する
終わり

ボタン6がクリックされた時の手順
テキスト1を、クリアする
テキスト1へ「テーブルを、破棄する手順」を、先頭へ挿入する
メモメモをクリアする
メモメモへ「テーブルを、破棄する手順」を、先頭へ挿入する
ボタン6の有効を「×」に変える

//テーブルを、破棄する手順
ーーテーブルの破棄
SQLiteで「DROP TABLE 楽曲」を実行する
終わり

ボタン7がクリックされた時の手順
SQLiteから切断する
終了
終わり

テキスト領域が内容が変化した時の手順
テキスト1を、クリアする
メモメモへ「テーブルを、破棄する手順」を、先頭へ挿入する

終わり
終わり

——————————ここまで