Delphi ネイティブ コントロールのTGroupBoxを継承し、その Paint メソッドをオーバーライドして角丸四角形を描画します。
procedure TclTransparentGroupBox.CreateParams(var params : TCreateParams);
begin
inherited;
Params.ExStyle := params.ExStyle or WS_EX_TRANSPARENT;
end;
Create パラメータをオーバーライドした後の Paint メソッドは次のようになります。
procedure TclTransparentGroupBox.Paint;
begin
// Draw the rounded rect to show the group box bounds
Canvas.Pen.Color := clWindowFrame;
Canvas.RoundRect(5, 15, ClientRect.Right - 5, ClientRect.Bottom - 5, 10, 10);
if Caption <> EmptyStr then
begin
Canvas.Brush.Style := bsClear;
Canvas.TextOut(10, 0, Caption);
end;
end;
私が直面している主な問題は、透明なグループ ボックスの上にラベルがほとんどないことです。フォームを開くとラベルはきれいに見えますが、テキストが変更されると、ラベルの境界四角形が表示されます。これは、透明なボックスの上に奇妙に見えます。
フォームのサイズを変更してもグループ ボックス自体が消えてしまい、フォーカスを別のアプリケーションに変更してアプリケーションを元に戻すと、グループ ボックス自体が描画されます。
描画に関して何か不足していますか? 対処する必要がある Windows メッセージはありますか???
前もってありがとうラフル