Манипуляции с заголовком формы
Автор: Vimil Saju
Чтобы добавить дополнительную кнопку, нам прийдётся создать обработчики для следующих событий:
WM_NCPAINT;//вызывается, когда перерисовывается не клиентская область формы
WM_NCACTIVATE; вызывается, когда заголовок формы становится активныи
WM_NCLBUTTONDOWN; вызывается, когда кнопка мыши нажимается на не клиентской области
WM_NCMOUSEMOVE; вызывается, когда курсор мыши передвигается по не клиентской области
WM_MOUSEMOVE;вызывается, когда курсор мыши передвигается по клиентской области
WM_LBUTTONUP; вызывается, когда кнопка мыши отпушена в клиентской области
WM_NCLBUTTONUP; вызывается, когда кнопка мыши отпушена в не клиентской области
WM_NCLBUTTONDBLCLK; вызывается при двойном щелчке мышкой в не клиентской области
- Подробности
- Родительская категория: TForm
- Категория: Манипуляции с заголовком формы
Автор: Christian Cristofori
В примере показывается, как изменять заголовок окна (видимый в списке задач при переключении между приложениями) при минимизации окна в иконку.
Сперва необходимо определить сообщение поумолчанию:
Code: |
Const DefMsgNorm = 'MyApp version 1.0'; DefMsgIcon = 'MyApp. (Use F12 to turn of)'; |
- Подробности
- Родительская категория: TForm
- Категория: Манипуляции с заголовком формы
Создайте обработчик одного из сообщений WM_NC (non client - не клиентских) (посмотрите
WM_NC в Windows API help). Пример показывает как перехватить вижение мыши во всей
неклиенстской области окна (рамка и заголовок).
- Подробности
- Родительская категория: TForm
- Категория: Манипуляции с заголовком формы
Note: The formDeactivate never gets called so when the form isn't active, sometimes the FormPaint isn't called. If anything causes the form to be repainted while in inactive, it draws correctly.
Примечание: formDeactivate никогда не вызывается, когда форма не активна, иногда FormPaint не называется. Если что-то вызывает форму, чтобы быть перекрашены в то время как в неактивном, он правильно рисует.
- Подробности
- Родительская категория: TForm
- Категория: Манипуляции с заголовком формы
Автор: Fernando Silva
Пример показывает, как при инициализации формы происходит поиск нашего окна, а затем вычисление местоположения нужной нам кнопки в заголовке окна.
Code: |
procedure TForm1.FormCreate(Sender: TObject); var hwndHandle: THANDLE; hMenuHandle: HMENU; iPos: Integer;
begin hwndHandle := FindWindow(nil, PChar(Caption)); if (hwndHandle <> 0) then begin hMenuHandle := GetSystemMenu(hwndHandle, FALSE); if (hMenuHandle <> 0) then begin DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND); iPos := GetMenuItemCount(hMenuHandle); Dec(iPos); { Надо быть уверенным, что нет ошибки т.к. -1 указывает на ошибку } if iPos > -1 then DeleteMenu(hMenuHandle, iPos, MF_BYPOSITION); end; end; end; |
- Подробности
- Родительская категория: TForm
- Категория: Манипуляции с заголовком формы