過去の桐井戸端BBS (桐ver.8)
3428 初期値を反転選択状態にしたいのですが 初心者 1999/11/21-21:22
[商品名]に初期値をセットしているのですが
全く違う商品名を入力する場合、全部の文字を消すのが
面倒なので、初期値がある場合は反転選択状態にしておいて
文字が入力されれば初期値が消えるようにしたいのですが。

メソッドにそれらしいのがあるのは分かったのですが
どのイベント(イベントの必要なし?)に書いていいのか
分かりません。よろしくおねがいします。
3430 Re:初期値を反転選択状態にしたいのですが 悲しげ 1999/11/21-22:27
記事番号3428へのコメント
どもっ、初心者さん、
以下は、これまた【多遊】さんのHPで書いたことの抜粋です(^^;)。
元々は単なる「訂正」モードではなく「項目訂正」の扱いにする
にはどうしたらいいかと云うこと書いたものなんですが、当時の
の勘違いでたまたま反転選択状態になっている記述例ですので、
一部書き換えて挙げてみます。
必要無ければ「項目訂正」関連は無視して下さい。
-----------------------------------------------------------
あるイベント手続き
 &項目訂正=1       /*単項目訂正のフラグを立てる*/
 method @t某.フォーカス設定() /*カーソルがどこにあってもここに移す*/
 変数宣言 整数{&文字位置,&文字数}
 method @フォーム.更新モード設定(2)
 method @t某.編集選択位置取得(&文字位置,&文字数)/*以下で反転選択*/
 method @t某.編集選択位置設定(&文字位置,-1)
 &処理中止=1
 ・・・・・・

手続き定義開始 t某::ソース値更新()
 条件(&項目訂正<1) return
 method @フォーム.更新モード設定(0)  /*表示モードに戻す*/
 method @t某.フォーカス設定()  /*カーソルをその場にとどめる*/
 &項目訂正=0         /*項目訂正のフラグを降ろす*/
手続き定義終了
------------------------------------------------------------

>どのイベント(イベントの必要なし?)に書いていいのか分かり
>ません。

どのイベントで書くのかは、これをやりたいイベントで書くと
しか云いようがありませんが、私の場合は「キーダウン」イベ
ントであるキーを押した時に某テスキトオブジェクトについて
実行させるようにしています。ボタンの「左クリック」イベントでもいいし。

3451 入力開始時にすでに反転状態にはできないですか? 初心者 1999/11/22-21:43
記事番号3430へのコメント
悲しげさん、ありがとうございます。
いつも解説してもらって感謝しております。
大体わかったんですけど、ただ自分としては
カーソルが項目に来た時にはすでに反転状態にしておきたい
のですが・・・。
入力前やフォーカス取得イベントでは出来ないと
マニュアルに書いてありますし・・・。
良い知恵をお貸しください。

3456 ちょっと違うような・・・ 悲しげ 1999/11/23-12:08
記事番号3451へのコメント
どもっ、初心者さん、
云ってることが矛盾しているような・・・(^^;)

タイトルは「入力開始時にすでに反転状態に」で、中の方では
「カーソルが項目に来た時にはすでに反転状態に」と云っています。
後者については、おそらくカーソル(フォーカス)移動は、通常ば表示モードで行われるはずです。
そして前者の「入力開始」云々は訂正(行追加)モードのはずですから、
「反転」以前に、表示モードから訂正モードに切り換えることが優先します(「反転」は訂正モードにした後の附録)。
だから先ずこちらの方を何らかのイベントで実現させないと先に進みません。
で、ちょっと思いついたのは、ひとつはマウスインアウトイベントです。
要するにマウスが当該オブジェクトにインした時に自動的に訂正モード・反転を実現する方法。
ただ、想像するだに使いにくそうです。(^^;)
ふたつめ、マウス左クリックイベント。
みっつめは、イベントを意識しない方法として考えられるのはキー入力イベント(キーダウンではなく)。
つまり何らかの文字をキーボードから入力しようとすれば起こるイベントです。
入力する文字に縛りをかけたければそのようにすればいいし。
ただ、この方法では、最初の1文字目は空打ちとして機能するような気がすることと、
当該オブジェクトにフォーカスがあることが前提です(フォーカス取得メソッドで判断する)。
よっつめ。「私ならこうする」ですが、そのフォーム上での実現を諦めて「キー入力」コマンドを使う。
現行の「キー入力」コマンドはダサイので使いたくなければ、ダウンロード済みの拙作「キー入力モドキ」フォームを
呼び出して使う方法です。
元々のやりたいことは「[商品名]に初期値をセットしているのですが全く違う商品名を入力する場合」でしたよね。

3457 悲しげさん、どうもすいません 初心者 1999/11/23-17:07
記事番号3456へのコメント
悲しげさん、どうもすいません。
私の用語の使い方が間違っているようで、すいません。
悲しげさんの、難しい(わたしのレベルでは)イベントを読んでる
うちに、なんか混乱してました。

行追加モードになっていて、[商品コード]の入力後イベント
で[商品名]に初期値が項目値代入されて、
[商品名]の入力になる。
この[商品名]が、初期値(マスタ)と違う場合が
結構多いので、全部消去するのが面倒だ、って事でした。

冷静に考えると、別に反転とかしなくていいですね。
あるキーを押して、未定義にすればいいと思いました。

ただ、自分としては、初期値が反転状態になってれば
別のキーを押して、未定義にする という事をしなくても、
普通に文字を入力すれば、初期値が消えるから
いいな と思ってた次第です。
(商品名に限らず、単価もおなじケースが多いですから)

悲しげさん、通じましたでしょうか?
稚拙な文ですいません。

戻る