過去の桐井戸端BBS (桐ver.9)
21589 フォームのオブジェクトの文字位置をイベントで設定したのだがすべて左寄せになってしまう 宮田百合子 2003/07/26-16:05
大阪府の宮田百合子といいます。
いつも参考にさせていただいております。
少々行き詰りました、よろしくご指導ください。

質問です。

カード型フォームです。

[1][位置1][2][位置2][3][位置3]と項目があります。
以前にBBSのデータを参考に
フォームを開いたときに
[位置1]が中央揃えであれば、[1]の表示は"中央揃え"
[位置2]が左寄せ であれば、[2]の表示は"左寄せ"
[位置3]が右寄せ であれば、[3]の表示は"右寄せ"
となるように、イベントで行うことにしました。

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
ケース開始 
  ケース([位置1]="左寄せ")
    オブジェクト操作 @1.横の位置=左寄せ
  ケース([位置1]="中央")
    オブジェクト操作 @1.横の位置=中央揃え
  ケース([位置1]="右寄せ")
    オブジェクト操作 @1.横の位置=右寄せ
  ケース([位置2]="左寄せ")
    オブジェクト操作 @2.横の位置=左寄せ
  ケース([位置2]="中央")
    オブジェクト操作 @2.横の位置=中央揃え
  ケース([位置2]="右寄せ")
    オブジェクト操作 @2.横の位置=右寄せ
  ケース([位置3]="左寄せ")
    オブジェクト操作 @3.横の位置=左寄せ
  ケース([位置3]="中央")
    オブジェクト操作 @3.横の位置=中央揃え
  ケース([位置3]="右寄せ")
    オブジェクト操作 @3.横の位置=右寄せ
ケース終了
手続き定義終了
としましたが、
フォームを開いたときすべて左寄せになってしまいます。
どうすれば、できるでしょうか。

21590 Re:フォームのオブジェクト属性 悲しげ 2003/07/26-16:20
記事番号21589へのコメント
どもっ、宮田さん
[位置1]と[位置2][位置3]はそれぞれ独立しているのでしょうから、
次のようにして試してみてはいかがでしょう?

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 ケース開始 
  ケース([位置1]="左寄せ")
    オブジェクト操作 @1.横の位置=左寄せ
  ケース([位置1]="中央")
    オブジェクト操作 @1.横の位置=中央揃え
  ケース([位置1]="右寄せ")
    オブジェクト操作 @1.横の位置=右寄せ
 ケース終了
 ケー開始
  ケース([位置2]="左寄せ")
    オブジェクト操作 @2.横の位置=左寄せ
  ケース([位置2]="中央")
    オブジェクト操作 @2.横の位置=中央揃え
  ケース([位置2]="右寄せ")
    オブジェクト操作 @2.横の位置=右寄せ
 ケース終了
 ケース開始
  ケース([位置3]="左寄せ")
    オブジェクト操作 @3.横の位置=左寄せ
  ケース([位置3]="中央")
    オブジェクト操作 @3.横の位置=中央揃え
  ケース([位置3]="右寄せ")
    オブジェクト操作 @3.横の位置=右寄せ
 ケース終了
手続き定義終了

あるいは、次のようにした方が記述が簡素になります。

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 変数宣言 自動,文字列{&横1=[位置1],&横2=[位置2],&横3=[位置3]}
 オブジェクト操作 @1.横の位置=&横1 \
          ,@2.横の位置=&横2 \
          ,@3.横の位置=&横3
手続き定義終了

あと、気になったのは、これはカード型フォームですから、1行についての横位置表示です。
フォーム開始時は、特に指定しない限り、1行目のデータについて、そのように表示されるのですが、
2行目の[位置*]の値が必ずしも1行目のそれとは同じではないとすれば
意味をなさないことになりはしませんか?
とすれば、利用するイベントは「フォーム開始」ではなく「レコード移動」
であるべきではないでしょうか?
ちなみに、フォーム開始時には必ずレコード移動イベントも発生していますから、
こちらだけでいいような気がします。

21591 Re:フォームのオブジェクト属性 うにん 2003/07/26-16:21
記事番号21589へのコメント
>フォームを開いたときに
>[位置1]が中央揃えであれば、[1]の表示は"中央揃え"
>[位置2]が左寄せ であれば、[2]の表示は"左寄せ"
>[位置3]が右寄せ であれば、[3]の表示は"右寄せ"
>となるように、イベントで行うことにしました。

これは、どれか1つでなく3項目とも変更したいわけですよね?

>ケース開始 
>  ケース([位置1]="左寄せ")
>    オブジェクト操作 @1.横の位置=左寄せ
>  ケース([位置1]="中央")
>    オブジェクト操作 @1.横の位置=中央揃え
>  ケース([位置1]="右寄せ")
>    オブジェクト操作 @1.横の位置=右寄せ
>  ケース([位置2]="左寄せ")
>    オブジェクト操作 @2.横の位置=左寄せ

1つのケース開始〜終了の中ではどれか1つしか実行されませんから、これだと
[位置1]の指定があると2と3には効果がなくなります。
ケースコマンドは使わず
オブジェクト操作 @1.横の位置=[位置1]
オブジェクト操作 @2.横の位置=[位置2]
オブジェクト操作 @3.横の位置=[位置3]
でいいのでは?

21592 Re:フォームのオブジェクト属性 うにん 2003/07/26-16:31
記事番号21591へのコメント
>オブジェクト操作 @1.横の位置=[位置1]

いきなりこれだと、[位置1]が未定義だったり変な値だったりするとエラーになってしまいますね(^^;


21593 Re:フォームのオブジェクト属性 宮田百合子 2003/07/26-16:39
記事番号21590へのコメント
悲しげさん、早々にご指導いただきありがとうございます。

質問を書いた後考えたのですが、
[1]にはいっているデータをフォーム上ではなく
[位置1]が、中央であれば
[1-1]に(新しい項目を追加しました。)文字数が20文字として中央までスペースを入れることはできないでしょうか。
最終このデータは印刷しますので、こうすればレポートを触らなくてもいいような気がするのですが。
申し訳ありませんが、よろしくご指導ください。


21595 Re:フォームのオブジェクト属性 宮城 2003/07/26-18:52
記事番号21593へのコメント
表が本当に必要なのかあやしくなってきましたが。(^^;;

そもそも、数字だけのオブジェクト名っていいんでしたっけ?

21596 Re:フォームのオブジェクト属性 悲しげ 2003/07/26-19:08
記事番号21593へのコメント
どもっ、宮田百合子さん
No.21593の方は文意が全く判りません。(^^;)
具体例を挙げた方がいいと思います。

ついでに云えば、[位置1]も[1−1]も、どっちも読みとしては
「いちいち」だし、なんだか余計にワケワカメです。
21597 Re:フォームのオブジェクト属性 宮田百合子 2003/07/26-21:38
記事番号21596へのコメント
悲しげさん、宮城さん、申し訳ありません。
質問の内容がまったく変わりそうなので
新規に書き込みします。
よろしくお願いいたします。


戻る