フォームのタイトルバーの左端にあるアイコンをなくすには?

解決


虫歯の日  2007-06-03 14:14:38  No: 26481  IP: 192.*.*.*

MainFormではない、Aboutボックスのようなサブフォームにおいて、
タイトルバーのキャプションの左にあるアイコンをなくして、かつ、
右端には終了ボタン[×]のみを表示したいのですが可能でしょうか?

編集 削除
みんみん  2007-06-03 22:25:34  No: 26482  IP: 192.*.*.*

設計時に対象フォームのBorderStyle をbsDialogにします。

アイコンは表示されなくなり、タイトルバーのボタンも
[×]だけの表示になりますが、サイズ変更は不可になります。

編集 削除
虫歯の日  2007-06-04 00:15:15  No: 26483  IP: 192.*.*.*

bsSizeable, bsSingle, bsNone を試してみて、
他はだめだと思って試していなかったのですが、
bsDialog でできたとは。調査不足でした。すいません。
ありがとうございます。

できれば、アイコンなし、[×]だけ、サイズ変更可能な
フォームにしたいのですが、タイトルバーが小さくなってしまう
bsSizeToolWin 以外で、そのようにする方法はあるのでしょうか?

編集 削除
みんみん  2007-06-05 00:03:59  No: 26484  IP: 192.*.*.*

環境により動作するかは不明ですが
type
  TForm1 = class(TForm)
        ・
        ・
        ・
protected
    procedure CreateParams(var params :TCreateParams);override;

end;
---------------------------------------------------------------
procedure TForm1.FormCreate(Sender: TObject);
begin
  BordDerStyle :=bsDialog;
  //システムメニューにサイズ変更を挿入
  InsertMenu(GetSystemMenu(Handle,false),1,
             MF_STRING or MF_BYPOSITION,
             SC_SIZE,'サイズ変更(&S)');
end;

//フォームにサイズ変更可能な境界を持たせる
procedure TForm1.CreateParams(var params: TCreateParams);
begin
  inherited;

  params.Style :=params.Style or WS_THICKFRAME;
end;

編集 削除
みんみん  2007-06-05 00:26:24  No: 26485  IP: 192.*.*.*

すいません、タイプミスがありました。

>>BordDerStyle :=bsDialog;
         ↓
  BorderStyle :=bsDialog;

です。

編集 削除
虫歯の日  2007-06-05 03:03:49  No: 26486  IP: 192.*.*.*

すごいです。できました。(WinXP SP2, Delphi 7)
みんみん さん、どうもありがとうございました。

編集 削除