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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2009, 17:19   #1
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию TMessage для кнопки

Вот так я отлавливаю событие нажатия мышью по форме:

Код:
private
   procedure WndProc(var Msg: TMessage); message  WM_LBUTTONDOWN;

.....

procedure TForm1.WndProc(var Msg: TMessage);
begin
Caption := '1';
end;
А как отловить нажатие по Button1(например) через тот же message ???
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 15.08.2009, 17:31   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

ИМХО как вариант - дописать после
Код:
Caption :='1'
Проверку на координаты курсора и если совпадают с областью кнопы то делать бла бла бла.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 15.08.2009, 17:43   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

А можно узнать смысл сего... Серьёзно просто интерестно. Академический понимаю (изучение), а практический?
vovk вне форума Ответить с цитированием
Старый 15.08.2009, 18:53   #4
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

установи свою оконную процедуру для кнопки, или обрабатывай ApplicationEvents.onMessage()
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 15.08.2009, 20:09   #5
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

vovk все правильно Вы понимаете - изучение. Вот пытаюсь понять для чего нужны эти Message, если есть события для всех компонентов? Если кто может объясните, или дайте де можно прочитать что бы понятно расписано было.

Цитата:
установи свою оконную процедуру для кнопки, или обрабатывай ApplicationEvents.onMessage()
С этим тоже поиграюсь.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 15.08.2009, 20:30   #6
s.Creator
Форумчанин
 
Регистрация: 28.09.2008
Сообщений: 344
По умолчанию

Цитата:
Сообщение от spamer Посмотреть сообщение
vovk все правильно Вы понимаете - изучение. Вот пытаюсь понять для чего нужны эти Message, если есть события для всех компонентов? Если кто может объясните, или дайте де можно прочитать что бы понятно расписано было.
- Message намного больше чем событий
- и пригодятся когда будешь писать свои компоненты расширяющие функционал стандартных
(если кратко )
s.Creator вне форума Ответить с цитированием
Старый 15.08.2009, 20:38   #7
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

Я бы сказал, зачем нужны эти события если есть сообщения
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 15.08.2009, 23:09   #8
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Народ помогите. Вот пробую я реализовать как сказал 0nni.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
ApplicationEvents1.OnMessage := ApplicationEvents1Message;
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
if Msg.message = WM_LBUTTONDOWN then
  ListBox1.Items.Add('111');
end;
Оно то вроде работает, но как то странно.....что бы добавить несколько строк в листбокс приходится баттон несколько раз нажимать.
Скажите что я не так пишу?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 15.08.2009, 23:16   #9
0nni
Форумчанин
 
Аватар для 0nni
 
Регистрация: 24.07.2008
Сообщений: 279
По умолчанию

Цитата:
Сообщение от spamer Посмотреть сообщение
Народ помогите. Вот пробую я реализовать как сказал 0nni.
[CODE]procedure TForm1.Button1Click(Sender: TObject);
begin
ApplicationEvents1.OnMessage := ApplicationEvents1Message;
end;
Это зачем? просто создай такой обработчик
Код:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.hwnd = Button1.Handle then
  case msg.message  of
    WM_LBUTTONDOWN :
      begin
        ListBox1.Items.Add('111');
      end;
  end;
end;
Сказал и загрустил от бесспорности своей правоты.
0nni вне форума Ответить с цитированием
Старый 15.08.2009, 23:37   #10
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

0nni, спс.

Ну крапаль разобрался с этими мессагами..............а вот правда есть еще 1 вопрос:

Вариант 1
Код:
private
   procedure WndProc(var Msg: TMessage); message  WM_LBUTTONDOWN;

.....

procedure TForm1.WndProc(var Msg: TMessage);
begin
          //Какие то  действия
end;
Вариант 2
Код:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  case Msg.message  of
    WM_LBUTTONDOWN :
      begin
        //Какие то  действия
      end;
  end;
end;
Вот эти два варианта событий как я понял одинаковые? Просто первый способ через посылку сообщения message, а второй через визуальный компонент ApplicationEvents? Скажите я правильно понял? Или что то не так?
И какая разница тогда, использовать компонент ApplicationEvents или писать как в первом способе?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отследить нажатие кнопки со стрелкой для раскрытия поля со списком Bezdar Microsoft Office Excel 4 16.03.2010 12:47
Действие для кнопки segail Microsoft Office Excel 7 25.07.2009 19:04
Код для кнопки ruavia3 Microsoft Office Excel 31 03.06.2009 09:15
как создать процедуру для кнопки которая еще не создана? DeepPurple Общие вопросы Delphi 10 21.05.2009 13:50
Delphi. Код для кнопки. Xeon332 Помощь студентам 6 20.09.2008 07:03