完成図オブジェクトリストレポート一覧イベント説明
トップ|ゴミの日トップ|手順0手順1手順2手順3得・技
「桐」でカレンダー!!
今回のテーマは 
V8sp6 でつくる『ゴミの日カレンダー』
はじめまして
【多遊】です
よろしく
お願い致します


似顔絵ではありませんが、気にいってます
 普段なにげなく使用している「カレンダー・こんなに身近なものでも、いざ作成すると、とまどうことがありませんか?
作成方法は、作成月の1日の曜日を求め、月末日付までを順に並べていく・・ただそれだけなのに・・!!

 今回「カレンダー・・」をテーマに選んだ理由は、作成後「32日」があったり、「スタート曜日が違ったり」すれば、プログラムが間違ってる事がすぐ目で見てわかりますね。

 プログラムの第一歩は、出来るものから形にすることですね。自分で作成したものが思い通りに動いたときは、大変うれしいものがあります。「ゴールが見えてる」・・このように、答えがわかってる物の「途中の式」を作成する感じで、ご紹介していきたいと思います

おまけ・・(こちらがメイン?)
 ただ、カレンダー作成だけではおもしろくないので「ゴミの日」を、表示・印刷できるようにしてみました。ゴミの収集作業も大変でしょうが、分別管理もけっこう大変ですね。そして、つい出し忘れるとまた一ヶ月待たなくては・・・(どんな所に住んでるんだ?)

 話をもどします。内容は簡単ですが、このカレンダーを最後まで作成された頃は、桐の「フォーム・表・イベント・レポート」の役割・概念、また「変数管理」など修得されてることでしょう。つたない文章ですが、最後まで読み終え、是非、桐のすばらしさを、ご体験下さい。


お詫び:紙面の都合で、桐のインストール方法や、「表・フォーム等の作成方法」は、省略していま。最小限、下記を出来る方を対象者とさせて頂いてます。

ここは、完璧にマスターしてね
◇ 表操作では、
ファイル名・項目名・データ型・計算式等の提示により、新規表が作成できる。
例:[内容]文字列:計算式「※※※※※※※※※」
  上記で、項目名=内容、データ型=文字列、項目計算式=※※※※※※※※※
  
◇ フォーム操作では
ファイル名指定で、新規フォーム作成ができ、オブジェクトの属性が変更できる
例:テキストオブジェクトを配置。ソース「※※※※※」、背景「※※※※※」など
  このような条件が設定できる(もちろん記載されていないところは任意です)
  
◇ イベント操作では、
ファイル名の指定によりイベントファイルが作成できる
例:名札 メイン・・・・←この行を、自動作成&保存まで、できる
  
◇ レポートでは
レポートは、新規作成ウイザードを利用して、できるだけ詳しく説明いたします。
  
不明な点は別途ご質問下さい。(基本ですから頑張りましょう)


作成までの手順(0.作成までの考え方)詳細

 桐は、「データベースソフト」であって、ワープロソフトや表計算ソフトとは多少違いますね。今回、カレンダー作成にあたって桐を、どのように利用するか考えてみましょう。小学生でも出来そうなカレンダーがテーマで恐縮です・・・。

 仮に、ワープロソフトでの作成した場合は、毎月書き換えるのは面倒くさいし、表計算ソフトではデータ行に制限があるし、ということで「データベース」を利用してみます

 桐では、数万行以上の場合も処理可能です。一番身近な物には「郵便番号変換」を、イメージ下さい。7桁の数字を入力し、住所を表示することなど、たった一行の計算式で行えます。ただ、今回のカレンダー作成では、残念ですが、50行くらいしか使用しません。

