Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.10.03;
Скачать: [xml.tar.bz2];

Вниз

Изменить шрифт заголовка окна   Найти похожие ветки 

 
DC-AC   (2010-07-07 15:21) [0]

Доброго времени суток.
Нужно написать заголовок основной формы меньшим шрифтом. Делаю так :

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 := clWhite;
    Font.Style := [fsBold];
    TextOut(GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),
      Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height)) / 2) + 1,
        " Мой текст");
  end;
finally
  ReleaseDC(Form1.Handle, ACanvas.Handle);
  ACanvas.Free;
end;
end;


Поставил обработчик OnPaint

procedure TForm1.FormPaint(Sender: TObject);
begin
SendMessage(Form1.Handle, WM_NCPAINT, 0, 0);
end;

Этот обработчик помогает при сворачивании-разворачивании окна, а при вызове любой модальной формы или MessageDlg - заголовок у формы пропадает. Какой обработчик еще нужно поставить ?


 
aka   (2010-07-07 15:30) [1]


> Какой обработчик еще нужно поставить ?

их не много, втыком нет?


 
Юрий Зотов ©   (2010-07-07 15:31) [2]

WM_NCACTIVATE ?


 
DC-AC   (2010-07-07 16:05) [3]

Частично помогло

 private
   { Private declarations }
  procedure WMNCACTIVATE(var M: TWMNCACTIVATE); message WM_NCACTIVATE;
...
procedure TForm1.WMNCACTIVATE(var M: TWMNCACTIVATE);
var
ACanvas: TCanvas;
begin
inherited;
ACanvas := TCanvas.Create;
try
  ACanvas.Handle := GetWindowDC(Form1.Handle);
  with ACanvas do
  begin
    if M.Active then Brush.Color := clActiveCaption
    else Brush.Color := clInActiveCaption;
    Font.Name := "Tahoma";
    Font.Size := 8;
    Font.Color := clWhite;
    Font.Style := [fsBold];
    TextOut(GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CXBORDER),
      Round((GetSystemMetrics(SM_CYCAPTION) - Abs(Font.Height)) / 2) + 1,
        " Мой текст");
  end;
finally
  ReleaseDC(Form1.Handle, ACanvas.Handle);
  ACanvas.Free;
end;
end;

Но : при вызове модальной формы фон заголовка нормальный, при вызове MessageDlg все равно clActiveCaption
if M.Active then Brush.Color := clActiveCaption else Brush.Color := clInActiveCaption не помогает...


 
Игорь Шевченко ©   (2010-07-07 16:31) [4]

Брось ты эту затею


 
DC-AC   (2010-07-08 07:55) [5]

Наверное придется бросить. Просто потребовалось увеличить длину Caption а куча контролов на форме уже расставлены, так неохота было все заново выравнивать. Несколько десятков MessageDlgPos тоже придется переделывать :-(. Всем спасибо.


 
Юрий Зотов ©   (2010-07-08 09:37) [6]


> DC-AC   (08.07.10 07:55) [5]

Когда-то делал я класс формы с собственной прорисовкой Caption. Сделать-то сделал, но не запросто. Там действительно не все так просто, пришлось вставлять порядка десятка обработчиков.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.10.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
2-1278323902
pit
2010-07-05 13:58
2010.10.03
Преобразование вида "file:///C:...." в обычный windows путь


2-1279007874
Matveih1
2010-07-13 11:57
2010.10.03
Runtime packages


15-1278568000
Дмитрий С
2010-07-08 09:46
2010.10.03
PHP: utf8->windows1251


2-1278747785
john-s
2010-07-10 11:43
2010.10.03
Не подключается к удаленной БД


2-1278083537
AKE
2010-07-02 19:12
2010.10.03
Как скопировать один массив массивов в другой?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский