戻る


裏技・表技・全力あげて、○得情報
ここだけ読んでも役立つかも!




コマンドボタンの処理
  • 年月表示部分(テキストオブジェクト)
    今回は、イベントの中で、起動時に「&作業日付=#日時値」を利用して日付を取得。以降は「年−・月−・月+・年+」のコマンドボタンで、年月の増減を行ってます。つまり、実際に手入力の必要はありません。このような場合は、トラブル防止のために、計算式の設定や、フォーカス禁止を行います
    • 計算式設定方法・・・「&作業日付」だけでは、計算式になりません。そこで、「"("+変数+")"」みたいに、前後に括弧をつけてみる(この場合、前後に括弧が表示されます)。「""+変数+""」のように、未定義をつけてみる。そのほか、「(変数)」のように変数を直接括弧でくくる場合も計算式と見なされます。これで、不要なフォーカス移動を防げます

    • あとひとつの方法は、フォーカス設定を「禁止」にしてしまいます。これだけで充分な役割を果たします。

  • イベントの発生
    年月表示部分(テキストオブジェクト)には、マウスイベントを設定してあります。

    フォーカスの設定は禁止でも、マウスイベントは利用できます。今回は、「西暦表示と元号表示の切り替え」を、行ってます。イベントは、マウスダウン・マウスクリックのどちらに設定しても結構ですが、発生の順序はダウンイベントが先に発生しますので、ここで、設定した方がいいでしょう。

  • 編集属性式設定
    年月表示部分(テキストオブジェクト)には、編集属性式が、設定してあります。上記マウスイベントで、&元号変数の値を変更しています。その値を利用して、西暦表示と元号表示の切り替えを行ってます。
    式は、「#条件選択(&元号=1,"年の表示形式'元号(漢字1文字)'")」・・意味は「&元号=1」のときだけ、元号(漢字1文字)表示を行ってます(&元号が1で無いときはこの式は評価されません。つまり標準の属性で設定された形式で表示されます)

    年の表示形式には、他にどのようなものが有るかの見方・・・次の操作で、確認できます。
    テキストオブジェクトの属性を表示して、「編集タブ→設定(S)(▼指定値でも可)→日時タブ→年の表示形式→▼」

  • コマンドボタンのフォーカス
    コマンドボタンをクリックしたときフォーカス移動させる方法。
    カーソルキーで操作したときはフォーカスの移動が発生しますが、マウスクリックでは、フォーカスの移動は発生しません。そのような場合、フォーカス設定を「許可」にします。これで、マウスクリックで、フォーカスの移動が発生します

  • 任意コマンドボタンへのフォーカス設定
    起動時のフォーカスは、通常フォーム(オブジェクトリストの中で、フォーカスできる)最上段のオブジェクトに設定されます。
    これを、変更するためには、イベントのフォーム開始に設定します。

    >手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
    >  メソッド呼び出し @b月増.フォーカス設定()

    他に、更新処理から戻るときも利用しています。(イベントの説明で補足があります)

  • オブジェクトの配置と、前後の関係
    は、全然ありませんが、出来るだけ左上から右下へ等意味のある配置に整列しておきましょう

    通常作成した順番に、並んでますが重なり順や、オブジェクトリストの利用で、整列できます。

  • コマンドボタンの標題文字色
    コマンドボタンに制限をかけたいときは、1行目に、実行条件を書きます。この実行条件により、実行禁止表示をさせることができます。また、条件式や内容によっては、ボタンを凹状態にすることも可能です(このときの値は「1・0」を利用します)

おまけ。よくみると+α・・・
完成図には表示されていませんが、コマンドボタンに「年の増減±10年」を作成してあります。ゴミの日カレンダーとしては、必要ありませんが、カレーダーの利用時にあれば、便利ですね。自分の誕生日は、何曜日?など。
普段必要ないコマンドなど、「自分だけの楽しみにご利用ください」くれぐれも、「背景を透明にし、フォーカスの設定は自由に」を、お忘れなく




