過去の桐井戸端BBS (桐ver.8)
13067 フォームでテキスト文字列を選択状態(反転)にするには? 悲しげ 2001/09/17-19:08
次のように記述すれば、某テキストオブジェクトひとつだけは
選択(反転)状態でフォームをオープンすることができています。

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
 var 整数{&文字位置,&文字数}
 method @フォーム.更新モード設定(2)
 method @某TXT.編集選択位置取得(&文字位置,&文字数)
 method @某TXT.編集選択位置設定(&文字位置,-1)
手続き定義終了

ところでテキストオブジェクトがt年・t月・t日と3つあるようなフォームで、
このようなことをしたい場合にはどうしたらいいか、と云うことで詰まっています。

もう少し背景を補足するに、オープン時には本日の年・月・日が初期表示されるようにし、
また挿入モードも上書きに設定してあります。
しかるに、例えばt日の初期表示が「17日」だったとして、
ここを一桁の「7日」に訂正入力しようとした場合、単に「7」を上書き入力しても「77日」となってしまいます。
このような場合は、選択(反転)状態であれば単に「7」だけで済むので
(余分な字句の削除が不要なので)便利かな……と、こう云う訳であります。
なお、テキストソースは変数です。

これを実現するに、上記「編集選択位置*」メソッドを

1)「フォーム開始」イベントで3つのオブジェクトについて設定してみた。
2)「フォーカス取得」イベントで設定してみた(個々のオブジェクト毎に、またはファミリーを利用して)。
3)「入力前」イベントを個々のオブジェクト毎に設定してみた。

のように試してみましたが、何れもうまく行きません。
で、現在ドツボ中です。何かうまい方法ありますでしょうか?
13069 Re:「全て選択」で・・・・ pokopon 2001/09/17-20:37
記事番号13067へのコメント
悲しげさん こんにちは
いつもお世話になっています。

>「テキスト文字列を選択状態(反転)にするには?」

コマンドボタンの機能名に「全て選択」がありました。
これで、テキスト域のデータが「反転、全て選択状態」となります。

ダミーで機能名にこの「全て選択」を指定し、ワークスペースに置いておきます。
オブジェクト名をとりあえず「c_全て選択」とします。

テキストボックスで、左クリックイベントを作成し、

メソッド呼び出し @c_全て選択.実行()

でどうでしょうか?

一応、こちらの検証では「反転」してます。
でも、全部を同時に「反転」はできませんね。入力時だけですね。これが使えるのは。
これじゃ、だめかな???

13070 Re:「全て選択」で・・・・ 悲しげ 2001/09/17-22:08
記事番号13069へのコメント
どもっ、pokoponさん、コメントありがとうございました。

「全部を同時に」の必要はありません。
入力テキストだけでよいです。で
仰せのとおり、ワークスペースに機能名が「すべて選択」であるコマンド牡丹を置き、
「マウス左クリック」イベントで「実行」メソッドを設定したところ、
なるほど、全選択状態に持って行くことができました。
でも、操作性がどうも・・・・(^^;)。

今回のケースでは、例えば

       [2001]年[10]月[17]日

のようになっているところへのキーボードからの入力が主操作となっています。
つまり、タンタン狸、じゃなかった、タンタンタンと[Enter]キー
もしくは数字キーをタイピングして行く際の操作性の改善が課題である訳でして、
この時に逐一マウスに持ち換えると云うのは・・・・。(^^;)

では、このことの応用として、機能名「すべて選択」牡丹の「実行」メソッドを、
例えば「入力前」イベントや「フォーカス取得」イベントに置いたら・・・・・・やはり駄目でした。(;_;)
13071 Re:「全て選択」で・・・・ 【多遊】 2001/09/17-23:50
記事番号13070へのコメント
悲しげさん

イベントの書き方はわかりませんが、入力前とかで、「shift+→」を連続して発生することは無理でしょうか?

