Каталог книг

Александр Чиртик Delphi. Трюки и эффекты

Перейти в магазин

Сравнить цены

Описание

«Delphi. Трюки и эффекты», как и все издания данной серии, адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые, интересные вещи. В первой части книги многое говорится о среде разработки Delphi (самых последних версий) и программировании на языке Object Pascal. Благодаря этому издание подходит и новичкам, и начинающим программистам. Вторая (основная) часть книги описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения МРЗ и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Характеристики

  • Форматы

Сравнить Цены

Предложения интернет-магазинов
Александр Чиртик Delphi. Трюки и эффекты Александр Чиртик Delphi. Трюки и эффекты 49 р. litres.ru В магазин >>
Александр Чиртик Программирование в Delphi. Трюки и эффекты Александр Чиртик Программирование в Delphi. Трюки и эффекты 70 р. litres.ru В магазин >>
Delphi. Трюки и эффекты (+CD) Delphi. Трюки и эффекты (+CD) 53 р. piter.com В магазин >>
Программирование в Delphi. Трюки и эффекты Программирование в Delphi. Трюки и эффекты 88 р. piter.com В магазин >>
Александр Чиртик Программирование на C++. Трюки и эффекты Александр Чиртик Программирование на C++. Трюки и эффекты 77 р. litres.ru В магазин >>
3ds Max 2008. Трюки и эффекты (+DVD) 3ds Max 2008. Трюки и эффекты (+DVD) 38 р. piter.com В магазин >>
Владимир Верстак 3ds Max 2008. Трюки и эффекты (+ DVD-ROM) Владимир Верстак 3ds Max 2008. Трюки и эффекты (+ DVD-ROM) 474 р. ozon.ru В магазин >>

Статьи, обзоры книги, новости

Александр Чиртик Delphi. Трюки и эффекты

Название книги Delphi. Трюки и эффекты Борисок Валерий Викторович Корвель Юрий Иванович Чиртик Александр Анатольевич

« Delphi. Трюки и эффекты», как и все издания данной серии, адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые, интересные вещи. В первой части книги многое говорится о среде разработки Delphi (самых последних версий) и программировании на языке Object Pascal. Благодаря этому издание подходит и новичкам, и начинающим программистам. Вторая (основная) часть книги описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения МРЗ и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Александр Чиртик Delphi. Трюки и эффекты

В настоящее время количество книг, посвященных различным языкам программирования, настолько велико, что иногда просто не знаешь, какую выбрать. Цель этой книги – не просто тривиальное изложение материала о Delphi. Она поможет вам получить опыт в решении многих задач. В итоге у вас будет необходимый базис знаний, который даст возможность легко и быстро усваивать что-то новое. Здесь вы найдете ответы на вопросы, которые возникают у большинства людей при разработке своих собственных приложений. Вам больше не придется задумываться над тем, как решать мелкие задачи, которые являются повседневной работой большинства программистов. У вас появится возможность тратить больше времени именно на основную цель, поставленную перед вами, а не на второстепенные.

Данная книга рассчитана на читателей, которые уже имеют некий опыт в программировании, причем достаточный, чтобы не излагать тривиальные вещи заново. Но сразу отмечу, пусть даже вы делаете свои первые шаги на пути к написанию приложений на высоком уровне, книга окажет вам неоценимую помощь. Она построена так, чтобы вы смогли с высокой степенью эффективности узнавать новый материал. В конце книги есть приложения в удобном для восприятия виде. В них вы найдете информацию, которая часто используется при написании программ.

Зачастую люди выбирают Delphi за его простоту. Программа подкупает начинающих пользователей, которые хотят почти сразу писать программы, а не разбираться в особенностях синтаксиса языка. Простота в совокупности с мощью дают вам целый набор инструментов для воплощения задуманного. Однако запомните: чтобы научиться хорошо программировать, недостаточно иметь огромный объем теоретических знаний, хотя и он немаловажен. Следует научиться думать в концепции выбранного вами языка, и тогда вас ждет успех. Ведь не понимая, зачем все это нужно, вы не сможете эффективно воспользоваться ресурсами языка для наиболее удачного решения поставленных задач.

В этой книге описано множество примеров. Есть как относительно простые, так и довольно сложные. Но пусть последнее вас не пугает. К тому моменту, когда вы начнете их рассматривать, они не покажутся вам особенно трудными.

Источник:

litresp.ru

Читать Excel

Александр Чиртик Delphi. Трюки и эффекты
  • ЖАНРЫ
  • АВТОРЫ
  • КНИГИ 530 155
  • СЕРИИ
  • ПОЛЬЗОВАТЕЛИ 458 389

Delphi. Трюки и эффекты

В настоящее время количество книг, посвященных различным языкам программирования, настолько велико, что иногда просто не знаешь, какую выбрать. Цель этой книги – не просто тривиальное изложение материала о Delphi. Она поможет вам получить опыт в решении многих задач. В итоге у вас будет необходимый базис знаний, который даст возможность легко и быстро усваивать что-то новое. Здесь вы найдете ответы на вопросы, которые возникают у большинства людей при разработке своих собственных приложений. Вам больше не придется задумываться над тем, как решать мелкие задачи, которые являются повседневной работой большинства программистов. У вас появится возможность тратить больше времени именно на основную цель, поставленную перед вами, а не на второстепенные.

Данная книга рассчитана на читателей, которые уже имеют некий опыт в программировании, причем достаточный, чтобы не излагать тривиальные вещи заново. Но сразу отмечу, пусть даже вы делаете свои первые шаги на пути к написанию приложений на высоком уровне, книга окажет вам неоценимую помощь. Она построена так, чтобы вы смогли с высокой степенью эффективности узнавать новый материал. В конце книги есть приложения в удобном для восприятия виде. В них вы найдете информацию, которая часто используется при написании программ.

Зачастую люди выбирают Delphi за его простоту. Программа подкупает начинающих пользователей, которые хотят почти сразу писать программы, а не разбираться в особенностях синтаксиса языка. Простота в совокупности с мощью дают вам целый набор инструментов для воплощения задуманного. Однако запомните: чтобы научиться хорошо программировать, недостаточно иметь огромный объем теоретических знаний, хотя и он немаловажен. Следует научиться думать в концепции выбранного вами языка, и тогда вас ждет успех. Ведь не понимая, зачем все это нужно, вы не сможете эффективно воспользоваться ресурсами языка для наиболее удачного решения поставленных задач.

В этой книге описано множество примеров. Есть как относительно простые, так и довольно сложные. Но пусть последнее вас не пугает. К тому моменту, когда вы начнете их рассматривать, они не покажутся вам особенно трудными.

Ваши замечания, предложения, вопросы отравляйте по адресу электронной почты [email protected] (издательство «Питер», компьютерная редакция).

На сайте издательства http://www.piter.com вы найдете подробную информацию о наших книгах.

• Привлечение внимания к приложению

• Окна и кнопки нестандартной формы

• Немного о перемещении окон

• Добавление пункта в системное меню окна

• Отображение формы поверх других окон

Было решено начать книгу именно с необычных приемов использования оконного интерфейса. Причиной стало то, что при работе с операционной системой Windows мы видим окна постоянно и везде (отсюда, собственно, и название). Речь идет не только об окнах приложений, сообщений, свойств – понятие о таких окнах есть у любого начинающего пользователя Windows.

В своих собственных окнах рисуются и элементы управления (текстовые поля, панели инструментов, таблицы, полосы прокрутки, раскрывающиеся списки и т. д.). Взгляните на интерфейс, например, Microsoft Word. Здесь вы увидите, что даже содержимое документа находится в своем собственном окне с полосами прокрутки (правда, это не обязательно элемент управления). Окна элементов управления отличаются от «самостоятельных» окон (упрощенно) отсутствием стиля, позволяющего им иметь заголовок, а также тем, что являются дочерними по отношению к другим окнам. Понимание этого момента является важным, так как на нем основана часть примеров данной главы.

Рассматриваемые примеры частично используют средства, которые предусмотрены в Borland Delphi, а частично – возможности «чистого» API (см. гл. 2). Практически все API-функции работы с окнами требуют задания параметра типа HWND – дескриптора окна. Это уникальное значение, идентифицирующее каждое существующее в текущем сеансе Windows окно. В Delphi дескриптор окна формы и элемента управления хранится в параметре Handle соответствующего объекта.

Нужно также уточнить, что в этой главе термины «окно» и «форма» употребляются как синонимы, когда речь идет о форме (в том смысле, который это слово имеет при программировании с использованием Delphi). Когда же речь идет об элементах управления, то так и говорится: окно элемента управления.

1.1. Привлечение внимания к приложению

Начнем с простых примеров, позволяющих привлечь внимание пользователя к определенному окну приложения. Это может пригодиться в различных ситуациях: от уведомления пользователя об ошибке программы до простой сигнализации ему, какое окно в данный момент времени ожидает пользовательского ввода.

