過去の桐井戸端BBS (桐ver.9)
21598 [位置]の項目の値によって表の表示位置を変えるようにしたい 宮田百合子 2003/07/26-21:51
表 データ.tblがあります。
項目は、
[1][位置1][1-a][2][位置2][2-a][3][位置3][3-a]以上の項目です。
このデータの入力は、カード型フォームです。

[1]にJAPANと入力しました。文字数は、10文字入ります。
[位置1]で、中央揃えにすると、
[1-a]には、□□□JAPAN□□と表示。

[2]にUSAと入力し、[位置2]に左寄せとすると、
[2-a]には、USA□□□□□□□と表示。

[3]にCanonと入力し、[位置3]に右寄せとすると、
[3-a]には、□□□□□Canonと表示される。

このような形にするには、どのようにすればいいのでしょうか?
よろしくご指導ください。

(注意)□はスペースです。

21599 Re:横表示位置もどき 悲しげ 2003/07/26-23:17
記事番号21598へのコメント
どもっ、宮田さん
つまり項目値においてスペースを補って横位置を表現してしまおうと云う訳ですね。
では、以下一例です。但し挙動未確認。(^^;)

結果を表現する項目の横表示位置を左寄せで設定しておくとします。
で、枠の幅は全角10文字(半角20桁)と。
全角・半角混在となるかもしれないので、文字数ではなく全て桁数で考えることにします。

1.項目値が20桁を超える場合
問答無用で左寄せとなるが、その場合、先頭から20桁だけを切り取ることにするとか?
#sstr([当該項目値],-1,-20)

2.左寄せの場合
そのまんまとする。

3.中央揃えの場合
#複写("_",20-#int(#桁数([某項目値])/2))+[某項目値]
桁数が奇数となった場合に、#int とするか #ceil とするかはお好み次第。

4.右寄せの場合
#複写("_",20-#桁数([某項目値]))+[某項目値]

(註:"_"は半角スペース)

21723 Re:横表示位置もどき 悲しげ 2003/08/01-23:40
記事番号21599へのコメント
訂正です。(^^;)

>3.中央揃えの場合
>#複写("_",20-#int(#桁数([某項目値])/2))+[某項目値]

中央揃えの場合、空白は半分で考えるから

 #複写("_",10-#int(#桁数([某項目値])/2))+[某項目値]
      ↑
にしなくてはならなかったですね。(^^;)(^^;)
とりあえずこれで試してみて下さい。

>結果を表現する項目の横表示位置を左寄せで設定しておくとします。

が、前提ですけどね。

別な表についてですが、全角10文字(20桁)の計算式例を挙げておきます。
(今度は挙動確認済っすから)(^^;)

#cond([横位置]="右寄せ"
    ,#複写("_",20-#桁数([某項目]))+[某項目]
   ,[横位置]="中央揃え"
     ,#複写("_",10-#int(#桁数([某項目])/2))+[某項目]
   ,1,[某項目])

最後の「1」は、項目[1]ではなく数字の「1」であって、この場合は
elseの意で使っています。
21728 Re:横表示位置もどき 悲しげ 2003/08/02-00:17
記事番号21723へのコメント
(1)#複写("_",20-#int(#桁数([某項目])/2))+[某項目]

の間違いを暫定的に↓のように書き換えても合うけれども

(2)#複写("_",10-#int(#桁数([某項目])/2))+[某項目]

元々は(1)のカッコ閉じの間違いであって、正しくは

(3)#複写("_",#int((20-#桁数([某項目]))/2))+[某項目]

だったですね。(^^;) .and <(_ _)>

21716 再々質問です。 宮田 2003/08/01-22:03
No21598で質問しました宮田です。
再々質問です。よろしくお願いいたします。

表 データ.tbl

[1][位置1][1-a][2][位置2][2-a][3][位置3][3-a]以上の項目です。
このデータの入力は、カード型フォームです。

[1]にJAPANと入力しました。文字数は、20文字入ります。
[位置1]で、中央揃えにすると、
[1-a]には、□□□JAPAN□□と表示。

[2]にUSAと入力し、[位置2]に左寄せとすると、
[2-a]には、USA□□□□□□□と表示。

[3]にCanonと入力し、[位置3]に右寄せとすると、
[3-a]には、□□□□□Canonと表示される。

[1-a]の項目計算式に
#条件選択([位置1]="中央",#複写("_",40-#int(#桁数([1])/2))+[1],[位置1]="右寄せ",#複写("_",40-#桁数([1]))+[1],[1]="左寄せ",[1])
としましたが、うまく表示されません。

「右寄せ」はなんとかOKのようです。
「中央」は、文字の左に _ が表示されています。
「左寄せ」は表示しません。

以上のような結果です。
よろしくお願いいたします。
21717 Re:再々質問です。 たゆー 2003/08/01-22:39
記事番号21716へのコメント
確認ですが
[1]・・・・・データ
[位置1]・・・文字位置
[1-a]・・・結果表示

ですよね

>1]="右寄せ",#複写("_",40-#桁数([1]))+[1],[1]="左寄せ",[1])
                       ^^^^^^
[1]でなく[位置1]ですね。それと、

