過去の桐井戸端BBS (桐ver.9)
23429 「値集合」でカーソル位置の初期値を指定することはできますか 悲しげ 2003/11/21-21:03
「値集合」ボックスが表示されているとき、カーソルの初期値は
ともかく先頭行ですよね?
この時、カーソルの初期位置を、別項目の値がAであれば2行目に、
Bであれば3行目に・・・のようなことをやってみたいと思ったのですが、
何かよい案はありますでしょうか?

23430 Re:「値集合」の初期値指定のようなこと たゆー 2003/11/21-21:58
記事番号23429へのコメント
悲しげさんこんばんは

>「値集合」の初期値指定のようなこと
値集合でなければ、似たような動きは可能ですが

「へー」より引用
>入力支援ボタンのドロップダウンリストに「#表引き」等の、計算式が使用できる

これなどはいかがですか

23431 Re:「値集合」の初期値指定のようなこと たゆー 2003/11/21-22:16
記事番号23430へのコメント
自己レスです。

今読み返してみましたが、先頭に解答を持ってくるのではないのですね。
従って、先ほどの答えや、イベントで、値集合を書き換えても、問題解決ではないです。

質問は、初期カーソルを「2行目・3行目に飛ばす」方法ですので
どうも失礼いたしました。

23432 Re:「値集合」の初期値指定のようなこと 宮城 2003/11/21-23:02
記事番号23429へのコメント
悲しげさん、たゆーさん、こんにちは。

できないんじゃないでしょうか。
愚にして鈍な小生は表引きにして索引をいくつか作っておき、
条件によって並び順を変えといて表引きさせ、ごまかしております。

# やっぱりファウルチップ?

23433 Re:「値集合」の初期値指定のようなこと うにん 2003/11/22-00:08
記事番号23429へのコメント

>「値集合」ボックスが表示されているとき、カーソルの初期値は
>ともかく先頭行ですよね?

なるほど〜。
ファイルメーカーだと既に入っている値が選択されるのですが、
桐では関係ないですねえ。
無理そうですが、フォームでなら入力支援オープンイベントで何かするとか?

「自動表示」になってても未定義値のときだけ。ファイルメーカーは設定できず
常にリストが出てくるのでうるさすぎ。
これは桐の方がいいですが。

23440 Re:「値集合」の初期値指定のようなこと アックン 2003/11/22-11:38
記事番号23429へのコメント
悲しげさん、そっちは雪降ってるんでしょうね。
値集合のリストを表示中のテキストボックスは編集状態にありますから、
ユーザーがカーソル位置をメソッド等で設定できないんだと思います。
で、もし先頭行でもよければ、値集合の中身を替えればいいわけです。
以下、まぁ、冗談だと思って読んでください。
手順:
1. 編集対象表:値集合のリストの行数分だけ項目を追加して、
それらの項目に値集合を設定する。項目名は[1]〜[100]とでもしておく。更新禁止とする。
セルにデータなし。値集合のリストの中身を並び順を替えて、ひたすら登録する。
(値集合設定ダイアログの複写ボタンを利用しませう。)

2. フォーム:値集合したいテキストオブジェクトに入力支援ボタンを設定す
る。入力支援ボタンのオブジェクトの属性>選択値リスト:&分 /リストの
種別:値集合項目

3. イベント:別項目において、条件によって、値集合する項目番号または
項目名を変数に代入する。項目番号だったら、#cond( ・・, #set(分,10)) とすれば、
項目番号 10 の値集合が出現する。
あるいは、#cond( ・・, #set(秒,3)) としておいて、手順 2 の選択値リストを
#set(分,&秒+5) (←この 5 は値集合を設定する以前の項目数)とすれば、
項目番号 8 の値集合が出現する。)

しっかし、まぁ、こんなことするよりも、入力支援ボタンのリストの種別を表引きにしたり、
あるいはドロップダウンリストにして配列変数を入れ替え操作する方が設定が楽かも。
23441 Re:「値集合」の初期値指定のようなこと 今村 誠 2003/11/22-12:40
記事番号23429へのコメント
手続き定義開始 tカレンダー::入力前(参照 文字列 &編集文字列)
  代入 &時刻=#計算(#代入(&時刻,#項目属性(#項目番号(#U),14)),\
     #S(#SSTR(&時刻,#文字位置(&時刻,"{")+1,\
     #文字位置(&時刻,"}")-1-#文字位置(&時刻,"{"))\
     ,#JIS(34),""))
  メニュー2 &実行リターン,3,(3,80),"選ぶ",&時刻
  代入 &編集文字列=#対応文字列(&時刻,&実行リターン)