Инверсия заголовка окна

Вероятно, вы не раз могли наблюдать, как некоторые приложения после выполнения длительной операции или при возникновении ошибки как бы подмигивают. При этом меняется цвет кнопки приложения на Панели задач, а также состояние окна с активного на неактивное. Такой эффект легко достижим при использовании API-функции FlashWindow или ее усовершенствованного, но более сложного варианта – функции FlashWindowEx.

Здесь сказано, что функции изменяют цвет кнопки приложения на Панели задач. Однако этого не происходит при выполнении приведенных ниже примеров. Почему так получается и как с этим бороться, рассказано в разд. 1.2.

Первая из этих функций позволяет один раз изменить состояние заголовка окна и кнопки на Панели задач (листинг 1.1).

procedure TForm1.cmbFlashOnceClick(Sender: TObject);

Как видите, функция принимает дескриптор нужного окна и параметр (тип BOOL) инверсии. Если значение флага равно True, то состояние заголовка окна изменяется на противоположное (из активного становится неактивным и наоборот). Если значение флага False, то состояние заголовка окна восстанавливается в свое первоначальное значение (активно или неактивно).

Более сложная функция FlashWindowEx в качестве дополнительного параметра (кроме дескриптора окна) принимает структуру FLASHWINFO, заполняя поля которой, можно настроить параметры мигания кнопки приложения и/или заголовка окна.

В табл. 1.1 приведено описание полей структуры FLASHWINFO.

Значение параметра dwFlags формируется из приведенных ниже флагов с использованием операции побитового ИЛИ:

• FLASHW_CAPTION – инвертирует состояние заголовка окна;

• FLASHWTRAY—заставляет мигать кнопку на Панели задач;

• FLASHW_ALL – сочетание FLASHW_CAPTION И FLASHW_TRAY;

• FLASHW_TIMER – периодическое изменение состояния заголовка окна и/или кнопки на Панели задач вплоть до того момента, пока фyнкцияFlashWindowEx не будет вызвана с флагом FLASHW_STOP;

• FLASHW_TIMERNOFG – периодическое изменение состояния заголовка окна и/или кнопки на Панели задач до тех пор, пока окно не станет активным;

• FLASHWSTOP – восстанавливает исходное состояние окна и кнопки на Панели задач.

Далее приведены два примера использования функции FlashWindowEx.

В первом – состояние заголовка окна и кнопки на Панели задач изменяется десять раз каждые 0,2 секунды (листинг 1.2).

Источник:

www.litmir.me

Александр Чиртик Delphi

Александр Чиртик Delphi. Трюки и эффекты

Delphi. Трюки и эффекты

Похожие главы из других книг Юрий Зозуля Windows Vista. Трюки и эффекты

Юрий Зозуля Windows Vista. Трюки и эффекты

10. Трюки и эффекты

10. Трюки и эффекты На вопрос: «Какую операционную систему вы считаете самым сильным конкурентом Windows Vista?» представители Microsoft достаточно самоуверенно ответили: «Windows XP SP2».Каждая новая версия Windows создает ажиотаж во всех сферах информационных технологий. Техническая

Что нового в Delphi 2.0 по сравнения с Delphi 1.0?

Что нового в Delphi 2.0 по сравнения с Delphi 1.0? Выпущенная в феврале 1995 года версия Delphi 1.0 стала первым инструментом для Windows, комбинирующим оптимизирующий компилятор, механизмы визуальной разработки Two-Way-Tools и масштабируемую архитектуру обработки баз данных. Сегодня сотни

Глава 10 Трюки и эффекты в Photoshop

Глава 10 Трюки и эффекты в Photoshop • Надпись огнем• Буквы под снегом• Пиксельный текст• Камуфляж• Мозаичная поверхность• Кирпичная кладка• Наращивание неба• Взрыв и огонь• Сигарета• Стальной шар• Изменение цвета глаз• Новая фигура без скальпеля и фитнесаТеперь,

Источник:

it.wikireading.ru

Читать книгу «Программирование в Delphi

«Программирование в Delphi. Трюки и эффекты» — Александр Чиртик

Программирование в Delphi. Трюки и эффекты

