カタカナの挿入を行いたいのですが、うまく出来ません。
例えば、
アイウエオと入力した後、アとイの文字の間にカーソルを持って行き、'カキ’と入力するとアカキウエオになってしまいます。
本来は、アカキイウエオとしたいのでがどうしたら良いのでしょうか?
プロパティの意味も分からずの質問なのですが宜しくお願いします。
カタカナを挿入したいのは、具体的に言うとどこですか?
オブジェクトインスペクタの'Caption'の項目だとか、Memoコンポーネントの表示欄だとか。
入力画面です。オブジェクトインスペクタは、TXXXEDITです。TXXXEDITは、当開発システムの定義のものと思われます。TXXXEDITとTEDITを比べると、TXXXEDITのほうがプロパティが多いです。これでは、適切な指摘を受ける事できないでしょうか?
「入力画面」と言うことは、今作っておられるソフトを実行したときの不具合、と考えて良いのでしょうか。
具体的に言うと、FormにTXXXEDITを貼り付け、実行する。
実行された画面上のTXXXEDITに
>アイウエオと入力した後、アとイの文字の間にカーソルを持って行き、'カキ’と入力するとアカキウエオになる。
と言うことでしょうか。
独自コンポーネントの場合、何ともお答えしにくいのですが、
(1)ご使用のWindowsの種類(Vista、XPなど)
(2)Delphiのバージョン
(3)半角の英数字等の場合にはどうなのか
(4)アとイの文字の間にカーソルを持っていき、クリックしたときのカーソルの形
(5)追加入力するときに、「イ」の文字が消えてしまう様子。「ウエオ」が消えないと言うことは、
入力した文字数分、「ウエオ」は後ろに追いやられるわけですよね。
このあたりどうでしょうか。
Kenny さんが書かれているのに追加ですが、
(6)TEditの場合は、正しく動作しますか?
(7)イベント(OnChange、OnKeyDown、OnKeyPressなど)で、何か
処理をされてますか?
(8)TXXXEDIT が、TEditを拡張した独自のコンポーネントだったら
どのような処理を追加していますか?
Kennyさん・iqyさん 有難うございます。
1)Windows XP
2)Versin 7.0(Build 4.453)
3)カタカナと同じ結果になります。
4)アにカーソルがいきます。(アの文字が覆う形)
5)1文字のみ挿入されて後は、上書きされます。
6)正しく動作します。
7)イベント処理はありません。
Kennyさん・iqyさん 有難うございます。続きです。
8)以下のプロパティが追加されています。
Algnment/CanSkip/DisableColor/EbcdicChra/Fixed/Precision/ReadOnly/Text/TextType/Signedです。
分かった事があります。現在、MaxLenght=10です。これを0に変えると、正しく文字が追加されます。但し、これでは、DBの長さに合わせる処理・画面の再表示が必要になます。最終的には、複数画面・複数項目が対象になるので、MaxLenghtを変える事なく解決したいのです。
(5)の文字が挿入/上書きされる様子と、MaxLengthを0に変えると正しく動作する、と言うのを
素直に解釈すると、一文字追加された時点でMaxLengthに設定された10文字に達した、という
判定ロジックが働いているように見えますね。
この方向で検証するなら
(9)最初に入力する文字は、正しく10文字に制限されますか?
MaxLength=10の意味は、10バイトに制限するのか、10文字に制限するのか。
(10)カタカナは全角(2バイト文字の)カタカナですか?
カタカナには半角(1バイト文字の)カタカナもありますね。
(11)漢字だとどうなりますか?
DBにデータを渡す都合上ということですが、
(12)TXXXEDITはTDBEditのようなDB対応コンポですか?
DBに直結したコンポなら、DB側の判定ロジックも検証に入りますし。
Kennyさん 有難うございます。
9)'0123456789'までで、入力不可になります。
10)半角カタカナです。(9)で示した様に、数字も入ります)
11)’漢字’は、入力出来ません。但し、2バイト文字’1234567’は、
半角の'1234567'になります。カタカナも2バイト文字が半角になります。
12)DBの検索・更新は、SQL分を発行しています。DB直結でありません。
なるほど、2バイト文字の数字、カタカナを1バイト文字に自動変換する機能を持っているんですね。
なんとなく、文字、あるいは文字数の判定ロジックにバグがあるような気はします。
そうなるとあとは、
(13)入力済みの文字の末尾に追加したらどうなるか
(14)キーボードで上書き/挿入モードを切り替えたらどうなるか
と言う所のチェックですかね。
>4)アにカーソルがいきます。(アの文字が覆う形)
というのは、キー入力が上書きモードの時によく使うスタイルですよね。
あまり手こずるようなら、TEditに乗り換えて入力制限を実装するというのも手だとは思います。
Kennyさん 有難うございます。
13)入力可能数だけ入力できます。
14)挿入モードにしても結果は、一緒です。
修正するに、時間制限がある為、TEditに修正する方向で考えています。
色々有難うございました。
ツイート | ![]() |