お答えでなくて、すみません
13073 Re:「全て選択」で・・・・ hidetake 2001/09/18-00:48
記事番号13071へのコメント
自分もフォーム開始の時と、ソース値更新で設定していたけど、
フォーム開始の時は巧く制御できても、その後は何故か巧く行かないようですね・・・
記述だけして、実際の動作まではあまり気にしていなかったりして! (^_^ゞ

なんか、動きを見ていると、実際は選択されて入力される段階で
解除されているみたいな気がしますけど?

カーソルで移動さえなければ、次の方法でも消せるには消せるけど、
何かもっと良い方法がありそうですけど? (^_^ゞ

---------------------------------------------------------
手続き定義開始 DATEe::入力前(参照 文字列 &編集文字列)
 オブジェクト操作 @DATEe.編集文字列変更="1"
手続き定義終了

手続き定義開始 DATEe::編集文字列変更()
 method 編集文字列取得(&選択ファイル名)
 method 編集文字列設定(#sstr(&選択ファイル名,1,1))
 method @DATEe.編集選択位置設定(2,0)
 オブジェクト操作 @DATEe.編集文字列変更="0"
手続き定義終了
---------------------------------------------------------


13075 Re:「全て選択」で・・・・ pokopon 2001/09/18-01:56
記事番号13070へのコメント
悲しげさん こんにちは

>でも、操作性がどうも・・・・(^^;)。
>ます。つまり、タンタン狸、じゃなかった、タンタンタンと[Enter]キー
>もしくは数字キーをタイピングして行く際の操作性の改善が課題である訳
>でして、この時に逐一マウスに持ち換えると云うのは・・・・。(^^;)
>では、このことの応用として、機能名「すべて選択」牡丹の「実行」メソ
>ッドを、例えば「入力前」イベントや「フォーカス取得」イベントに置い
>たら・・・・・・やはり駄目でした。(;_;)

はい、そのとおりです。私も試しました。そのなかで上手くいったのが「マウス左クリック」でした。

う〜む、もうチョイでしたね。でも、何とかこの「全て選択」で解決できませんかね〜。
どれかのイベントで細工をちょちょちょっ、ってな具合に。
きちんとテキストで「訂正」となった状態で「全て選択」が可能なら、良さそうですが、
コマンドボタンを「実行()」すると、全て選択が「解除」されるようです。
また、
SHIFT+←の連続は、桐の場合には「カーソル移動」になってしまうと思いますが。

もうちょっと、考えてみます。

13076 Re:「全て選択」で・・・・ hidetake 2001/09/18-09:22
記事番号13073へのコメント
どっちかと言えば、この方が少しはマシかな?

手続き定義開始 DATEe::フォーカス取得(文字列 &喪失オブジェクト名)
  オブジェクト操作 @DATEe.編集文字列変更 = "1"
手続き定義終了

手続き定義開始 DATEe::編集文字列変更()
  method @DATEe.編集選択位置取得(&最小値,&最大値)
  method 編集文字列取得(&選択ファイル名)
  method 編集文字列設定(#sstr(&選択ファイル名,&最小値-1,1))
  method @DATEe.編集選択位置設定( 2 ,0 )
  オブジェクト操作 @DATEe.編集文字列変更 = "0"
手続き定義終了


13077 Re:「全て選択」で・・・・ hidetake 2001/09/18-09:25
記事番号13076へのコメント
>どっちかと言えば、この方が少しはマシかな?

でも、これでは BackSpace や Delete には
対応できません (;_;)


13078 Re:「全て選択」で・・・・ hidetake 2001/09/18-09:31
記事番号13077へのコメント
>でも、これでは BackSpace や Delete には
>対応できません (;_;)

無理矢理この方法で進めるとしたら、事前にソース値取得で元ソースを取得しておき、
編集文字列変更() で、元データより長さが短くなっていたら全てを消す処理を追加する・・・ :-)

13092 (案)編集選択位置設定では 佐田 守弘 2001/09/18-21:33
記事番号13070へのコメント
悲しげさん
試してはいないアイデアだけの提案ですが。

●編集文字列の全選択
「メソッド呼び出し 編集選択位置設定」コマンドを使うと、編集文字列全体を選択する事ができます(オンラインヘルプに例があります)。
ただし、このコマンドを使うには、そのオブジェクトが編集状態になっていなければなりません。
このため、フォーカス取得イベントや、入力前イベントでは、入力モードにはいる前なので、このコマンドは使えません。

そこで、フォーカス取得イベントで「メソッド呼び出し 更新モード設定」コマンドを実行して、
強制的に更新モードに入ってから、「メソッド呼び出し 編集選択位置設定」コマンドで編集文字列の選択位置を設定するというのは、どうでしょうか。

試していないのでうまく行くかは分かりませんが、試してみる価値はありそうです。
上記でもし既に更新モードになっているためにうまく行かなかったら、
一度表示モードに戻した後再度訂正モードに戻す方法も試してみて下さい。

●補足
ただし、編集文字列が全て選択されている状態で、単にEnterキーを押すと、
何も入力していないものとみなされて、既存の値がクリアされてしまうのではという心配があります。

ですから、単にEnterキーを押して次に進むだけでは駄目で、何も入力されなかった場合(未定義値が入力された場合)には、
元の値に戻すといった処理も付け加える必要がありそうに思います。

佐田守弘(KS-00119)

13095 使用するイベントは 佐田 守弘 2001/09/18-22:12
記事番号13092へのコメント
補足です。
使用するイベントですが、直前のオブジェクトのソース値更新イベントを取り、
このイベントで「メソッド呼び出し フォーカス設定」を使って、
順に年、月、日のオブジェクトにフォーカスを移動させ、
次いで、更新モードを確認してから、編集選択位置設定メソッドを実行するのが良いかも知れません。

そして、もし年のオブジェクトが先頭にあるとしたら、フォーム開始、
あるいはレコード移動イベントで実行する事になります。

この方法は、年→月→日の順でしか編集ができなくなりますが、致し方ないでしょう。

佐田守弘(KS-00119)
13097 Re:テキスト文字列を選択状態(反転)にするには? 悲しげ 2001/09/18-22:45
記事番号13095へのコメント
どもっ、【多遊】さん、hidetakeさん、pokoponさん、佐田さん、
コメントありがとうございました。

#13092
>このため、フォーカス取得イベントや、入力前イベントでは、
>入力モードにはいる前なので、このコマンドは使えません。

たはは、確かにヘルプにそう書いてありましたね。
完璧な見過ごしでした。(^^;)

さて、色々案を出していただきありがとうございました。
これらを元にもう少し検討してみたいとは思いますが、
実はデータは下記のようになっているところもありまして(^^;)

  [2000]年[10]月[21]日〜[2001]年[10]月[20]日

この個々のオブジェクトに対してそのような処理を設定するのは
(ま、ふたつの「年」オブジェクトについては不要かもしれんが)
なかなか辛いところがあります。(^^;)
使うのは私ではないので、当面は次のように入力するよう、
厳しく指示しておこうと思います(上書きモードなので)。

  [2000]年[09]月[09]日〜[2001]年[09]月[08]日

DOS桐の時はこうやって来たんですよね。
Win版になると、どうしてもあれもこれも……となってしまって。ふぅ〜(^^;)

13098 Re:テキスト文字列を選択状態(反転)にするには? 今村 誠 2001/09/19-00:07
記事番号13097へのコメント
悲しげさんこんばんは、すでに解決されたようですが、

手続き定義開始 フォーム::フォーム開始(長整数 &表番号)
&年1="",&月1=""
method @t年1.フォーカス設定()
 method @フォーム.更新モード設定(2)
手続き定義終了

手続き定義開始 t年1::ソース値更新()
  method @t年1.ソース値取得(&昭和年,0 )
cond (&昭和年<1) &年1=&年
手続き定義終了

当該テキストの表示タブの編集属性式に
"未定義値表示文字列'"+#str(&年)+"年"+"'"

のような感じで記述すると、編集開始の項目では真っ白ですが、
その次の項目は、今月や今日を表示します。
入力時は、当然文字列はありませんが、ソース値更新の条件式で今月や今日が入ります。
ぽんぽんぽんとenterのみで行きますが、反転はしません。
望みと違うかもしれませんが、参考になればと思って書き込みました。
13105 Re:テキスト文字列を選択状態(反転)にするには? いかすぱげてぃ 2001/09/19-12:51
記事番号13067へのコメント
悲しげさん、こんにちわ。
w32.funlove ウイルスによって壊滅的な被害からようやく復興した
いかすぱげてぃです。(^^;

>ところでテキストオブジェクトがt年・t月・t日と3つあるよう
>なフォームで、このようなことをしたい場合にはどうしたらい
>いか、と云うことで詰まっています。
>もう少し背景を補足するに、オープン時には本日の年・月・日
>が初期表示されるようにし、また挿入モードも上書きに設定し
>てあります。しかるに、例えばt日の初期表示が「17日」だった
>として、ここを一桁の「7日」に訂正入力しようとした場合、単
>に「7」を上書き入力しても「77日」となってしまいます。この
>ような場合は、選択(反転)状態であれば単に「7」だけで済む
>ので(余分な字句の削除が不要なので)便利かな……と、こう
>云う訳であります。
>なお、テキストソースは変数です。

うーん、こういうのってやっぱりいつもの迂回技をつかうしかないのでしょうね。

まず、基本は「タイマー」イベント
--------------------------------------------------------------
手続き定義開始 フォーム::タイマー1()
変数宣言 整数{&mode,&文字位置,&文字数},文字列{&focus,}
 method @フォーム.更新モード取得(&mode)
if(&mode=2)
method @フォーム.フォーカスオブジェクト取得(&focus)
method &focus.編集選択位置取得(&文字位置,&文字数)
 method &focus.編集選択位置設定(&文字位置,-1)
オブジェクト操作 @フォーム.タイマー1 = "0"
end

手続き定義終了
--------------------------------------------------------------

で、処理の開始は各オブジェクトに「フォーカス取得」イベントを設定する

--------------------------------------------------------------
手続き定義開始 t年:フォーカス取得(文字列 &喪失オブジェクト名)
オブジェクト操作 @フォーム.タイマー1 = "1"
手続き定義終了

手続き定義開始 t月::フォーカス取得(文字列 &喪失オブジェクト名)
オブジェクト操作 @フォーム.タイマー1 = "1"
手続き定義終了
--------------------------------------------------------------

タイマー値は0.1から0.5くらいで様子見て設定してはいかがでしょうか。

では、ごきげんよう

いかすぱげてぃ


13106 Re:テキスト文字列を選択状態(反転)にするには? 悲しげ 2001/09/19-13:01
記事番号13098へのコメント
どもっ、今村さん、コメントありがとうございました。

>すでに解決されたようですが、

いえ、解決どころか、問題の先送りと云うか、諦めつつあるというか・・・・(^^;)

さて、前提として申し上げるのが洩れていたようですが、
実は初期値として例えば
  &年1=&年,&月1=&月,&日1=&日
としてあってですね、本日の年月日が初期表示されるようになっているのです。
で、多くの場合はそのままでよいので、別途OK牡丹を押すことになります。
日付のどこかを上書き修正する場合に、
その任意のテキストを選択反転状態にしておくことができれば
(19日を5日を訂正する例だと)「19」→「59」のようなことが起きないので便利かな、
と云うのが発端でした。

ま、テキストオブジェクトが選択反転状態にならないと云うのは、
云ってみれば桐自体の(DOS桐以来の)基本仕様であり、
それへの挑戦でもある訳ですからなかなか難しいことを痛感しています。
逆に、桁数が4桁に固定している年については、
この仕様は逆に便利でもある訳ですが・・・・。
13107 Re:テキスト文字列を選択状態(反転)にするには? いかすぱげてぃ 2001/09/19-13:25
記事番号13105へのコメント
項目訂正モードとマウスでのクリック移動も考えると
----------------------------------------------------
if(&mode=2 .or&mode=8)
method @フォーム.フォーカスオブジェクト取得(&focus)
 method &focus.編集選択位置設定(1,-1)
オブジェクト操作 @フォーム.タイマー1 = "0"
----------------------------------------------------
とする方がいいかもしれない。

ついでに各オブジェクトにフォーカス取得イベントを設定するのが
面倒臭いので、それらはまとめてファミリにしたほうがいいかも。


では、ごきげんよう

いかすぱげてぃ


13110 テキスト文字列を選択状態(反転)の解決編 悲しげ 2001/09/19-17:35
記事番号13105へのコメント
ををを!
いか様におかれましてはウィルスにやられてましたか!?
衷心よりお見舞い申し上げます。
でも、何だかしょっちゅうトラブッテますね。(^^;)

さて、ををを2!
ば、ば、ばっちりでごわす。す・ば・ら・し・ひ! (^^)v

え〜、例によってやり方を細かく説明しておきます。
まず、フォームに「タイマー1」イベントを設定(チェック)します。
右にある「タイマー値1」は「0.1」としてみました。
で、チェックしたイベントの方を「タイマー1」イベントをダブルクリックして、
kevに仰せのとおり次のように記載しました。
(なお、整数「&更新モ」と文字列「&focus」は別途変数宣言済)
-------------------------------------
手続き定義開始 フォーム::タイマー1()
 method @フォーム.更新モード取得(&更新モ)
 if(&更新モ=2)
  var 整数{&文字位置,&文字数}
  method @フォーム.フォーカスオブジェクト取得(&focus)
  method &focus.編集選択位置取得(&文字位置,&文字数)
  method &focus.編集選択位置設定(&文字位置,-1)
  オブジェクト操作 @フォーム.タイマー1="0"
 end
手続き定義終了
-------------------------------------
この後、フォームの方の「タイマー1」イベントのチェックは外しておきます。
次、ファミリを設定します(オブジェクトのリストを出して、
ファミリをクリックして「追加」)。ファミリオブジェクト名は、
この場合「familyTXT」としておきます。このオブジェクトのイベントとして
「フォーカス取得」をチェックした後、ダブルクリックしてkevに次のように記載しました。
-------------------------------------
手続き定義開始 familyTXT::フォーカス取得(文字列 &喪失オブジェクト名)
 オブジェクト操作 @フォーム.タイマー1="1"
手続き定義終了
-------------------------------------
いやぁ、ファミリが使えるってのはグーですね。(^^)v
再度フォームに戻って、t年1,t月1,t日1,t年2,t月2,t日2・・・の
各オブジェクトでは、イベントタブから右下の「ファミリ名」とし
てこのファミリオブジェクト名を指定します。
ついでに云えば「2000年9月19日〜2001年9月18日」とある場合だと、
年だけは選択反転されない方が有利なので、あえてファミリには指定しない、
なんてことも可能でした。

挙動を確認したところ、これでバッチリでおました。(^^)v
オブジェクトが幾つあってもkevでのイベントはふたつ、都合13行で済みます。
で、このまんま、類似のフォームに転用可能でした。

ps:
挙動ですが、当該オブジェクトにフォーカスが移動した時、
最初は無選択状態なのが、ひと呼吸遅れて選択反転されるのが見えます。
言葉で表わせば「ちょろんっ」って感じですね。(^^;)
13111 Re:テキスト文字列を選択状態(反転)の解決編 いかすぱげてぃ 2001/09/19-18:30
記事番号13110へのコメント
[enter]で移動する分にはいいけど、

>  method &focus.編集選択位置取得(&文字位置,&文字数)
>  method &focus.編集選択位置設定(&文字位置,-1)

         を

   method &focus.編集選択位置設定(1,-1)

にしておかないと、マウスで移動する時、途中から洗濯されたり(こりゃ私だ)
もとい、選択されたり、なにも選択されないっていう変な挙動
(といってもロジック的には正しいのだが)をしちゃうよ。

お気お付けくだしゃんせ。では、ごきげんよう。

いかすぱげてぃ

PS.皆様もウイルスには、お気をつけあそばせ。
   しかし、いつ貰ってしまったのかまったく分からん。

13112 Re:テキスト文字列を選択状態(反転)の解決編 hidetake 2001/09/19-19:13
記事番号13110へのコメント
>ps:
>挙動ですが、当該オブジェクトにフォーカスが移動した時、最初は
>無選択状態なのが、ひと呼吸遅れて選択反転されるのが見えます。
>言葉で表わせば「ちょろんっ」って感じですね。(^^;)

今回初めて知ったのですけど、タイマーイベントの
タイマー値って、右クリックのヘルプからは 0.1 秒単位で設定しますと出てきますけど、
実際には 0.01秒まで設定できるようですね!

さすがに 0.009 や 0.001 と設定すれば 0.01 に
なってしまうようですけど

これの設定を 0.01秒に設定すると何の違和感も
無い動作になるようですけど、これって・・・

今回のはタイマーイベントが1回働けば必ずこれを禁止する挙動だから、
負荷が高くなる事も無いのでしょうけど、あまり短くしたらついてこれない
遅いパソコンとかあるのでしょうか? どうなのでしょう?


13114 す・ば・ら・し・ひ(続) 悲しげ 2001/09/19-20:18
記事番号13112へのコメント
#13107+#13111 いか様
さっそくそのようにいたしました。ますますバッチリ。(^^)v
10組くらいのwfmとkevを修正しまくりました。

#13112 hidetake様
さっそくタイマーを0.01にしましたところ、最初から反転で現れました(のように見えました)。
ちなみに私のマシンは今となっては遅い方ですが、1回限りなので問題ないみたい。
タイマー値0.01秒と云えば、私のv8イベント初公開作品は『ストップウォッチ』と称して、
タイマーを3個も使ってまして、それぞれ0.01秒、0.1秒、1秒となってましたから
当時色々試したんでしょうね。作成は99年7月頃のようで、
そんな大昔のことなんか、何も覚えてないです。(^^;)
13118 Re:テキスト文字列を選択状態(反転)の解決編 いかすぱげてぃ 2001/09/19-21:45
記事番号13112へのコメント
hidetakeさん、こんにちわ。

>今回のはタイマーイベントが1回働けば必ずこれを
>禁止する挙動だから、負荷が高くなる事も無いの
>でしょうけど、あまり短くしたらついてこれない
>遅いパソコンとかあるのでしょうか? どうなの
>でしょう?
>

ちょっと、話は違いますが、いま、わけあって桐でスライドショーみたいなものを作っているんですけど、
スライドの表示切替の値を速くしてやると、jpgの表示が追いつかなくなって桐があたふたしているのが分かります。
でも、見ている限り破綻はしませんけど、
さて、どうなんだろう、遅れても必死に実行しているのか、
どうしても間に合わないときは、処理を飛ばしてしまっているのだろうか…

うーん、今度、詳しく調べてみます。

いかすぱげてぃ

13130 Re:テキスト文字列を選択状態(反転)にするには? 今村 誠 2001/09/20-08:44
記事番号13106へのコメント
悲しげさんこんにちは、早速使わせて戴いていいでしょうか。
表で使用する場合は、
if(&更新モ=2)

if(&更新モ>1)
でないと都合悪いみたいです。
訂正ではうまくいったのに、追加では何故と30分くらい試行錯誤しました。
あと、項目値を代入したあとに、文字の追加が必要なときは、
  method &focus.編集選択位置設定(0,0)
を続けて記述したら、文字の最後にカーソルが移動してくれました。

いかすぱげてぃさんありがとうございました。

13134 Re:テキスト文字列を選択状態(反転)にするには? 悲しげ 2001/09/20-11:09
記事番号13130へのコメント
どもっ、今村さん

>悲しげさんこんにちは、早速使わせて戴いていいでしょうか。

あぅ、どうぞ、どうぞ。これ、結構使えますよね。(^^)v

>if(&更新モ=2)

は、&更新モ=8(項目訂正モード)を含めてもそうなんですが、
行挿入や行追加には対応しておりません。このことはちょっと頭をかすめはしましたが、
今回の私の場合はテキストソースが変数だったので、あえてそこまでの汎用化は考慮しませんでした。
表の項目をソースとするのなら、仰せのとおり

>if(&更新モ>1)

としておいた方がベターでしょうね。

全然関係ないけど、私なら if(&更新モ>0) と書きますが、
でも「更新モード=1」って何なんでしょうね? (^^;)
13192 これこそ裏技 楓香 2001/09/26-12:59
記事番号13105へのコメント
そもそもこの「反転選択」の問題はコマンドとしてある「メソッド呼び出し 編集選択位置設定」がマニュアルで、
[フォーカス取得]イベントや[入力前]イベント、もちろん「入力後」イべントでは使用不可と明記してあることに原因があります。
このコマンドは現在あるイベントでは使用できないと理解していました。(入力前イベントの次のエディターに入るイベントがない。)
仕方がないので私はコマンドボタンの機能名に「すべて選択」を記述して、それをメソッドでスペースキーに割り当てて使っていました。
つまり反転選択したい訂正項目のところへフォーカスが移ればスペースキーを押して手動で反転選択状態にしていたのです。
この反転選択状態の問題はかなり必要性があるのではないのでしょうか。コンマのついた
金額の訂正や訂正前の桁が訂正後の桁より大きい場合などは、それはもうDeleteキーやBsキーの大活躍です。
挿入モードであればなおさら大変です。単純な数字入力をテンキーで入力する場合でも、
キーボード全体をを余り知らない第三者に入力させる場合は致命的です。
前置きが長くなりましたが「実にすばらしい」。この問題が提起されわくわくしながら見ていましたが
途中までは残念ながら想像どおりの展開でした。
あきらめていたところなんとイカ先生の回答を見てびっくりしました。
さっそく実行しましたところ長年の悩み?がうそのようです。
hide先生の0.01の設定であればもういうことなし。
ファミリーの設定もこのためにあるのではないかと思えます。
問題提起していただいた「悲しげ先生」や解決していただいた「イカ大先生」、「hide先生」に心から感謝を致しますとともに
幅田先生にはご苦労があると思いますが末長い運営をお願いいたします。

これははっきりいって皆さんに広めるべき裏わざだと思います。
何とかこのようなすぐれた裏わざをピックアップして、みなさまにひろめる方法はないのでしょうか。

戻る