過去の桐井戸端BBS (桐ver.8)
6854 テキストボックスで入力する文字種を制限したい エリック潤さん 2000/07/14-02:14
ある業務につき、ずっとACCESSを使ってきましたが、やはり印刷物のきめ細かさが魅力で桐に舞い戻ってきました。
ところで、A33、L21といったコードを入力する項目で、先頭一致表引きをさせたいのですが、フォームのテキストボックスで、
入力する文字種を「半角英大文字」のように制約することはできないのでしょうか。
若しくは、フォーム上に配置したコンボボックス等の値を表引きの参照値として利用することはできないのでしょうか。
6855 Re:入力文字種の制限 アックン 2000/07/14-13:09
記事番号6854へのコメント
エリック潤さん、こんにちは。

私の場合はファイル名に使えない文字を削除するイベントを使っているのですが、その条件式だけ変更して紹介します。
テキストボックス(tB)にキー入力する毎に半角英数(英字は大文字)かどうか判定しています。
もし複数の文字列を貼り付けるケースにも対応したいときは、編集文字列(&txt)の文字数分だけ繰り返し判定する必要がありそうです。

**------(C)akkun,2000/07/14 ------
名札 メイン
var 整数{&pos[3]},\
  文字列{&txt,&focus}

**------< テキストボックス:tB >----------- start
proc tB::編集文字列変更()
 call FileNameCheck()
end

**------ 以下 一般手続き ----------------- start
**------ 半角英数大文字以外をキー入力したら削除する。文字カーソルを先頭また
は途中に戻しているときは、文字カーソル位置を進めない。
proc FileNameCheck()
   method @フォーム.フォーカスオブジェクト取得( &focus )
   method &focus.編集文字列取得      ( &txt )
   method &focus.編集選択位置取得     ( &pos[1] , &pos[2] )
 if ( .not( ( #setvar( pos , 3 , #jis( #sstr( &txt , &pos[1]-1 , 1 ) ) )>47 .and &pos[3]<58 ) .or( &pos[3]>64 .and &pos[3]<91 ) ) )
   method &focus.編集選択位置設定     ( &pos[1]-1 , 1 )
   method &focus.編集選択文字列置換    ( "" )
 end
end
**------end------
アックン(=^・^=)
6856 Re:入力文字種の制限 悲しげ 2000/07/14-13:10
記事番号6854へのコメント
どもっ、エリック潤さんさん、
「さんさん」と続くのが何か変ですが、今日はsunもさんさんと
照っていることだしこのままとします。(^^;)

フォームのテキストオブジェクトの属性/編集タブの中の、一番左上「入力モード」で「半角英数」を指定する。
同じく一番右下「表示編集モード」を「(継承)」から「指定値」に変えると有効になるその右の「設定」牡丹を押し、
「変換」タブから「大文字小文字の変換」を「大文字に変換」とする。
こんな辺りの組み合わせではどうでしょう?
実は後者を私は試したことありませんけど。(^^;)
6858 Re:入力文字種の制限 悲しげ 2000/07/14-14:49
記事番号6856へのコメント
私が#6856で書いた方法の後段は、使えないですね。
表で試してみたら、フォームでの表示は確かに大文字となっていましたが、
これはあくまで表示だけで、実際の表の入力値は小文字のままでした。(^^;)

え〜、もし「コードを入力する項目」が、文字どおり表の「項目」であるのならば、
表定義の項目属性の方で設定する方がラクチンだと思います。
まず「入力」タブでは「半角英数」としておきます。
「制約」タブでは、項目制約式で次のようにしてみます。
    #ISLC([某項目],0)=0
次いで、「エラーメッセージ」としては、例えば
    英字は全て半角大文字として下さい!
とか。

当該テキストオブジェクトのソースが表の項目値ではなく、例えば変数等である場合には、
この方法は使えませんから、ここはやはり#6855のアックンのように、イベントを使うしかないかもしれません。
ただ、アックンのを見て思ったのですが(いやよく判んないってこともありますが)、
今回のような場合では、例えば半角小文字で入力してしまった場合、それを受け付けないと云うよりも、
#UC関数等で自動的に大文字に変換してしまった方が使いやすいかもしれないとも思いました。
6859 Re:入力文字種の制限 アックン 2000/07/14-15:12
記事番号6855へのコメント
>   method @フォーム・・

この「フォーム」は実際は半角カナで記述してください。
掲示板は半角カナが自動的に全角カナになるようです。

戻る