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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 22:16   #1
DeepPurple
 
Регистрация: 18.05.2009
Сообщений: 9
По умолчанию необходимо разьяснение действий

мне необходимо разобраться что для чего и как действует( а главное что значит)
Код:
const
  WM_CLICKBN=WM_USER+1;
.....................
 public
    procedure ButtonClick(Sender: TObject);
    procedure WMCLICKBN(var M: TMessage); message WM_CLICKBN;
......................
procedure TForm1.ButtonClick(Sender: TObject);
begin
  PostMessage(Form1.Handle,WM_CLICKBN,Integer(Sender),0);
end;
......................
procedure TForm1.WMCLICKBN(var M: TMessage);
var
  bn: TButton;
  i: Integer;
begin
  bn := TButton(M.WParam);
  if not (bn is TButton) then Exit;
  for i := 0 to High(BA)-1 do
  begin
    if BA[i]=bn then
    begin
      Move(BA[i+1],BA[i],SizeOf(TButton)*(High(BA)-i));
      Break;
    end;
  end;
  SetLength(BA,High(BA));
  FreeAndNil(bn);
end;
я хочу разобраться что это за метод, класс или ** что
PostMessage(Form1.Handle,WM_CLICKBN ,Integer(Sender),0);
и как он работает(насколько я знаю это перехватчик сообщений но хотелось бы поподробней) хотелось бы узнать что значит каждый параметр в данной строчке,
зачем( и что делает)
procedure WMCLICKBN(var M: TMessage); message WM_CLICKBN;
и зачем заводится константа( да еще и равная какой то другой константе которая не обьявлена).

Последний раз редактировалось mihali4; 27.05.2009 в 22:52.
DeepPurple вне форума
Старый 27.05.2009, 22:50   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Общий подход - ставим курсор на непонятное слово и жмем заветную пимпу F1. Подробнее и точнее, чем это сделали разработчики из Борланда в штатном хэлпе, объяснить будет трудно...

Буквосочетание "ХЗ" расценивается как скрытый мат и карается баном. На первый раз прощаю...
mihali4 вне форума
Старый 27.05.2009, 23:08   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
я хочу разобраться что это за метод, класс или ** что
PostMessage(Form1.Handle,WM_CLICKBN ,Integer(Sender),0);
и как он работает(насколько я знаю это перехватчик сообщений но хотелось бы поподробней) хотелось бы узнать что значит каждый параметр в данной строчке,
насмешили
это функция посылки сообщения окну, без ожидания ответа.
параметры:
1)Хендл окна которому будем слать сообщение
2)сообщение(его цифренное обозначение)
3)первый(wParam)параметр сообщения
4)второй(lParam)параметр сообщения
Цитата:
зачем( и что делает)
procedure WMCLICKBN(var M: TMessage); message WM_CLICKBN;
процедура обработки этого события.
Цитата:
и зачем заводится константа( да еще и равная какой то другой константе которая не обьявлена).
для обозначения нового типа сообщений.
(и кто тут не обьявлен? WM_USER константа из модуля messages)

еще вопросы, пока я добрый?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 27.05.2009, 23:25   #4
DeepPurple
 
Регистрация: 18.05.2009
Сообщений: 9
По умолчанию

большое спасибо, получается что при нажатии на кнопку окну формы отсылается сообщение, как только сообщение message WM_CLICKBN; будет получено включается процедура WMCLICKBN. которая используя первый параметр (wParam)=Integer(Sender) являющийся так сказать ссылкой на кнопку, ищет данную кнопку в массиве.
задам вот такой вопрос:
что такое хендл окна? и можно ли отправлять сообщение какому либо компоненту а не форме?
где указано что procedure WMCLICKBN(var M: TMessage); message WM_CLICKBN; это процедура именно обработки события поступления сообщения?
DeepPurple вне форума
Старый 27.05.2009, 23:35   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

хендл это дискриптор окна(описатель)
запомните окно это необязательно форма
дескриптор имеют например многие классы компонентов формы(Едиты, мемо, баттоны и тд)

да это процедура которая выполнится именно при поступлении сообщения message WM_CLICKBN
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 27.05.2009, 23:35   #6
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Цитата:
можно ли отправлять сообщение какому либо компоненту а не форме?
Для этого существует метод Perform
http://www.delphisources.ru/pages/fa...rm_method.html
Цитата:
что такое хендл окна?
Handle - это число - уникальный идентификатор окна в системе.
Ссылка с которой взял определение
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума
Старый 28.05.2009, 00:24   #7
DeepPurple
 
Регистрация: 18.05.2009
Сообщений: 9
По умолчанию

на данный момент это все что я хотел узнать, спасибо=)
DeepPurple вне форума
Старый 28.05.2009, 01:44   #8
virtuhay266
Пользователь
 
Регистрация: 28.05.2009
Сообщений: 57
По умолчанию

Меня учили, что break - это не хорошо.
virtuhay266 вне форума
Старый 28.05.2009, 05:55   #9
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от virtuhay266 Посмотреть сообщение
Меня учили, что break - это не хорошо.
а почему нехорошо не говорили?
vovk вне форума
Старый 28.05.2009, 11:10   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а почему нехорошо не говорили?
по той же причине что и отках от GOTO - деструктуризация и усложнение анализируемости кода )
Впрочем это на вкус разработчика...
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение действий Delphi AlexandЯ Общие вопросы Delphi 2 29.04.2009 13:00
выполнение нескольких действий??? zzzzz HTML и CSS 2 11.12.2008 11:59
выполнения арифметических действий над обыкновенными дробями jenja Общие вопросы C/C++ 1 24.10.2008 10:35
Фиксирование действий в файле asale Microsoft Office Excel 7 17.08.2008 09:06
Как защитить рабочий лист от ввода с клавиатуры, но не от действий макроса ? valerij Microsoft Office Excel 7 28.05.2008 23:59