では「ゴミの日カレンダー」作成にあたって、桐をどのように利用するか考えてみましょう。
  • 表・・・
    • 桐では、データは主に表(tbl)に保存します。データの保存量は、一般使用では、不自由しないくらいの大きなファイルが利用できます。桐で扱える年月は、「西暦年 1年 1月 〜 65,535年 12月 」まで扱えます。しかし、今回テーマーのカレンダーでは、これを全部データとして持つのは無意味ですね。今回は、計算式を利用して、変数を利用します
      理由:なんでも触ってみたくなりますね、カレンダーの場合は西暦何年から「昭和」だろうとか、明治の前は、「??」だろうと。
      それを、いちいちデータを作成してたらもったいないですね。それで、変数方式にしました。

    • それでは表は不要かといいますと、ゴミの区分や、第○曜日などを入力保存する表を作成します。
      印刷の都度、「第○曜日は○○の日」など入力する方が大変ですからね。

      ※上記で「データは主に表(tbl)に保存します」と紹介しましたが、他には、変数値を保存する方法があります。変数保存の、主な利用方法は、同一プログラムを異なる環境で使用するときなどの「環境情報保存」などに、利用します

    • 印刷時のデータは、別表を作成し対応します。変数には1ヶ月の画面表示用データが入ってますが、印刷は複数月を行います。そのため表を利用してデータを必要な月数分保存を行います。書き出しや、読み込み方法も紹介しています
  • フォーム・イベント・・・
    • 桐では通常、表(tbl)・フォーム(wfm)・イベント(kev)ファイルをセットとで、利用する場合が多いです。
      表(データ保存)・フォーム(レイアウト表示)・イベント(プログラム処理)として同一ファイル名(拡張子は別)で、作成します。

    • 今回フォームは、カレンダーの表示部分として利用します。また、後半では、ゴミの日の区分や曜日入力用も配置します。
      そのほか、コマンドボタンを配置し、プログラムの実行をマウスクリックだけで行えるようにもします。

    • イベントファイルは、単独では利用できません。フォームのコマンドボタンだけで利用できる機能もたくさんありますが、少し複雑な処理を行いたい時など利用します。今回はカレンダーの作成・印刷時のデータ作成など行ってます

  • レポート・・・
    • データを画面でみるときは必要ありませんが、印刷するときに必要です。(簡単なものでしたら画面コピーでも可能ですが)

    • 印刷専用の表を利用し、レイアウトだけの変更で2種類作成します

  • 変数・・・・・今回は、変数も詳しく説明を書いております。(量が多ければいいという訳ではないのですが・・・・)

    変数の種類は、別記致しますが、ここでは、利用方法をご紹介します。
    • 今回テーマのカレンダーでは、画面に「○○年△△月」と表示し、「各曜日の下に1日〜月末までの日にち」を表示します
      パソコンで処理するときは「1日専用」〜「31日専用」のオブジェクトを作成し、月によって移動表示を行うのではなく、その場所に変数を配置しておき、変数値を入れ替えて表示します

      ある月が 日月火水木金土  @のカレンダー
           1234567   だとします

      それを  日月火水木金土  Aのカレンダー
              1234   に、変更する場合の変数の動きは

      先に、変数を配置しておきます
           日月火水木金土
           ABCDEFG

      次に「A=1,B=2,C=3,D=4,E=5,F=6,G=7」の式を実行すると、@のカレンダーが表示されます
      次に「A= ,B= ,C= ,D=1,E=2,F=3,G=4」の式を実行すると、Aのカレンダーが表示されます
      このように、計算式の実行だけで、異なる月のカレンダーを表示することができます
      注:桐の変数は、最初に「&」を必ず付けます。また、上記のAのように表示する場合は「A〜C」の変数を、空白(桐では未定義と呼びます)に、戻す必要があります。未定義の書き方は「&A=#未定義」このように書きます

    • 変数の使用範囲や、内容によって、使いわけることも出来ます
      今回のカレンダーでは、プログラムのなかで使用されている「年月日」は、非常に重要です
      呼び出す場所によって返って来る値が異なるとカレンダーは、意味を持ちません。「年月日」の変数値が変更されたら、必ず表示部分も更新するようにします。

      また、単に作業を行う為に必要な変数もあります。こちらは、その都度、値を代入して使用します。

      変数の使い方次第でプログラムも長くなったり短くなったり、またわかりやすかったりそうでなかったりします。

