RadioGroup内にLabelを設置するには

解決


らた  2008-06-10 11:28:35  No: 30965  IP: 192.*.*.*

RadioGroup内にLabelとEditを設置しようとしています。
EditはできたのですがLabelはできません。
どうやってもRadioGroupの背面に隠れてしまいます
なにかよい方法はないのでしょうか

環境はDelphi7です。

編集 削除
igy  2008-06-10 12:32:21  No: 30966  IP: 192.*.*.*

RadioGroupを使わずに、GroupBox と RadioButton を組み合わせて
使うのはどうですか?

編集 削除
 2008-06-10 20:45:46  No: 30967  IP: 192.*.*.*

Editのプロパティ
BorderStyle→bsNoneで縁が無くなり平面に。
Color→clBtnFace(デフォルトの?コンポーネントカラー)
と言う手はどうでしょうか。

編集 削除
ttt  2008-06-10 21:30:27  No: 30968  IP: 192.*.*.*

TStaticTextは?

編集 削除
みんみん  2008-06-10 23:56:26  No: 30969  IP: 192.*.*.*

実行時に親コントロールを変える方法もあるかもです。

procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Parent :=RadioGroup1;
  //RadioGroupの左上を(0, 0)としてお好みの位置に
  Label1.Left :=50; Label1.Top :=50;
end;

編集 削除
KHE00221  2008-06-11 01:31:54  No: 30970  IP: 192.*.*.*

ControlStyle に csAcceptsControls が無いから上に乗せる事はできない。

(Editは RaidoGroup より前面に表示されているだけで 
 RadioGroupの上に設置されているわけではない)

(Label は TGraphiControl なので TWinControl より
前面に表示させる事ができないので無理)

TStaticText は TWinControl なので前面に表示する事が可能

動的ならば Parent 変更で上に乗せることが可能

一番手っ取り早いのが GroupBox と RadioButton で済ますこと

コンポーネントを作るなら

  TRadioGroupEx = class(TRadioGroup)
  private
  protected
  public
  published
    constructor Create(AOwner: TComponent); override;
  end;

procedure Register;

implementation

constructor TRadioGroupEx.Create(AOwner: TComponent);
begin
    inherited;
    ControlStyle := ControlStyle + [csAcceptsControls];
end;

とすれば上に乗せられる RadioGroup ができる

編集 削除
らた  2008-06-11 19:17:41  No: 30971  IP: 192.*.*.*

とりあえず  あ  さんの方法で
やってみました。
ありがとうございました。

編集 削除