Примечание: formDeactivate не вызовится пока форма не станет активной,иногда FormPaint не вызывается. Если форма была не активто, то при активации перерисуется.
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 можно с помощью обработчика сообщения WMNCPaint.
Вот пример кода:
typeTForm1=class(TForm)privateprocedureWMNCPaint(varMsg:TWMNCPaint);messageWM_NCPAINT;publicend;varForm1:TForm1;implementationprocedureTForm1.WMNCPaint(varMsg:TWMNCPaint);varACanvas:TCanvas;begininherited;ACanvas:=TCanvas.Create;tryACanvas.Handle:=GetWindowDC(Form1.Handle);withACanvasdobeginBrush.Color:=clRed;// Изменить цвет шрифта на красныйFont.Name:='Tahoma';// Установить имя шрифта в TahomaFont.Size:=8;// Установить размер шрифта в 8Font.Style:=[fsItalic,fsBold];// Установить стиль шрифта в итал. и жир.TextOut(GetSystemMetrics(SM_CYMENU)+GetSystemMetrics(SM_CXBORDER),Round((GetSystemMetrics(SM_CYCAPTION)-Abs(Font.Height))/2)+1,'Some Text');// Нарисовать текст в заголовкеend;finallyReleaseDC(Form1.Handle,ACanvas.Handle);ACanvas.Free;end;end;
В этом примере мы используем обработчик сообщения WMNCPaint для рисования заголовка. Мы устанавливаем имя шрифта в 'Tahoma', размер шрифта в 8, цвет шрифта в красный и стиль шрифта в итал. и жир. Затем мы нарисуем текст "Some Text" в заголовке.
Чтобы изменить выравнивание текста, можно использовать функцию TextOut с различными координатами по горизонтали и вертикали. Например, чтобы центрировать текст горизонтально, можно рассчитать координату x следующим образом:
Обратите внимание, что вам нужно рассчитать координаты x и y в зависимости от размера вашего текста. Формулы выше только примеры и могут не работать для всех случаев.
Как изменить шрифт и выравнивание в заголовке формы можно сделать за помощью процедуры FormPaint, где можно задать нужный шрифт и параметры выравнивания.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS