Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.30;
Скачать: CL | DM;

Вниз

Как убрать 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
4-98416
MDRLab
2002-08-13 21:04
2002.09.30
CD ROM: открыть - закрыть.


1-98060
maxim2
2002-09-19 12:39
2002.09.30
Есть ли такой компонент, или как сделать...


14-98285
Turalyon
2002-09-02 09:34
2002.09.30
А есть ли здесь кто из Ярославля?


1-98218
Anar
2002-09-18 16:33
2002.09.30
Чтение из тестового файла в ListBox


1-98046
qube
2002-09-18 17:22
2002.09.30
MapInfo