手続き定義終了

値集合の表示をしないにしてメニュー2の初期値をメソッドに応じて
位置を変えてはいかがでしょうか
値集合が相当多いようでしたら右メニューを使用する
それでも多いようでしたら簡易メニューを使えばできると思います。
23443 Re:「値集合」の初期値指定のようなこと アックン 2003/11/22-15:53
記事番号23440へのコメント
悲しげさん>
値集合にこだわらなければ、任意の位置にカーソルを置く別の方法をふたつ。
モーダルフォームを呼び出して、画面表示する前に表の項目を検索しておき、
表示後はキーダウンとマウス左クリックのイベントで項目値を取得する、疑似表引き。
この方法は、フォームの出現位置を細かく調整するとなると大変面倒です。
あまり細かいことにこだわらない人向きかも。(^^;

もうひとつの方法。
表引きでダミー項目を使う方法。ダミー項目を比較項目にします。
別項目のトリガーとなるイベント、たとえば入力後イベントに、
 項目値代入 [dummy] = &編集文字列
などとして、ダミー項目[dummy]に、表引き時の比較項目となる値を代入します。
表引き設定は、[dummy]を比較項目、検索項目と値項目を同一項目(表引き表の項目)にして、
普通の表引きのときと同様にします。
利点としては、表引き画面の位置を桐が自動的に調整してくれます。
難点としては、表引き画面が横にでかすぎるのら。(--;
これも、あまり細かいことにこだわらない人向きかも。(^^;
23445 Re:「値集合」の初期値指定のようなこと 悲しげ 2003/11/22-21:14
記事番号23429へのコメント
皆さん、色々な案をありがとうございました。<(_ _)>
ぢつは、いま現在ハードの方が不調になっていて試すことができません。
試した結果をご報告させていただくのは、暫らく後になりそうな感じです。

以上、とりいそぎ。

と云いつつ、もう少し書き足します。(^^;)
え〜、値集合の初期カーソル位置は、常に先頭にある筈だと思うのですが、
我がマシンと云うか、ある処理では時々4行目にカーソルが来ていることがあるのです。
ふだんは1行目なんですが、時々必ず4行目。
それ以外の行であることはありません。何だか不思議です。

では。

23461 Re:「値集合」の初期値指定のようなこと 悲しげ 2003/11/23-20:28
記事番号23445へのコメント
ハードの不調は治りました、つーか交換しました。
ぢつはマウスが壊れてただけでして。(^^;)
しかしながら、当初は、まさかマウスのせいだとは思わず、
てっきりソフト的なと云うか、ドライバの問題だと
信じ込んでいて結構ジタバタしてしまいました。

さて、コメントです。
値集合的な表示の並び自体は変更せずに、初期カーソル位置だけを指定したかったので、
まずは今村さんの方法(入力前イベント+メニュー2コマンド)で考えてみました。
が、ヌルの時のみ自動オープン、それ以外は[Alt]+[↓]でオープン後書き込みすると云う挙動を
再現させるのも面倒な気がして、結局は宮城さんの仰る表引き(値条件の)の利用で誤魔化すことにしました。(^^;)
別項目の値を検索項目とすれば可能ですもんね。
表がひとつ増えてしまいますが、手抜きの代償でしょうね。

23467 Re:「値集合」の初期値指定のようなこと 通りすがり 2003/11/24-00:32
記事番号23461へのコメント
もう解決済みでしょうが・・・。

この「値集合」、項目値に値集合の選択リストの値が最初から入ってれば、
その位置に飛びません?(V8ではそうだった)。
どうせ入力するんだから、[入力支援オープン]イベント内に、条件に応じて初期値を選び、
該当する選択値リストの値を項目値代入コマンドで最初から入れておくとか?

キャンセルの場合には、元の値に戻しておく必要があるでしょうけど。

でも、表引きの方が条件式をいちいち記述しなくてもいいし、条件の追加、訂正が
簡単、条件も多くもてるなど汎用性はあるとは思いますけど。
でも、表引き表が増えないといった利点もあるような。

それとも、違うことかな?


23469 Re:「値集合」の初期値指定のようなこと 悲しげ 2003/11/24-11:36
記事番号23467へのコメント
どもっ、通りすがりさま

>この「値集合」、項目値に値集合の選択リストの値が最初から入ってれば、
>その位置に飛びません?(V8ではそうだった)。

早速試してみましたが、「その位置に飛びません」でした。
例えば項目値として4番目のものを入力済みとして、再度値集合のボックスを開いても、
初期位置は1番目のままでした(我がV9sp1・V8sp7とも、且つ表編集・フォーム編集とも)。

と云う訳で、値集合設定上の何かがありそうな気がしないでもありませんが、
それはさておき、

>条件に応じて初期値を選び、該当する選択値リストの値を項目値代入コマ
>ンドで最初から入れておく

と云うのはなるほどです。これまでは「ヌルの状態に新規に値を入れる」と云う固定観念に縛られていて、
初めから値を入れておく(違っている場合のみ訂正入力する)と云う発想なんぞ全く出てきませんでした。
考えてみれば、大抵はその初期値のままでいいはずだから、その方が絶対ベターですもんね。
この線でも試してみます。

23472 Re:「値集合」の初期値指定のようなこと アックン 2003/11/24-18:13
記事番号23469へのコメント
悲しげさん>
なるほどねえ、と感心しました。通りすがりさんが書いたのでいけそうですね。

手続き定義開始 t他項目::入力後(参照 文字列 &編集文字列,長整数 &モード,参照 長整数 &入力継続)
 if( &モード=1 )
   項目値代入 [値集合設定項目] = &編集文字列
 end
キャンセル時に項目値がそのまま残っているので、そこんところは考えてください。

23473 Re:「値集合」の初期値指定のようなこと 通りすがり 2003/11/24-21:35
記事番号23469へのコメント
>>この「値集合」、項目値に値集合の選択リストの値が最初から入ってれば、
>>その位置に飛びません?(V8ではそうだった)。

>早速試してみましたが、「その位置に飛びません」でした。
>例えば項目値として4番目のものを入力済みとして、再度値集合のボックス
>を開いても、初期位置は1番目のままでした(我がV9sp1・V8sp7とも、且つ
>表編集・フォーム編集とも)。

えっ? 我が家では飛ぶけど。

項目 [値]に 「あ、い、う、え、お」なんて値集合を設定しておき(フォームで)、
この項目 [値]に最初から"う"という値が入っていれば、"う"の位置に飛ぶということです。

Win2K、桐V8SP7だけど?


23474 Re:「値集合」の初期値指定のようなこと 通りすがり 2003/11/24-22:09
記事番号23469へのコメント
確かに表では飛びませんね。
表に値集合を設定しておいて、フォームからなら・・・。

補完BBSにファイル置いておきましたが、こんなんじゃないの?

23484 できましたー 悲しげ 2003/11/25-15:46
記事番号23474へのコメント
どもっ、通りすがりさま
飛ぶ件ですが、私はフォームでも生ま(ナマ)の値集合で試してました。(^^;)
仰る「フォームから」と云うのは、フォームの「入力支援ボタンから」ってことだったんですね。
これだと確かに飛びました(V8・V9とも)。

それと、補完BBSのサンプル、ありがとうございました。
これこそズバリ私の望んでいたことでした。(^^)v
自動表示を未定義時ってのも希望どおりです。
ただ、敢えて他の値に変更入力していた場合に、当該項目に戻ったら自動的に
初期値に書き戻されるのが困るので、次のように変更させて戴きました。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
手続き定義開始 某入力支援ボタン::入力支援オープン()
 cond([某]="") 項目値代入 \
  [某]=#対応文字列("【あ】,【い】,【う】,・・・・",[flag],"【ん】")
手続き定義終了
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

私は入力支援ボタンを食わず嫌いと云うか、殆ど使えていなかったので、
今回はとても勉強になりました。

23487 Re:できましたー 通りすがり 2003/11/25-21:03
記事番号23484へのコメント
これって、桐のどういった仕様なんでしょうかね。
フォームで入力支援ボタンからだけ、こういったことができるなんて。
表編集でもこれができて「当然」だと思うんですが?
単に開発者同士の意思の疎通が無いだけ?


戻る