В настоящее время количество книг, посвященных различным языкам программирования, настолько велико, что иногда просто не знаешь, какую выбрать. Цель этой книги – не просто тривиальное изложение материала о Delphi. Она поможет вам получить опыт в решении многих задач. В итоге вы получите необходимый базис знаний, который даст возможность легко и быстро усваивать что-то новое. Здесь вы найдете ответы на вопросы, которые возникают у большинства людей при разработке своих собственных приложений. Вам больше не придется задумываться над тем, как решать мелкие задачи, которые составляют значительную часть повседневной работы большинства программистов. У вас появится возможность тратить больше времени именно на основную цель, поставленную перед вами, а не на второстепенную.

Данная книга рассчитана на читателей, которые уже имеют некий опыт в программировании, причем достаточный, чтобы не излагать тривиальные вещи заново. Однако сразу отмечу, пусть даже вы делаете свои первые шаги на пути к написанию приложений на высоком уровне, – книга окажет вам неоценимую помощь. Она построена так, чтобы вы смогли с высокой степенью эффективности узнавать новый материал. В конце книги есть приложения в удобном для восприятия виде. В них вы найдете информацию, которая часто используется при написании программ.

Зачастую люди выбирают Delphi за его простоту. Она подкупает начинающих, которые хотят почти сразу писать программы, а не разбираться в особенностях синтаксиса языка. Простота в совокупности с мощью дают вам целый набор инструментов для воплощения задуманного. Однако запомните: чтобы научиться хорошо программировать, недостаточно иметь огромный объем теоретических знаний, хотя и он немаловажен. Следует научиться думать в концепции выбранного вами языка, и тогда вас ждет успех. Ведь не понимая, зачем все это нужно, вы не сможете эффективно воспользоваться ресурсами языка для наиболее удачного решения поставленных задач.

В этой книге описано множество примеров. Есть как относительно простые, так и довольно сложные, но пусть последнее вас не пугает: к тому моменту, когда вы начнете их рассматривать, они не покажутся вам особенно трудными.

От издательства

Ваши замечания, предложения и вопросы отправляйте по адресу электронной почты gromakovski@minsk.piter.com (издательство «Питер», компьютерная редакция).

Мы будем рады узнать ваше мнение!

Все примеры, приведенные в книге, вы можете найти по адресу http://www.piter.com/download.

На сайте издательства http://www.piter.com вы найдете подробную информацию о наших книгах.

Привлечение внимания к приложению

Окна и кнопки нестандартной формы

Немного о перемещении окон

Добавление команды в системное меню окна

Отображение формы поверх других окон

Почему было решено начать книгу именно с необычных приемов использования оконного интерфейса? Причиной стало то, что при работе с операционной системой Windows мы видим окна постоянно и повсюду (отсюда, собственно, и название этой операционной системы). Речь идет не только об окнах приложений, сообщений, свойств: понятие о таких окнах есть у любого начинающего пользователя Windows.

В своих собственных окнах рисуются и элементы управления (текстовые поля, панели инструментов, таблицы, полосы прокрутки, раскрывающиеся списки и т. д.). Взгляните на интерфейс, например, Microsoft Word. Здесь вы увидите, что даже содержимое документа находится в своем собственном окне с полосами прокрутки (правда, это необязательно элемент управления). Окна элементов управления отличаются от «самостоятельных» окон (упрощенно) отсутствием стиля, позволяющего им иметь заголовок, а также тем, что они являются дочерними по отношению к другим окнам. Понимание этого является важным, так как на нем основана часть примеров данной главы.

Рассматриваемые примеры частично используют средства, предусмотренные в Borland Delphi, а частично – возможности «чистого» API (см. гл. 2). Практически все API-функции работы с окнами требуют задания параметра с типом значения HWND – дескриптора окна. Это уникальное значение, идентифицирующее каждое существующее в текущем сеансе Windows окно. В Delphi дескриптор окна формы и элемента управления хранится в параметре Handle соответствующего объекта.

Нужно также уточнить, что в этой главе термины «окно» и «форма» употребляются как синонимы, когда речь идет о форме. Когда же речь идет об элементах управления, то так и говорится: «окно элемента управления».

Привлечение внимания к приложению

Начнем с простых примеров, позволяющих привлечь внимание пользователя к определенному окну приложения. Это может пригодиться в различных ситуациях: начиная от необходимости уведомления пользователя об ошибке программы и заканчивая простой сигнализацией ему, какое окно в данный момент времени ожидает пользовательского ввода.

Инверсия заголовка окна

Вероятно, вы не раз могли наблюдать, как некоторые приложения после выполнения длительной операции или при возникновении ошибки как бы подмигивают. При этом меняется цвет кнопки приложения на Панели задач, а состояние открытого окна меняется с активного на неактивное. Такой эффект легко достижим при использовании API-функции FlashWindow или ее усовершенствованного, но более сложного варианта – функции FlashWindowEx.

