キーボード、テンキー入力コンポーネント
BCB2010で追加されたTouchコンポーネント。画面上に貼って使えるのでタッチパネルの入力に良いと思いました。
というか、この為に稟議書を社長に出しました。
が、
というか、この為に稟議書を社長に出しました。
が、
- 色関係のプロパティで変更できるのは背景色のみ。ボタン色は固定(黒系)
- ボタンを変更しようにもprotectedで変更できない。
- 最低サイズが決まっていて下回るとえらいことに(←これは仕方がない?)
などと鬼のように糞仕様。作った奴は腹を切れ!という状態です。
TTouchKeyboardを数値入力用に改造してみる。
- スタイルはテンキー表示
- 数値入力なので「+」「/」「*」は不要。入力キャンセル用に「ESC」が必要。
メモ
- 内部ボタンTCustomKeyboardButtonにアクセスするためにTTouchKeyboardを継承したクラスを作成する。
- コンストラクタではTCustomKeyboardButtonは触れない。ChangeCaption()を作成して後で呼んでみる
- 「バックスペース」と「エンター」はCaptionでテキストが変わらない。描画?
面倒。俺にボタンを触らせろ!という事でKeyboard.hppを変更する事にします。
ボタン座標を変更するためTCustomKeyboardButtonのTop,Left,Height,Widthを変更
__property int Height = {read=FHeight,write=FHeight, nodefault};
__property int Left = {read=FLeft,write=FLeft, nodefault};
__property int Top = {read=FTop,write=FTop,nodefault};
__property int Width = {read=FWidth,write=FWidth,nodefault};
これでボタンの座標が変更できます。予想はつくと思いますがOnResizeで元に戻ります。
追記:Keyboard.pasを見たらリサイズイベントが発生する場合は止めたほうがいい。
追記:Keyboard.pasを見たらリサイズイベントが発生する場合は止めたほうがいい。
TCustomTouchKeyboardクラスのButtonsの宣言をpublicに変更
public:
__property TCustomKeyboardButton* Buttons[int Index] = {read=GetButtons};
で、以下のようにしてみた。
- 使わないボタンはテキスト表示のみoff
- 入力キャンセルでは67を返す
// キャプション TouchKeyboard1->Buttons[1]->Caption = L"CAN"; TouchKeyboard1->Buttons[1]->Key.Vk = 67; TouchKeyboard1->Buttons[7]->Caption = TouchKeyboard1->Buttons[3]->Caption; TouchKeyboard1->Buttons[7]->Key.Vk = TouchKeyboard1->Buttons[3]->Key.Vk; TouchKeyboard1->Buttons[7]->Key.ScanCode = TouchKeyboard1->Buttons[3]->Key.ScanCode; TouchKeyboard1->Buttons[2]->Caption = L""; TouchKeyboard1->Buttons[2]->Key.Vk = 99; TouchKeyboard1->Buttons[2]->Key.ScanCode = 99999; TouchKeyboard1->Buttons[3]->Caption = L""; TouchKeyboard1->Buttons[3]->Key.Vk = 99; TouchKeyboard1->Buttons[3]->Key.ScanCode = 99998;
とりあえずはこんな感じで…描画の変更は