作成までの手順(1.カレンダー表示まで)詳細
  • フォームの作成・・カレンダーを表示するフォーム
    • 日曜〜土曜までのラベルオブジェクト
    • 日付を表示するテキストオブジェクト
    • 年月を選択する為のボタンオブジェクト
    • 現在の年月を表示するテキストオブジェクト

  • イベントの処理・・変数設定〜カレンダー表示まで
    • 今回、カレンダーの日付は、総て変数で持ちます
    • 月々の1日の曜日と最終日付を求め、変数に代入
    • 決まった年月のカレンダー作成(変数代入と表示)

  • 表・・この時点ではまだ作成しません
ここまでで、万年カレンダーが作成できます。(ここまでの練習は、「ゴミの日予備.wfm・ゴミの日予備.kev」を参照ください)

作成までの手順(2.ゴミの日処理を追加)詳細

※先ほどの、「ゴミの日予備.wfm・ゴミの日予備.kev」を利用して作業を行います。名前は「ゴミの日.wfm・ゴミの日.kev」として、保存してください
  • フォームの作成・・ゴミの日部分を表示するスペース確保
    • ゴミの日表(tbl)を表示するオブジェクト。(今回は伝票形式にて作成)
    • 編集モードを設定するボタンオブジェクト等作成フォーム作成基本です
    • カレンダー本体にゴミ区分を表示するテキストオブジェクト
      少しイベントの仕掛けも・・・

  • イベントの処理・・ゴミの日のデータ入力〜カレンダーに表示まで
    • 表(tbl)への入力。入力後のエラー判定
    • 起動時や編集後の変数への代入
      (最後に完成編で紹介いたします)

  • 表・・ゴミの日区分用のテーブル作成

    • 表の内容と主な項目
      項目名 データ型 項目計算式 説明
      内容 文字列 具体的に、「可燃物・不燃物・ペットボトル・・・」等を入力
      文字列 第○週など、例外で「毎週」にも対応
      曜日 文字列 ○曜日を入力
      週数 整数 #条件選択(#数値([週])>0,#数値([週])) 桐で計算するのに「毎週×曜日」みたいなことはできません
      そこで、「日=1・月=2・・・土=7」のように数字に置き換えして計算に利用します
      曜数 整数 #文字位置("日月火水木金土",[曜日])
      重複 整数 ([週数]-1)*7+[曜数] 同じ日付に別の内容を重複設定しているか?のチェック用

      「週数・曜数」は、計算しやすいように、表に作成しますが、フォーム(wfm)には表示の必要はありません。
      作成中は、表に仮のデータを入力し、正しい計算式の確認をします

    • 他にも、値集合や、項目制約など行ってます。詳細は、表(tbl)の説明にて
作成までの手順(3.レポート印刷処理)詳細
  • フォームの作成・・レポート用追加
    • ゴミの日カレンダーを印刷するボタンオブジェクト
      今回は「1頁2ヶ月用・1頁4ヶ月」を作成。・・レポートの種類が多い場合は印刷メニュー専用のフォームを作成して対応しますが、今回は2種類ですので、それぞれ専用ボタンで対応します

  • イベントの処理・・印刷データの作成だいたいわかりました?
    • 印刷データの作成。月数に応じた書き出し
    • 印刷用表への読み込み
      (最後に完成編で紹介いたします)

  • 表・・ゴミの日レポート用の表(tbl)を作成
    • 印刷レポートに必要な項目・・・
      年月・カレンダー日付・ゴミの内容区分
    • 他に、印刷とは関係ありませんが、チェック用も作成しています

  • レポートの作成
    • 今回は「1頁2ヶ月」と、「1頁4ヶ月」の、2種類を作成します。
    • 単に2倍にするのではなく、段組の利用で簡単に変更します
お断り:プログラム作成の関係で、この紹介文と異なる部分が発生するかも知れません。その場合、プログラムの方を優先下さい

top