Здесь сказано, что функции изменяют цвет кнопки приложения на Панели задач. Однако этого не происходит при выполнении приведенных ниже примеров. Почему так получается и как это изменить, рассказано в следующем разделе этой главы (стр. 15).

Первая из этих функций позволяет один раз изменить состояние заголовка окна и кнопки на Панели задач (листинг 1.1).

Листинг 1.1. Простая инверсия заголовка окна

procedure TForm1.cmbFlashOnceClick(Sender: TObject);

Как видите, функция принимает дескриптор нужного окна и параметр (тип BOOL) инверсии. Если значение флага равно T rue, то состояние заголовка окна изменяется на противоположное (из активного становится неактивным и наоборот). Если значение флага равно False, то состояние заголовка окна дважды меняет свое состояние, то есть восстанавливает свое первоначальное значение (активно или неактивно).

Более сложная функция FlashWindowEx в качестве дополнительного параметра (кроме дескриптора окна) принимает структуру FLASHWINFO, заполняя поля которой можно настроить параметры мигания кнопки приложения и/или заголовка окна.

В табл. 1.1 приведено описание полей структуры FLASHWINFO.

Таблица 1.1. Поля структуры FLASHWINFO

Значение параметра dwFlags формируется из приведенных ниже флагов с использованием операции побитового ИЛИ:

• FLASHW_CAPTION – инвертирует состояние заголовка окна;

• FLASHW_TRAY – заставляет мигать кнопку на Панели задач;

• FLASHW_ALL – сочетание FLASHW_CAPTION и FLASHW_TRAY;

• FLASHW_TIMER – периодически измененяет состояния заголовка окна и/или кнопки на Панели задач до того момента, пока функция FlashWindowEx не будет вызвана с флагом FLASHW_STOP;

• FLASHW_TIMERNOFG – периодически измененяет состояния заголовка окна и/или кнопки на Панели задач до тех пор, пока окно не станет активным;

• FLASHW_STOP – восстанавливает исходное состояние окна и кнопки на Панели задач.

Далее приведены два примера использования функции FlashWindowEx.

В первом примере состояние заголовка окна и кнопки на Панели задач изменяется десять раз в течение двух секунд (листинг 1.2).

Листинг 1.2. Десятикратная инверсия заголовка окна

procedure TForm1.cmbInverse10TimesClick(Sender: TObject);

fl.dwFlags:= FLASHW_CAPTION or FLASHW_TRAY; //аналогично FLASHW_ALL

Второй пример демонстрирует использование флагов FLASHW_TIMER и FLASHW_ STOP для инверсии заголовка окна в течение заданного промежутка времени (листинг 1.3).

Листинг 1.3. Инверсия заголовка окна в течение определенного промежутка времени

//Запуск процесса периодической инверсии заголовка

procedure TForm1.cmbFlashFor4SecClick(Sender: TObject);

fl.dwFlags:= FLASHW_ALL or FLASHW_TIMER;

//Остановка инверсии и заголовка

procedure TForm1.Timer1Timer(Sender: TObject);

В данном примере используется таймер, срабатывающий каждые четыре секунды. Таймер первоначально неактивен. Конечно, можно было бы не использовать его, а просто посчитать количество инверсий, совершаемых в течение требуемого интервала времени (в данном случае четырех секунд) и задать его в поле uCount. Но приведенный пример предназначен именно для демонстрации использования флагов FLASHW_TIMER и FLASHW_STOP.

Источник:

mybook.ru

Книга Delphi

