TCheckBoxの□にフォーカスをあてるには??

解決


いぬ  2004-03-09 03:29:45  No: 7622

みなさん初めまして。よろしくお願いします。

TCheckBoxにフォーカスをあてると、Captionの方に必ずあたります。
これを□の方(チェックが入るボックスの方)にあてることは可能でしょうか?

どうかご教授願います。よろしくお願いします。


たかみちえ  URL  2004-03-09 04:19:53  No: 7623

チェックボックスのチェック部分にフォーカスが当たるということはありませんが…。
  チェックボックスのボックス部分に点線が引かれることを目的としていると思いますが、それはありません。
チェックボックスは、ボックス部分に点線を引く代わりに、キャプションを点線で囲むことで、フォーカスがあるということを示しているだけです。


ねこ  2004-03-09 04:22:53  No: 7624

無理


いぬ  2004-03-09 18:13:37  No: 7625

そうでしたか・・。
ホームページなどでフォーカスがあたるのは、やはりまた違うものなのですね。
無知で申し訳ありません。勉強になりました。

たかみちえさん、ありがとうございました!!(^ ^)
また今後お世話になってしまうかもですが、その際はよろしくお願いします。

では。


たかみちえ  URL  2004-03-09 20:04:41  No: 7626

Webページ上のチェックボックスでボックス部に点線が表示されてしまうのは、キャプションが設定されてないからです。
  HTMLには<label>というタグがあり、それで文字列をキャプションとして設定するのですが、<label>タグでキャプションをつけるのを怠る人は多いのです。故にキャプションのない、ボックス上に枠線が引かれるチェックボックスが見られるのです。
(もちろんこれはHTMLの仕様からすると違反です。多くのブラウザはそれでも普通に表示できますが、ちゃんとラベル付けはしましょうね)

  なお、このチェックボックスは、おそらく普通のソフトで表示されているチェックボックスとは違い、オーナードロー(OSに描画させないで、自分で描画すること)をしているものだと思います。
オーナードローすれば、たとえ"普通は表示されない枠線"であろうとも、表示させることができます。
(Delphiではチェックボックスの継承コンポーネントをつくり、Paintメソッドをオーバーライド、自分で描画することで可能です。意味はないとおもいますが)


にゃ〜  2004-03-13 12:40:30  No: 7627

>これを□の方(チェックが入るボックスの方)にあてることは可能でしょうか?

無理やりCheckBox1のBox部分にフォーカスを当ててみるにゃ。
にゃにゃし、
CheckBox1.Width := 15;
CheckBox1.Caption := '';
にしてにゃ。
もしCaptionも付けたければ Labelで代用するにゃ。

procedure Draw_FocusRect(Sender: TObject);
var
  DC : HDC;
begin
  with TControl(Sender) do begin
    DC := GetDC(Parent.Handle);
    DrawFocusRect(DC, Rect(Left-3, Top-1, Left+16, Top+18));
  end;
end;

procedure TForm1.CheckBox1Enter(Sender: TObject);
begin
  Draw_FocusRect(Sender);
end;

procedure TForm1.CheckBox1Exit(Sender: TObject);
begin
  Draw_FocusRect(Sender);
end;


るるとん@K  2004-03-13 17:27:03  No: 7628

labelタグはぐーぐるが使ってますね


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

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






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