Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2009, 20:26   #1
chandrasecar
Форумчанин
 
Аватар для chandrasecar
 
Регистрация: 03.10.2008
Сообщений: 180
Вопрос AlphaControls - перехват меню заголовка формы

Здравствуйте! Использую бесплатные компоненты AlphaControls (alphaskins.com). Форма скинуется полностью. Задача состоит в том, чтобы перехватить сообщения WM_NCRBUTTONDOWN (нажатие правой кнопки мыши на заголовке окна) и WM_NCLBUTTONDOWN (тоже самое но левая кнопка), и вместо меню заголовка выводить форму. Дело в том, что эти сообщения перехватываются самим компонентом: замечали, он делает свое меню заголовка формы? Есть код, который замечательно работает без компонентов AlphaControls:
Код:
private
    { Private declarations }
    procedure CaptionRClick(var Message: TMessage); message WM_NCRBUTTONDOWN;
    procedure CaptionLClick(var Message: TMessage); message WM_NCLBUTTONDOWN;
........

procedure TForm1.CaptionRClick(var Message: TMessage);
begin
   //если кликнули правой по шапке или иконке окна
   if (Message.wParam = HTCAPTION) or (Message.wParam = HTSYSMENU) then 
  begin
    ShowMessage('Правый клик по заголовку');
  end
  else inherited;  //остальное передаём окну
end;

procedure TForm1.CaptionLClick(var Message: TMessage);
begin
 //если кликнули по иконке окна
    if (Message.wParam = HTSYSMENU) then
  begin
    ShowMessage('Клик по иконке окна');
  end
  else inherited;
end;
У меня нет открытого кода, иначе бы разобрался. Наверняка как-то можно перехватить действия компонента на это сообщение и адаптировать этот код? Или может есть какой-то другой путь?
лучший подарок женщине-программисту
chandrasecar вне форума Ответить с цитированием
Старый 07.05.2009, 09:17   #2
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Как вариант кидай на форму ApplicationEvents и в его событии OnMessage пропиши :
Код:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
  if (Msg.message = WM_NCRBUTTONDOWN) then ShowMessage('Клик левой кнопкой по заголовку');
end;
Этот код будет показывать сообщение, но не покажет системное меню вообще ...
Дальше шагай сам ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена скина AlphaControls ScreN Компоненты Delphi 53 25.06.2013 06:03
Установка AlphaControls spamer Компоненты Delphi 22 09.06.2012 13:37
Установка AlphaControls Gromsky Компоненты Delphi 38 11.01.2012 12:55
В чем проблема появления символа & в начале каждого заголовка итема созданного в рунтайте раздела меню? SkAndrew Общие вопросы Delphi 17 10.08.2008 21:44
Установка AlphaControls v5.31 athlant64 Компоненты Delphi 4 08.03.2008 12:08