Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
ВнизКак убрать Title у формы, но при этом оставить бордюр формы Найти похожие ветки
← →
maxim2 (2002-09-18 12:26) [0]Привет всем!
Как убрать Title у формы, но при этом оставить бордюр формы?
Может кто знает.
← →
neg2001 (2002-09-18 13:02) [1]Можно сделать так:
BorderStyle:=bsNone;
А на форму положить панель с Align:=alClient;
Вид такой же как и у формы с бордюром.
← →
Yr2 (2002-09-18 13:03) [2]Если я правильно понимаю твои термины "Title" и "бордюр", то просто сотри у формы свойство Caption.
← →
alena.svt (2002-09-18 14:55) [3]SetWindowLong
← →
alena.svt (2002-09-18 15:07) [4]Ладно избегу вчерашнего разговора о том как надо отвечать на вопросы.
В событии OnCreate у формы определите следующее.
procedure TForm1.FormCreate(Sender: TObject);
var
FSizeCaption: Integer;
begin
FSizeCaption := GetSystemMetrics(SM_CYCAPTION);
SetWindowLong(Form1.Handle, GWL_STYLE, GetWindowLong(Form1.Handle, GWL_Style) and not WS_Caption);
Form1.Height:=Form1.Height - FSizeCaption;
end;
При данном коде форма не должна иметь стиль(чтоб рамка была)
bsSingle или bsToolWindow остальные пожалуйста.
← →
Song (2002-09-18 15:38) [5]Вообще можно убрать Caption формы, а по границам наложить TPanel или TBevel
← →
Song (2002-09-18 15:41) [6]2alena.svt © (18.09.02 15:07)
См. мой последний ответ:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1032276741&n=0
← →
alena.svt (2002-09-18 16:06) [7]Song © (18.09.02 15:41)
Увидала, завтра попробую но адрес был тот же.
maxim2 © (18.09.02 12:26)
Сделай себе компоненту на будущее и не майся больше.
unit MyRemoveCaption;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TMyRemoveCaption = class(TComponent)
private
FSizeCaption : Integer;
NActive : boolean;
FEnabled : boolean;
procedure SetActive(Value: Boolean);
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
published
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
procedure Add(HandleForm: TForm);
procedure Remove(HandleForm: TForm);
property Enabled: boolean read FEnabled write SetActive default false;
{ Published declarations }
end;
procedure Register;
implementation
Var
ParentForm: TForm;
{ TMyRemoveCaption }
procedure TMyRemoveCaption.Add(HandleForm: TForm);
begin
NActive:=False;
If Self.ComponentState = [csDestroying] Then exit;
SetWindowLong(HandleForm.Handle, GWL_STYLE, GetWindowLong(HandleForm.Handle, GWL_Style) + WS_Caption);
HandleForm.Height:=HandleForm.Height + FSizeCaption;
end;
constructor TMyRemoveCaption.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ParentForm := TForm(AOwner);
end;
destructor TMyRemoveCaption.Destroy;
begin
if NActive then Add(ParentForm);
inherited Destroy;
end;
procedure TMyRemoveCaption.Remove(HandleForm: TForm);
begin
NActive:=True;
FSizeCaption := GetSystemMetrics(SM_CYCAPTION);
SetWindowLong(HandleForm.Handle, GWL_STYLE, GetWindowLong(HandleForm.Handle, GWL_Style) and not WS_Caption);
HandleForm.Height:=HandleForm.Height - FSizeCaption;
end;
procedure TMyRemoveCaption.SetActive(Value: Boolean);
begin
if Value then begin
Remove(ParentForm);
FEnabled:=True;
end;
if not Value then begin
Add(ParentForm);
FEnabled:=False;
end;
end;
procedure Register;
begin
RegisterComponents("Samples", [TMyRemoveCaption]);
end;
end.
← →
Kibitzer (2002-09-18 20:22) [8]Мне когда-то тоже понадобилась форма без заголовка но с рамкой. Вот вырезка из моего старого проекта:
TForm2 = class(TForm)
protected
procedure CreateParams( var Params: TCreateParams); override;
end;
...
procedure TForm2.CreateParams( var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style or WS_DLGFRAME {or WS_SIZEBOX};
end;
А у формы ставимBorderStyle
вbsNone
Если же раскомментировать стильWS_SIZEBOX
, то размеры формы можно будет изменять мышкой.
По идее всё это должно настраиваться в инспекторе объектов, но таких свойств нету и это по моему неправильно. У борланда много кривых и недоделаных компонентов :(
Взять например свойствоFormStyle
у той же формы. Выходит что я могу сделать либоMDIForm
, либоStayOnTop
? Но это не так! Однажды мне понадобилась фома которая и MDI и Stay on top. Опять пришлось обратиться кCreateParams
:
//FormStyle установим в fsMDIForm
procedure TForm1.CreateParams( var Params: TCreateParams);
begin
inherited;
Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST;
end;
:(
Или понадобилось уTCheckBox
иTRadioButton
свойствоWordWrap
. Ведь они способны иметь это свойство. Достаточно (в том жеCreateParams
, например) сделать:Params.Style := Params.Style or $2000
. Это Борландам трудно было сделать? Пришлось писать наследника... :(
Про DBGrid я лучше вообще промолчу... :-/
← →
alena.svt (2002-09-18 22:13) [9]Ну что можно на это сказать
Зато многому научились и теперь можете попровлять то что борланд не сделал. А перекрывать методы да еще и с участием WinApi тоже приятно ведь можно гордо заявить что я действительно могу!
Ну а если б дядьки в борланде сделали все то зачем бы мы нужны были.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c