>「中央」は、文字の左に _ が表示されています。
の、"_"の説明ですが、半角空白を意味します。ただ、目に見えないので
"_"で表示することが多いです。桐を立ち上げ「空白表示」で確認して下さい


21719 Re:再々質問です。 宮田 2003/08/01-22:44
記事番号21717へのコメント
たゆーさん、早々にありがとうございます。

>確認ですが
>[1]・・・・・データ
>[位置1]・・・文字位置
>[1-a]・・・結果表示
>
>ですよね

はい、その通りです。

>>1]="右寄せ",#複写("_",40-#桁数([1]))+[1],[1]="左寄せ",[1])
>                       ^^^^^^
>[1]でなく[位置1]ですね。それと、

あっ!、そうですね!

>>「中央」は、文字の左に _ が表示されています。
>の、"_"の説明ですが、半角空白を意味します。ただ、目に見えないので
>"_"で表示することが多いです。桐を立ち上げ「空白表示」で確認して下さい

いえいえ、ちがうんですよ!

_________あいうえお__________

となるはずが、

___________________あいうえお

となっているんです。

21720 Re:再々質問です。 たゆー 2003/08/01-23:04
記事番号21719へのコメント
*下記式は、わかりやすいように改行を入れてます

#条件選択(
 [位置1]="中央",#複写("_",40-#int(#桁数([1])/2))+[1],
 [位置1]="右寄せ",#複写("_",40-#桁数([1]))+[1],
 [1]="左寄せ",[1]
 )

つまり、"中央"の場合に、「左空白」+[1]
と、なってますね。従って
>___________________あいうえお
となって正解です

>_________あいうえお__________
とするためには

「左空白」+[1]+「左空白」とする必要があります。



21721 Re:再々質問です。 たゆー 2003/08/01-23:06
記事番号21720へのコメント
訂正
>「左空白」+[1]+「左空白」とする必要があります。
でなく
 「左空白」+[1]+「右空白」
とする必要があります。

まあ、「左空白」でも同じですが念のため
21722 Re:再々質問です。 宮田 2003/08/01-23:39
記事番号21721へのコメント
たゆーさん、理屈はわかっているのですが・・・。

[位置1]="中央",#複写("_",40-#int(#桁数([1])/2))+[1]

この式では、

例)[1]=あいうえお
  [位置1]=中央
  あいうえお=10桁 
  枠全体が40桁ですから、40桁-10桁=30桁 30桁÷2=15桁
  
  _ を15桁、複写しその後ろに、あいうえお その後ろに _ を15桁複写

になればいいのですが、この式はそのようになっていないと思います。が
どのようにすれば・・・・。
よろしくご指導ください。


21724 Re:再々質問です。 悲しげ 2003/08/01-23:46
記事番号21720へのコメント
どもっ、たゆーさん
本件は項目等の表示条件が「左寄せ」であることを前提として
書いていますから、

>「左空白」+[1]+「左空白」とする必要があります。

とする必要はないのです。
問題の所在は別なところにありまして、要するに私の勘違いに
起因している訳ですが、その辺りは、No.21598からのツリーの
No.21599の訂正と云う形で、No.21723でふれました。

と云う訳で、みやたんさもNo.21723をご覧下さい。<(_ _)>
21725 Re:再々質問です。 たゆー 2003/08/01-23:57
記事番号21724へのコメント

>「左空白」+[1]+「左空白」とする必要があります。
は、

>いえいえ、ちがうんですよ!
>
>_________あいうえお__________
>
>となるはずが、
>
>___________________あいうえお

のように、項目値のあとにも空白文字をいれたいのかな?と
見ましたが、長さが違うという意味でしたか。

左寄せを前提でしたら、前の空白だけで、中央位置に表示できますね


21729 Re:再々質問です。 たゆー 2003/08/02-00:23
記事番号21722へのコメント
まだ、考えてますが・・・・
>例)[1]=あいうえお
>  [位置1]=中央
>  あいうえお=10桁 
>  枠全体が40桁ですから、40桁-10桁=30桁 30桁÷2=15桁
>  
>  _ を15桁、複写しその後ろに、あいうえお その後ろに _ を15桁複写
>
>になればいいのですが、この式はそのようになっていないと思います。が


#条件選択([位置1]="中央揃",#複写("_",#int((40-#桁数([1]))/2))+[1]+#複写
("_",40-#int((40-#桁数([1]))/2)-#桁数([1])))

かなりごり押しです。

21736 Re:再々質問です。 悲しげ 2003/08/02-11:30
記事番号21729へのコメント
「中央揃え」の時に右側にも半角スペースを、となると、
「左寄せ」の場合も右側に同じことが必要となりまして、
その場合、便利な方法があります。それは
  #部分列(某値,-1,-N)
です。こうすれば、N桁に満たない場合は自動的にN桁に
なるまで、右側に半角スペースを補ってくれます。
条件選択式全体をこれで囲むのが簡単でしょう。

でも、今回の宮田さんの用途は、wfm上の表示とrptへの
出力(外観)だけのようなので、オブジェクト属性が
左寄せだけ限定で十分ではないかと、私は思います。

戻る