今回から数回分けて、筆者がdts@apple.comのサービスを利用した時の経験談をお話します。まずは、その時にDTS(Developer Technical Support)宛にメールで送付した相談内容を紹介しておきます。問い合わせメールの内容は日本語で記述してもOKです。
「EditUnicodeTextコントロールに入力されている文字列(テキスト)をSetControlData()を使い削除すると、その後、そのカラムに入力されるテキストのフォントサイズがかってに小さくなってしまいます。この現象の回避方法はあるのでしょうか?」
これだけだと何の事だか良く分かりませんので、先んじて、Carbon Control Managerの仕組みと、問い合わせに登場する「怪現象」について詳しく説明しておきます。まず最初に、テキスト入力用意のコントロールの種類からおさらいしてみましょう。
Mac OS XのCarbon Control Managerには、短いテキスト(数値とかファイル名など)を入力するために「Edit Text」と「EditUnicodeText」の2種類のコントロールが用意されています。またEdit Textコントロールは、その使い方に応じて「kControlEditTextProc」「kControlEditTextPasswordProc」「kControlEditTextInlineInputProc」の3通りから選択できます。kControlEditTextInlineInputProcはインライン漢字かな変換が可能なテキスト入力カラムで、kControlEditTextPasswordProcはパスワードの入力に特化された入力カラムです(入力された文字が見えないようマスクされる)。例えば、数値入力ならば漢字かな変換をする必要は無いので、kControlEditTextProcを使えば十分です。
もう片方のEditUnicodeTextコントロールは、内部的な文字処理をすべてUnicodeで取り扱うように作られています。このコントロールは、Mac OS Xになって初めて採用されました。「kControlEditUnicodeTextProc」と「kControlEditUnicodeTextPasswordProc」の2通りが用意されていますが、前者にインラインとそうではない入力方法の区別はありません。そこがEdit Textコントロールとは異なる点です。つまり、特別な「処置」をしなければ、カラム内のテキスト入力には必ずインライン入力が採用されるわけです。
Project BuilderでNibファイルを編集する時、ウィンドウ上にテキスト入力カラム(ExitTextコントロール)を配置したら、それに対するInfoウィンドウオープンし、ポップアップメニューから「Attributes」タブを表示させてください。そこにはOptionsとして「is Password」「Uses inline input」「Unicode Edit Text」の3つのチェックボックスが並んでいます。この3つのチェックボックスの選択状態により、配置したテキスト入力カラムの「性質」が決定されます。どれもチェックされない場合にはkControlEditTextProcが、「Uses inline input」のみがチェックされた場合にはkControlEditTextInlineInputProcが、「is Password」のみのチェックではkControlEditTextPasswordProcが選択されます。同様に、「Unicode Edit Text」のみがチェックされるとkControlEditUnicodeTextProcが、「is Password」と「Unicode Edit Text」の両方がチェックされるとkControlEditUnicodeTextPasswordProcが選ばれたことになります。
次回は、Edit TextやEditUnicodeTextコントロールにテキストをセット(代入)するAPIについて解説してみます。
つづく
copyright 2003 Ottimo, Inc. All rights reserved
無断転載・引用禁止
Contact Us: koike@ottimo.co.jp