私は番号が付いているカスタムの数字パッドを作った。それはフレームとその中のボタンです。私はフォームにこのコンポーネントを配置します。今私は、フォーム上のアクティブなコントロールをキャプチャし、ボタンに固有の番号をこのコントロールに送信する方法を知らない。カスタム番号とアクティブなテキストボックスに特定の番号を送信
誰かが私を助けてくれますか?
私は番号が付いているカスタムの数字パッドを作った。それはフレームとその中のボタンです。私はフォームにこのコンポーネントを配置します。今私は、フォーム上のアクティブなコントロールをキャプチャし、ボタンに固有の番号をこのコントロールに送信する方法を知らない。カスタム番号とアクティブなテキストボックスに特定の番号を送信
誰かが私を助けてくれますか?
最も簡単な方法は、ボタンのキャプションである番号をボタンのTagプロパティに保存することです。その後、すべてのボタンに同じイベントハンドラを使用することができます。
procedure TForm1.NumButtonClick(Sender: TObject);
var
NumTyped: Integer;
begin
NumTyped := TButton(Sender).Tag;
end;
他の代替がイベントにキャプションを読んで、しかし、あなたは、文字列から整数への変換を行う必要があり、あなたの場合は、誤って壊しなることですイベントハンドラに数値キャプションなしでボタンを割り当てます。
procedure TForm1.NumButtonClick(Sender: TObject);
var
NumTyped: Integer;
begin
NumTyped := StrToInt(TButton(Sender).Caption);
end;
この方法は、あなたのコンポーネントがACTIVECONTROLであるかどうかを気にする必要はありません。コンポーネントのボタンのすべてにイベントハンドラを割り当て、それ以外は何もしないで、イベントがトリガされた場合は、アクティブなコントロールがコンポーネントであり、ボタンのどれがクリックされたのかが分かります。
EDIT:以下のコメントに基づいて、表示されるより少し質問があります。
数字をTEdit(あなたの「テキストボックス」)に送信しようとするなら、あなたはいくつかのことをする必要があります。まず、TButtonsまたはTBitBtnsを使用しないでください。フォーカスが取得され、Editコントロールからフォーカスが離れます。代わりにTSpeedButtonを使用してください。それぞれのキャプションを、TEditに入れたい番号に設定します。
第2に、コンテンツをTEditに入れたいので、タグを気にする必要はありません。 (あなたのTEDITはEDIT1であると仮定している)、このいずれかにすべてのTSpeedButtonsのイベントハンドラを設定します。
procedure TForm1.NumButtonClick(Sender: TObject);
begin
Edit1.SelText := TSpeedButton(Sender).Caption;
end;
これはSpeedButtonのキャプションとTEDIT EDIT1のいずれかの選択したテキストを置き換える、または現在のキャレットでそれを追加します(カーソルの編集)位置をTEdit内に表示します。
あなたがTEditsの数のいずれかにそれを置くために探している場合は、わずかな変化も同様のことを処理します:
procedure TForm1.NumButtonClick(Sender: TObject);
begin
if ActiveControl is TEdit then
TEdit(ActiveControl).SelText := TSpeedButton(Sender).Caption;
end;
を、これはあなたが達成するために探しているものはまだない場合には、あなたの元の質問を編集し、それに情報を追加してください。あなたの答えを得る手助けをする機会があります。
私はこれをまだ試していませんでしたが、フォームにテキストボックスがあり、数字ボタンをクリックすると、ボタン固有の番号がそのテキストボックスに表示されると言っていますか?これは私が達成したいものです。また、それらの5つがあります(私が意味するテキストボックス)。 – evilone
@evil - どのテキストボックスが*そのテキストボックス*であるかをどのように知っていますか?ユーザーはボックスを選択してから番号を押すと予想されますか? –
@evilone:いいえ、それは私が言っていることではありません(それはあなたが尋ねた質問ではありません)。私の編集を参照してください。 –
使用するアクティブコントロールフォームのpropety。またはActiveControlプロパティとOnActiveControlChangeイベントのTScreenクラスです。
あなたが使用しているDelphiのバージョンに言及していないが、それは、Delphi 2010またはそれ以上である場合は、パレット上で利用可能TTouchKeyboardコンポーネントを使用し、テンキーにレイアウトプロパティを設定することもできます。
すべての詳細を処理するので、非常に便利です。
私は結果に興味がありますので、私は2ヶ月の時間に同じ問題を抱えているだろう。完了したら、私にコードを送ることができますか? – Jlouro
数字の数字がボタンの場合、アクティブコントロールはおそらくその1つです。 –