http://seprize.narod.ru |
Урок №2 (Обработка событий, убегающая кнопка) В этом уроке я постараюсь объяснить как создается обработка событий. Начнем с того что я поясню что такое событие. Событие (английское event) - это как вы наверное догадались это такая ситуация, когда что-то происходит. Вот например вы нажали кнопку, и вот тут-то и происходит обработка этого события. В первом уроке как раз была обрабытка события нажатия на кнопку, я специально не стал вдаваться в подробности. Тем более сразу все запомнить невозможно. Надо сделать отступление. Операционная система построена таким образом, что она постоянно обрабатывает сообщения, реагируя на действия пользователя, на его нажатия на клавиатуре и мышке. Очень часто получается так что система ждет ввода от пользователя. А после этого начинает выполнять определенные действия простые или не очень, может даже крайне сложные операции. Так вот, при определенных действиях пользователя ваше приложение вызывает определенные подпрограммы. Событий этих очень много, так что все мы рассматривать не будем, а рассмотрим в качестве примера простой пример.
Теперь необходимо еще раз создать обработчик событий для события OnClick, надеюсь Вы еще помните как это делается. В появившемся тексте подпрограммы : . . . Между операторами begin и end записываем команду Close; После этого давайте добавим еще один обработчик события. На этот раз это будет OnMouseMove это события возникает при движении мышки над кнопкой, причем кроме просто вызова подпрограммы этого события туда передаются еще и координаты мышки относительно левого верхнего края кнопки. Создав обработчик события допишите в него следующий программный код. Чуть позже я объясню что оно означает. procedure TForm1.Button1MouseMove(Sender: TObject;
Shift: TShiftState; X, После того как добавите этот код запустите ваше приложение и понаблюдайте как кнопка будет убегать от мышки, по полю формы. курсор практически невозможно навести на кнопку. Теперь небольшие пояснения. В данной подпрограмме очень эффективно применяется условные оператор if, о нем можно прочитать в словаре, к нему же относится else. Так же применяются свойства кнопок, а именно Button1.Width определение ширины кнопки1, и Button1.Height - определение ее высоты. Оператор div служит для деления. Координаты X и Y - это координаты мышки которые передаются в программу. abs - функция вычисляющая модуль В циклах происходят не сложные математические вычисления, которые с первого взгляда выглядят очень страшновато. Но поняв что делает каждая функция можно без труда разобраться. В данном примере я специально применял чтение свойств кнопки (Button1.Top , Button1.Left , Button1.Height , Button1.Width) что бы сделать программу более универсальной. Можно было вместо них ввести и точные значения. Это выглядело бы очень хорошо вот сравните : procedure TForm1.Button1MouseMove(Sender: TObject;
Shift: TShiftState; X, Программы стала попроще, но если вы теперь измените размеры кнопки то программа уже не будет работать и вам придется ее исправлять подставляя новые значения. Так что подумайте. И мой совет на будущее никогда не используйте точные числа в своих программах, ведь эти числа вы не просто придумали, а взяли опираясь на что-то. Значит эти числа можно откуда-то взять программе самой, может быть вычислить. Причем желательно сразу предусмотреть, что бы Ваша программа прекрасно работала при нескольких возможных рабочих значениях, проверить ее работу на особо критичных моментах И тогда Вам придется делать меньше работы когда вы что-то измените, Ваши программы будут универсальными. Ссылки
|
|
Если вы используете материалы с данного сайта, то сообщите
владельцу по почте |
© Сайт открылся 04.09.2002 Дата последнего обновления 13.09.2002 |