Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как изменить шрифт и выравнивание в заголовке формы?

Delphi , Программа и Интерфейс , Заголовок формы

Как изменить шрифт и выравнивание в заголовке формы?

Примечание: formDeactivate не вызовится пока форма не станет активной,иногда  FormPaint не вызывается. Если форма была не активто, то при активации перерисуется.

Code:

unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
 
type
TForm1 = class(TForm)
   procedure FormPaint(Sender: TObject);
   procedure FormResize(Sender: TObject);
   procedure FormDeactivate(Sender: TObject);
   procedure FormActivate(Sender: TObject);
private
public
   { Public declarations }
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
procedure TForm1.FormPaint(Sender: TObject);
var
LabelHeight, LabelWidth, LabelTop: Integer;
caption_height, border3d_y, button_width, border_thickness: Integer;
MyCanvas: TCanvas;
CaptionBarRect: TRect;
begin
CaptionBarRect := Rect(0, 0, 0, 0);
MyCanvas := TCanvas.Create;
MyCanvas.Handle := GetWindowDC(Form1.Handle);
border3d_y := GetSystemMetrics(SM_CYEDGE);
button_width := GetSystemMetrics(SM_CXSIZE);
border_thickness := GetSystemMetrics(SM_CYSIZEFRAME);
caption_height := GetSystemMetrics(SM_CYCAPTION);
LabelWidth := Form1.Canvas.TextWidth(Form1.Caption);
LabelHeight := Form1.Canvas.TextHeight(Form1.Caption);
LabelTop := LabelHeight - (caption_height div 2);
CaptionBarRect.Left := border_thickness + border3d_y + button_width;
CaptionBarRect.Right := Form1.Width - (border_thickness + border3d_y)
               - (button_width * 4);
CaptionBarRect.Top := border_thickness + border3d_y;
CaptionBarRect.Bottom := caption_height;
if Form1.Active then
   MyCanvas.Brush.Color := clActiveCaption
else
   MyCanvas.Brush.Color := clInActiveCaption;
MyCanvas.Brush.Style := bsSolid;
MyCanvas.FillRect(CaptionBarRect);
MyCanvas.Brush.Style := bsClear;
MyCanvas.Font.Color := clCaptionText;
MyCanvas.Font.Name := 'MS Sans Serif';
MyCanvas.Font.Style := MyCanvas.Font.Style + [fsBold];
DrawText(MyCanvas.Handle, PChar(' ' + Form1.Caption), Length(Form1.Caption) + 1,
   CaptionBarRect, DT_CENTER or DT_SINGLELINE or DT_VCENTER);
MyCanvas.Free;
end;
 
procedure TForm1.FormResize(Sender: TObject);
begin
Form1.Paint;
end;
 
procedure TForm1.FormDeactivate(Sender: TObject);
begin
Form1.Paint;
end;
 
procedure TForm1.FormActivate(Sender: TObject);
begin
Form1.Paint;
end;
 
end.

 


 

Code:

{ ... }
type
TForm1 = class(TForm)
private
   procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
public
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);
var
ACanvas: TCanvas;
begin
inherited;
ACanvas := TCanvas.Create;
try
   ACanvas.Handle := GetWindowDC(Form1.Handle);
   with ACanvas do
   begin
     Brush.Color := clActiveCaption;
     Font.Name := 'Tahoma';
     Font.Size := 8;
     Font.Color := clred;
     Font.Style := [fsItalic, fsBold];
     TextOut(GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),
       Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height)) / 2) + 1,
         ' Some Text');
   end;
finally
   ReleaseDC(Form1.Handle, ACanvas.Handle);
   ACanvas.Free;
end;
end;

Взято с Delphi Knowledge Base: http://www.baltsoft.com/

Статья Как изменить шрифт и выравнивание в заголовке формы? раздела Программа и Интерфейс Заголовок формы может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


:: 2012-02-24 15:45:59 :: re:Как изменить шрифт и выравнивание в заголовке формы?

пользователь: user89.

Оба способа не до конца работают правильно.
Кидаем на форму кнопку и пишем:

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('А теперь заголовок на форме уже не по центру');
end;


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Заголовок формы ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
29.03.2024 10:55:00/0.03233790397644/0