フォームのカレンダー表示部分のオブジェクト
  • カレンダー表示オブジェクトと、ゴミの日表示オブジェクトは、今回別々に作成しましたので、オブジェクトリストでは、区別されてると思います。今回は、特に入力の必要はありませんので、ソースに変数をセットし、フォーカス禁止に設定してあります。

    このような場合は、必ずしも、左上から配置する必要はありません。カレンダー表示オブジェクトと、ゴミの日表示オブジェクトは別々のグループにしたほうが、それぞれのグループを選択し、属性の変更など共通処理をしたいときに、簡単に42個のオブジェクトを選択できるように工夫も必要です。

  • 罫線・背景・サイズ等は、好みで結構ですが、今回は、日付の部分のサイズは「表示幅:46pt・高さ:20pt」、ゴミの区分表示部分のサイズは「表示幅:50pt・高さ:40pt・テキスト縦位置(指定位置:開始の位置Y24pt」に設定してます
    (たんなる見た目と好みです)
  • ところで、順に作成されたかたは、
    ゴミの区分表示部分のオブジェクトが全面表示されて、カレンダー部分が見えなくなりますね。1個・2個でしたら、重なり順を利用したり、オブジェクトリストの「Shift+↑↓」で、可能ですが、42個もあったら面倒ですね。
    こんな場合は、オブジェクトリストから「t1〜t42」を選択し、いったんワークスペースへ置きます。その後、明細部へ異動します。これで、簡単に順番が変更できますね。




フォーム説明追加
  • 上方のダミーボタン
    コマンドボタン内容は、・・・・表示属性・コマンドの機能は、なにも設定してありません。ただあるだけです。
    理由:イベントからの逃げ処理用です。
    >他に、更新処理から戻るときも利用しています。(イベントの説明で補足があります)
    ここで、利用しています。

  • その下の説明。
    >"内容:半角「9桁以内」♪週 :毎週=「毎週」、他は数字♪第2・4等は、2行で入力"
    ここはたんなる説明の場所ですが
    • ♪(音符)の意味・・・よくみると、画面には表示されていませんね。この「♪」は、強制改行文字として利用されてます
      利用方法・・まず改行文字に使用したい「文字・記号」を決めます。

    • フォームオブジェクト属性→編集タブ→表示編集モード:設定(S)(▼指定値でも可)→改行タブ
      ここの、「表示強制改行文字」または、「非表示強制改行文字」を入力します。(違いは、強制改行文字を表示するか否かです)

      例えば長い文章を表示するときは、「。」を、「表示強制改行文字」に指定すると、画面にも表示され、改行も行われます

    ちなみに、強制改行処理は、ラベルには使用できません。

  • そのほか、ここにはマウスイベントが設定してあります。
    画面の都合で、説明の補足を表示したいときなどに利用下さい。今回は、メッセージボックスに簡単な説明を表示するようにしてありますが、新しいウインドウを開くことも可能です


唯一イベントの説明で、漏れた(残した)補足

「手続き定義開始 更新処理()」・・・の、中の
  • >メソッド呼び出し @フォーム.変数変更()
    >メソッド呼び出し @bdamy.実行()
    >メソッド呼び出し @b月増.フォーカス設定()

    この処理に、上記「damy」コマンドボタンを使用しています

    ここの手続きの内容は、ゴミの日の設定された内容を変数へ読み込み、フォームの状態を、表示モードに戻る処理です。が、そのとき、表のテキストオブジェクトにフォーカスがあったのを、コマンドボタンへもどしておく処理です

    かけば、簡単ですが・・・・・。では、なぜ、なにもしない「damy」ボタンを実行するのか?
    類似コマンド(メソッド)では、残念ながら出来ないからです。<類似コマンド>「変数変更・更新モード設定・描画更新」等

    いったん手続きから抜けだせば可能になりますので、たんなる逃げの処理です。(ただし、コマンドボタン機能の1行目が、「実行条件」でなければ、このような処理は必要はありません。単に、フォーカス設定だけで可能です)

  • 印刷時の元号
    現在の処理は、年数を判定し、条件により、「明治・大正・昭和・平成」の文字を出力しています。が、○○○○○の場合変更が必要になります。(このプログラムをそんなに長く使用するという意味でなく、計算式の考え方として)
    そこで、書き出しは、常に西暦書き出しを行い、条件により元号表示するようプログラムを考える必要があります。

    現在の内容は、
    > if(&元号=0 .or &作業日付<d"1868/ 9/ 8")
    >   印字 #文字列(&作業年),",",#文字列(&作業月),",",
    > else if(&作業日付<d"1912/ 7/30")
    >   印字 "明治 "+#文字列(#元号年(&作業日付)),",",#文字列(&作業月),",",
    > else if(&作業日付<d"1926/12/25")
    >   印字 "大正 "+#文字列(#元号年(&作業日付)),",",#文字列(&作業月),",",
    > else if(&作業日付<d"1989/ 1/ 8")
    >   印字 "昭和 "+#文字列(#元号年(&作業日付)),",",#文字列(&作業月),",",
    > else
    >   印字 "平成 "+#文字列(#元号年(&作業日付)),",",#文字列(&作業月),",",
    > end

    変更後、
    >印字 #文字列(&作業年),",",#文字列(&作業月),",",
    この一行ですみます。または、表の項目の持ち方次第では
    >印字 &作業日付),",",
    これだけでも可能です。(もちろんレポートの変更も必要になります)




レポート作成で
  • 今回は「1面2ヶ月表示用」を利用して「1面4ヶ月表示用」を作成します

    まずそれぞれのオブジェクトを小さくすることは予想できますね。もちろんフォントサイズも小さくします

    さて、どれくらい小さくするか・・・それが問題ですが、これはプレビュー画面といったりきたりの繰り返しを行うしか方法はありません。そこで、目安として、1ヶ月表示にどれくらいの面積が使用できるかを把握する必要があります。
    (フォームは、4ヶ月分作成するのではありません。1ヶ月分を、繰り返し表示を行います)

    画面中央(白紙の部分)で、マウス右クリックで、ショートカットメニューを表示します。この中の段落を選択します
    ダイアログが表示されますので、上図のように設定してください。
    (上図の罫線の色を、青に設定してありますが、プレビューで、範囲が確認しやすいようにというわけでして、完成したら消去いただいて結構です。

  • 最後に、上記で紹介致しました、計算式で元号を求める方法([年][月]は、文字列項目です)

    #条件選択(&元号=0,[年]+"年 "+[月]+"月",1,#部分列(#元号日付([年]+"年 "+[月]+"月"+"1日",1),1,#文字位置(#元号日付([年]+"年 "+[月]+"月"+"1日",1),"月")))

    これは、「年月」だけの表示の為ながくなってます。

top