Александр Чиртик Delphi. Трюки и эффекты
  • КНИЖНЫЕ ПОЛКИ
    • АНЕКДОТЫ
    • ДЕЛОВЫЕ КНИГИ
    • ДЕТЕКТИВЫ
    • ДЛЯ ДЕТЕЙ
    • ДОКУМЕНТАЛЬНОЕ
    • ДОМ И СЕМЬЯ
    • ДРАМАТУРГИЯ
    • ИСТОРИЯ
    • КЛАССИКА
    • КОМПЬЮТЕРЫ
    • ЛЮБОВНЫЙ
    • МЕДИЦИНА
    • ОБРАЗОВАНИЕ
    • ПОЛИТИКА
    • ПОЭЗИЯ
    • ПРИКЛЮЧЕНИЯ
    • ПРОЗА
    • ПСИХОЛОГИЯ
    • РЕЛИГИЯ
    • СПРАВОЧНИКИ
    • ФАНТАСТИКА
    • ФИЛОСОФИЯ
    • ЭНЦИКЛОПЕДИИ
    • ЮМОР
    • ЮРИСПРУДЕНЦИЯ
    • ЯЗЫКОЗНАНИЕ
    • СЕРИИ И САГИ
    • ВСЕ АВТОРЫ
  • СЕГОДНЯ НА ПОРТАЛЕ
    • НОВОСТИ
    • СОННИК
    • ФОРУМЫ И

      Листинг 3.5. Захват и освобождение указателя мыши

      procedure TForm1.FormMouseDown(Sender: TObject;

      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

      //Захватываем указатель мыши

      procedure TForm1.FormMouseUp(Sender: TObject;

      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

      //Отменяем захват указателя

      Вся хитрость состоит в использовании API-функций захвата SetCapture, а также ReleaseCapture. При вызове первой функции происходит регистрация окна, которое захватывает указатель мыши: окно будет получать сообщения от мыши даже тогда, когда указатель будет находиться за его пределами. Функция возвращает дескриптор окна, которое захватило указатель ранее, либо 0, если такого окна нет. Соответственно, функция ReleaseCapture используется для отмены захвата указателя.

      При использовании SetCapture окно будет получать сообщения, когда указатель находится не над окном только в случае, если кнопка мыши нажата либо если указатель находится над одним из окон, созданных тем же потоком (независимо от нажатия кнопки мыши).

      Можно также упомянуть о API-функции GetCapture. Функция не принимает аргументов и возвращает дескриптор окна, захватившего указатель ранее. С помощью этой функции можно, например, удостовериться, что захватом указателя мыши мы не нарушим работу другого приложения (что маловероятно).

      Ограничение перемещения указателя

      При помощи несложных манипуляций можно также ограничить перемещение указателя мыши определенной областью экрана (прямоугольником). Для этого используется API-функция ClipCursor. Она принимает в качестве параметра структуру TRect с координатами прямоугольника, в пределах которого может перемещаться указатель, и в случае успешной установки ограничения возвращает отличное от нуля значение.

      С ClipCursor тесно связана функция GetClipCursor, позволяющая получить координаты прямоугольника, которым в данный момент ограничено перемещение указателя.

      Использование функций ClipCursor и GetClipCursor приведено в листинге 3.6.

      Листинг 3.6. Ограничение перемещения указателя

      cursorClipped: Boolean = False;

      procedure SetCursorRect(newRect: TRect);

      if not cursorClipped then

      //Сохраняем старую область перемещения указателя

      //Устанавливаем ограничение на перемещения указателя

      cursorClipped := ClipCursor(Addr(newRect)) <> False;

      if cursorClipped then

      //Восстанавливаем область перемещения указателя

      cursorClipped := ClipCursor(Addr(lastRect)) = False;

      Здесь реализована пара процедур, первая из которых (SetCursorRect) ограничивает перемещение указателя мыши заданной областью экрана (параметр newRect). Перед ограничением на перемещение указателя в процедуре SetCursorRect происходит сохранение области перемещения, установленной ранее, чтобы действие процедуры можно было отменить. Для отмены ограничения перемещения указателя служит вторая процедура – RestoreCursorRect.

      Вообще, задание ограничения на перемещение указателя мыши не считается хорошим тоном. Потому для использования такой возможности в реальном приложении должны быть действительно веские причины.

      Изменение назначения кнопок мыши

      Как известно, операционная система Windows дает возможность работать за компьютером широкому кругу людей. Со стороны разработчиков было бы глупо не предусмотреть возможность простой адаптации манипулятора «мышь» к правше или левше. К тому же мышь адаптировать к таким различиям намного проще: конструкцию изменять не надо, достаточно программно поменять функции кнопок мыши.

      Как поменять функции левой и правой кнопок мыши, демонстрирует листинг 3.7.

      Листинг 3.7. Изменение назначения кнопок мыши

      procedure TForm1.Button1Click(Sender: TObject);

      //Меняем местами функции левой и правой кнопок мыши

      procedure TForm1.Button2Click(Sender: TObject);

      //Восстанавливаем функции кнопок мыши

      В листинге 3.7 не учитывается тот факт, что инверсия мыши уже может быть установлена при запуске программы (например, если за компьютером работает левша). Чтобы точно знать, была ли ранее применена инверсия к кнопкам мыши, можно использовать значение, возвращаемое функцией SwapMouseButton. Если это значение отлично от нуля, то ранее функции кнопок мыши были инвертированы.

      Подсчет расстояния, пройденного указателем мыши

      Рассмотрим небольшую программу, которая носит скорее познавательный, чем практический характер. Она умеет подсчитывать, сколько же метров (в буквальном смысле) пробегает указатель мыши за время ее работы. Внешний вид формы приложения показан на рис. 3.1.

      Рис. 3.1. Программа измерения пробега указателя мыши

      Использование такой программы крайне просто: сразу после запуска она начинает измерять пройденное указателем мыши расстояние в пикселах. Нижняя группа элементов управления нужна для правильного вывода пройденного расстояния в метрах. При нажатии кнопки Изменить масштаб становятся активными два текстовых поля (для ввода ширины и высоты прямоугольника). Чтобы программа правильно преобразовывала пройденное расстояние, нужно линейкой измерить ширину белого прямоугольника и ввести полученное значение (в мм) в текстовое поле. При повторном нажатии этой кнопкивведенные значения принимаются, и с этого момента показания пройденного расстояния переводятся в метры с учетом текущего разрешения и размера монитора.

      Теперь приступим к рассмотрению реализации этого приложения. В табл. 3.1 приводятся сведения по настройке элементов управления, не являющихся рамками или статическими надписями.

      Таблица 3.1. Параметры элементов управления формы, показанной на рис. 3.1

      В листинге 3.8 приводятся объявления переменных (членов класса TForml) и методов, добавленных вручную.

      Листинг 3.8. Форма для измерения пробега указателя

      isUpdating: Boolean; //Если равен False, то показания

      lastPos: TPoint; //Координаты указателя во время

      distance: Real; //Пройденное расстояние в пикселах

      Суммарное расстояние в пикселах, пройденное указателем, сохраняется в переменной distance. Рассмотрим, как осуществляется перевод этого расстояния в метры (листинг 3.9).

      Листинг 3.9. Перевод расстояния в метры с учетом масштаба

      //Пересчитываем текущий пробег в метры и показываем его

      //в текстовом поле

      //..определяем масштаб для перевода измерений в метры

      scale := 0.001 * StrToInt(txtWidth.Text) / Shape1.Width;

      //..подсчитываем расстояние с учетом масштаба

      distanceMetters := scale * distance;

      //..округляем до трех знаков (мм) и показываем

      distanceMetters := Int(distanceMetters * 1000) * 0.001;

      В приведенном расчете нет ничего сложного, как, собственно, нет ничего сложного и во всем примере. Главная процедура приложения – обработчик для таймера Timerl. Таймер срабатывает с максимальной для него частотой (не 1 мс, конечно, но где-то 18 раз в секунду). Текст обработчикаТ1тег1Т1тег приводится в листинге 3.10.

      Листинг 3.10. Подсчет разницы между положениями указателя мыши

      procedure TForm1.Timer1Timer(Sender: TObject);

      if (curPos.X <> lastPos.X) or (curPos.Y <> lastPos.Y) then

      //Вычисляем разницу между текущим и прошлым

      delta := Sqrt(Sqr(curPos.X – lastPos.X) + Sqr(curPos.Y -

      distance := distance + delta;

      //Не забываем сохранить новые координаты указателя

      if isUpdating then

      //Обновим показания в текстовом поле

      Как можно увидеть при внимательном рассмотрении листинга 3.10, обновление показаний происходит при истинном значении переменной isUpdating. Значение этой переменной устанавливается в False во время задания масштаба, чтобы во время ввода значений в текстовые поля не выводились неправильные цифры (листинг 3.11).

      Листинг 3.11. Активизация/деактивизация режима ввода масштаба

      procedure TForm1.cmbScaleClick(Sender: TObject);

      if cmbScale.Caption = 'Изменить масштаб' then

      //Начинаем изменение масштаба

      cmbScale.Caption := 'Принять масштаб';

      //Заканчиваем изменение масштаба

      cmbScale.Caption := 'Изменить масштаб';

      Процедуры StartUpdating и StopUpdating скрывают действия, которые необходимо произвести для остановки или возобновления отображения пройденного расстояния в текстовом поле. В нашем примере они выглядят крайне просто (листинг 3.12).

      Листинг 3.12. Включение/выключение обновления результатов измерения

      //Включаем обновление показаний в текстовом поле

      //Отключаем обновление показаний в текстовом поле

      В завершение остается реализовать код инициализации при запуске программы и обработчик события Click для кнопки cmbClear (листинг 3.13).

      Листинг 3.13. Инициализация при запуске и код сброса счетчика

      procedure TForm1.FormCreate(Sender: TObject);

      //Инициализируем координаты мыши

      procedure TForm1.cmbClearClick(Sender: TObject);

      //Сбрасываем счетчик пройденного расстояния

      GetCursorPos(lastPos); //Начинаем отсчет с текущей

      Вот, собственно, и все, что нужно для работы рассматриваемой программы. Остается лишь уточнить, что способ установки масштаба, используемый в программе, предназначен для таких разрешений мониторов, при которых нет искажений по горизонтали или вертикали. Чаще всего это такие разрешения, при которых размеры изображения по горизонтали и вертикали подчиняются пропорции 4:3 (640 х 480, 800 х 600 и т. д.). При этом такими же пропорциями должен обладать экран монитора.

      Подсвечивание элементов управления

      В завершение рассмотрим несложный, но достаточно полезный пример, позволяющий сделать более «живым» интерфейс приложения: изменение внешнего вида элементов управления при наведении на них указателя мыши.

      В листинге 3.14 показано, как можно сделать статическую надпись похожей на гиперссылку (для большего эффекта для такой надписи можно установить свойство Cursor равным crHandPoint на этапе проектирования формы).

      Листинг 3.14. Подчеркивание и изменение цвета надписи

      procedure TForm1.lblUnderlineMouseEnter(Sender: TObject);

      lblUnderline.Font.Color := RGB(0, 0, 255);

      procedure TForm1.lblUnderlineMouseLeave(Sender: TObject);

      lblUnderline.Font.Color := RGB(0, 0, 0);

      Осталось добавить обработчик события Click для надписи, и получится довольно правдоподобная гиперссылка, правда, выполнять она может любое действие.

      Начертание шрифта можно также изменить для стандартной кнопки. Как это можно сделать, показано в листинге 3.15.

      Листинг 3.15. Изменение начертания шрифта

      procedure TForm1.cmbItalicBoldMouseMove(Sender: TObject;

      Shift: TShiftState; X, Y: Integer);

      cmbItalicBold.Font.Style := [fsItalic, fsBold];

      procedure TForm1.lblItalicMouseEnter(Sender: TObject);

      В листинге 3.15 используется обработчик MouseMove для кнопки потому, что, к великому сожалению, обработчики co6biTHftMouseEnter nMouseLeave для нее (по крайней мере, с вкладки Standard) не предусмотрены.

      3.2. Клавиатура

      Клавиатура является основным средством для ввода информации в компьютер, поэтому не будем обходить стороной и рассмотрим некоторые не так часто используемые или не такие очевидные возможности работы с ней.

      Определение информации о клавиатуре

      Начнем с небольшого примера, позволяющего определить некоторую информацию о клавиатуре (листинг 3.16). Пример основан на использовании API-функции GetKeyboardType.

      Листинг 3.16. Определение информации о клавиатуре

      procedure TForm1.FormCreate(Sender: TObject);

      //Определяем тип клавиатуры

      case GetKeyboardType(0) of

      1: txtType.Text := 'PC/XT или совместимая (83 клавиши)';

      2: txtType.Text := 'Olivetti «ICO» (102 клавиши)';

      3: txtType.Text := 'PC/AT (84 клавиши) или похожая';

      4: txtType.Text := 'Расширенная (101 или 102 клавиши)';

      5: txtType.Text := 'Nokia 1050 или похожая';

      6: txtType.Text := 'Nokia 9140 или похожая';

      7: txtType.Text := 'японская';

      //Определяем код типа производителя

      //Определяем количество функциональных клавиш

      При создании формы происходит заполнение текстовых полей информацией о типе клавиатуры, коде типа, присвоенном производителем, и количестве функциональных клавиш.

      Для бесплатного чтения открыта только часть текста.

      Приобретайте полный текст книги у нашего партнера:

      Источник:

      litportal.ru

Александр Чиртик Delphi. Трюки и эффекты в городе Кемерово

В нашем интернет каталоге вы имеете возможность найти Александр Чиртик Delphi. Трюки и эффекты по доступной стоимости, сравнить цены, а также посмотреть прочие предложения в группе товаров Компьютеры и интернет. Ознакомиться с свойствами, ценами и рецензиями товара. Доставка товара производится в любой город России, например: Кемерово, Тольятти, Нижний Новгород.