RadioGroupにKeyPressイベントを発生させたい

解決


見ざる聞かざる土居まさる  2008-06-26 00:03:48  No: 31059

開発環境:Delphi7
OS:WinXp

表題の件ですが、RadioGroupをキー入力によって以下のような
動作を起こさせたいのです。
  RadioGroupフォーカス取得時に
    0入力でitemIndex = 0のitemをチェック
    1入力でitemIndex = 1のitemをチェック
       ・・・
    9入力でitemIndex = 9のitemをチェック
    N入力でitemIndex = -1にする(非選択状態)
    Enterを力で次のコントロールにFocus移動
RadioGroupにKeypressイベントがないので
プログラムの作成にいきづまっています。
なにかわかれば幸いです。


KHE00221  2008-06-26 01:05:31  No: 31060

TRadioGroup = class(ExtCtrls.TRadioGroup)
  published
    property OnKeyPress;
  end;

procedure TForm4.FormCreate(Sender: TObject);
begin
    RadioGroup1.OnKeyPress := RadioGroupKeyPress;
end;

procedure TForm4.RadioGroupKeyPress(Sender: TObject; var Key: Char);
begin
    RadioGroup1.Buttons[Ord(Key)-49].Checked := True;

end;

---------------------------------------------------------------

procedure TForm4.FormCreate(Sender: TObject);
begin
    KeyPreview := True;
end;

procedure TForm4.FormKeyPress(Sender: TObject; var Key: Char);
var
    I: Integer;
begin
    for I:=0 to RadioGroup1.Items.Count -1 do
    begin
      if RadioGroup1.Buttons[I].Focused = True then
      begin
        RadioGroup1.Buttons[Ord(Key)-49].Checked := True;
      end;
    end;
end;

のどちらか?


見ざる聞かざる土居まさる  2008-06-27 00:04:46  No: 31061

TRadioGroup = class(ExtCtrls.TRadioGroup)
  published
    property OnKeyPress;
  end;
はどこに記述すればいいのでしょうか


見ざる聞かざる土居まさる  2008-06-27 00:04:46  No: 31062

TRadioGroup = class(ExtCtrls.TRadioGroup)
  published
    property OnKeyPress;
  end;
はどこに記述すればいいのでしょうか


KHE00221  2008-06-27 08:28:27  No: 31063

TForm4 = class(TForm) 

の上かな


見ざる聞かざる土居まさる  2008-06-27 23:36:54  No: 31064

ありがとうございました
なんとかなりそうです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加