- •Министерство образования респулики беларусь
- •Оглавление
- •Устройства ввода Краткие теоретические сведения
- •Пример приложения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Устройства вывода. Работа с принтером Краткие теоретические сведения
- •Компонент tPrintDialog
- •Пример программы
- •Процедура печати текста из Memo
- •Процедура печати картинки из Image
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Работа с накопителями Рекомендации по выполнению работы
- •Пример программы
- •Обработчик нажатия кнопки
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Работа с параллельным портом Основные теоретические сведения
- •Задания для самостоятельного выполнения
- •Контрольные вопросы
- •Список использованных источников
Министерство образования респулики беларусь
УЧЕРЕЖДЕНИЕ ОБРАЗОВАНИЯ
«БАРАНОВИЧСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
С.Г. Скобля
ЭВМ и периферийные устройства
ЭВМ и периферийное оборудование
Задания и методические указания по выполнению лабораторных работ для студентов специальностей
1-40 01 02 Информационные системы и технологии
1-53 01 01 Автоматизация технологических процессов и производств инженерного факультета
Часть 1
Барановичи
РИО БарГУ
2009
УДК 681.3.06:378.244
Составитель:
Скобля С.Г.
Рецензенты:
И.М.Виноградова, старший преподаватель кафедры информационных систем и технологий учреждения образования «Барановичский государственный университет».
А.Н. Климко, инженер-программист БСЗ ЗАО «Атлант».
Информационные системы и технологии [текст] Задания и методические указания по выполнению лабораторных работ для студентов специальностей 1-40 01 02 «Информационные системы и технологии», 1-53 01 01 «Автоматизация технологических процессов и производств» / сост.: С. Г. Скобля. – Барановичи : РИО БарГУ, 2009. — с. — экз.
Данные методические указания содержат индивидуальные задания и рекомендации по выполнению лабораторных работ.
Издание предназначено для IV курса инженерного факультета дневной формы обучения специальности 1-40 01 02 «Информационные системы и технологии», 1-53 01 01 «Автоматизация технологических процессов и производств»
© БарГУ, 2009
Оглавление
ВВЕДЕНИЕ
Методические указания и задания предназначены для использования в процессе преподавания дисциплин «ЭВМ и периферийные устройства», «ЭВМ и периферийное оборудование» для студентов, обучающихся по специальностям «Информационные системы и технологии», «Автоматизация технологических процессов и производств».
Лабораторные работы ориентированы на формирование навыков разработки приложений, использующих периферийные устройства персонального компьютера.
ЛАБОРАТОРНАЯ РАБОТА №1
Устройства ввода Краткие теоретические сведения
Для большинства видимых компонентов определен набор обработчиков событий, связанных с мышью:
type
TMouseButton = (mbLeft, mbRight, mbMiddle) ;
TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble);
TMouseEvent = procedure (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object;
TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer) of object;
TNotifyEvent = procedure (Sender: TObject) of object — property OnMouseDown: TMouseEvent;
property OnMouseUp: TMouseEvent;
property OnMouseMove: TMouseMoveEvent;
property OnClick: TNotifyEvent;
property OnDblClick: TNotifyEvent;
Тип TMouseButton определяет одну из трех кнопок мыши: левую (mbLeft), правую (mbRigth) и среднюю (mbMiddle).
Тип TShiftState содержит признаки, уточняющие обстоятельства возникновения события: ssShift — нажата клавиша Shift; ssAlt — нажата клавиша Alt; ssctrl — нажата клавиша Ctrl; ssLeft — нажата левая кнопка мыши; ssRight — нажата правая кнопка; ssMiddle — нажата средняя кнопка; ssDouble — нажаты одновременно левая и правая кнопки.
Обработчики OnMouseDown и OnMouseUp определяют реакцию программы на соответственно нажатие и отпускание кнопки мыши, оnMouseMove — на перемещение указателя мыши над компонентом, оnClick и OnDblClick — соответственно на щелчок и двойной щелчок левой кнопки. Во всех обработчиках параметр sender содержит ссылку на компонент, над которым произошло событие, а х и y определяют координаты точки чувствительности указателя мыши в момент возникновения события в системе координат клиентской области родительского компонента. Cобытие OnClick возникает после OnMouseDown, но перед OnMouseUp, а событие OnDblClick Возникает после OnMouseUp.
События от мыши получают любые потомки TControl. В отличие от этого события от клавиатуры получают только некоторые оконные компоненты (потомки TWinControi). Обработка событий связана со следующими свойствами этих компонентов:
type
TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddie, ssDoubie);
TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object;
TKeyPressEvent = procedure (Sender: TObject; var Key: Char) of object-property OnKeyDown: TKeyEvent;
property OnKeyUp: TKeyEvent;
property OnKeyPress: TKeyPressEvent;
Параметр Shift, как и в обработчиках событий от мыши, содержит уточняющие признаки. Параметр Key в обработчиках TKeyEvent содержит виртуальный код клавиши, а в обработчике TKeypressEvent — ASCII — символ. Обработчики OnKeyDown и OnKeyUp перехватывают нажатие большинства клавиш клавиатуры, в то время как обработчик OnKeypress — только нажатие алфавитно-цифровых клавиш. Получаемый им символ Key учитывает выбранный язык и нажатую клавишу Shift.
Виртуальные коды клавиш определены константами vk_xxx в файле source\rtl\win\windows. pas каталога размещения Delphi. Фактически виртуальный код — это просто уникальный числовой идентификатор клавиши. Для буквенно — цифровых клавиш О...9 и A...Z виртуальный код совпадает с кодом, возвращаемым функцией ord(X), где х — соответствующий заглавный символ: ord('O'), ord( 'W') и т. д. К сожалению, уникальность кода не обеспечивается для клавиши Enter в зоне дополнительных числовых клавиш, которой присвоен код 13, — как и аналогичной клавише в основной зоне, а также для правых и левых сдвиговых клавиш Shift, Alt и Ctrl. Кроме того, клавиши О...9 и Del в зоне дополнительной клавиатуры сопровождаются уникальным кодом только при активном переключателе NumLock, в противном случае они повторяют коды соответствующих управляющих клавиш. Все остальные клавиши стандартной клавиатуры (за исключением Print Screen, клавиш смещения курсора и Tab, нажатие на которые не передается в обработчики TKeyEvent) имеют постоянно закрепленные за ними числовые коды, позволяющие легко установить факт нажатия или отпускания любой из них.
Поскольку параметр Kеу в каждом обработчике определен как параметр-переменная, программист может изменить фактический код клавиши на нужный. Такая возможность может оказаться полезной для фильтрации нажатия каких-либо клавиш. При этом изменение кода происходит в обработчике формы, а в оконный элемент с фокусом ввода будет поступать уже измененный код. Чтобы форма получила событие до передачи его в элемент с фокусом ввода, следует поместить в свойство property KeyPreview: Boolean; формы значение True.
Например, пусть «горячее сочетание» Alt+X используется в существующей программе для закрытия модального диалогового окна. Чтобы сконструированное окно закрывалось по этой команде, необходимо написать такой обработчик события OnKeyDown:
procedure TForm2.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState) ;
begin
if (Key = ord('X')) and (ssAlt in Shift) then Close
end;
Для клавиш определены виртуальные коды, приведенные в таблице 1.
Таблица 1 – Виртуальные коды клавиш
Код |
Значение |
Клавиша |
Код |
Значение |
Клавиша |
vk Back |
8 |
Backspace |
vk A..vk Z |
65..90 |
A. .Z |
vk Tab |
9 |
Tab |
vk LWin |
91 |
Левая Windows |
vk Clear |
12 |
[5] |
vk RWin |
92 |
Правая Windows |
vk Return |
13 |
Enter |
vk NumpadO.. vk Numpad9 |
96..105 |
[О]..[9] |
vk Shift |
16 |
Shift |
vk Multiply |
106 |
[*] |
vk Control |
17 |
Ctti |
vk Add |
107 |
[+] |
vk Menu |
18 |
Alt |
vk Subtract |
109 |
[-] |
vk Pause |
19 |
Pause |
vk Decimal |
110 |
[Del] |
vk Capital |
20 |
Caps Lock |
vk Divide |
111 |
[/] |
vk Escape |
27 |
esc |
vkFl..vkF12 |
112..123 |
Fl..F12 |
vk Space |
32 |
Пробел |
vk Numlock |
144 |
Num Lock |
vk Prior |
33 |
Page Up |
vk Scroll |
145 |
Scroll Lock |
vk Next |
34 |
Page Down |
|
186 |
|
vk End |
35 |
End |
|
187 |
+ |
vk Home |
36 |
Home |
|
188 |
< |
vk Left |
37 |
Курсор влево |
|
189 |
- |
vk Up |
38 |
Курсор вверх |
|
190 |
> |
vk Right |
39 |
Курсор вправо |
|
191 |
•? |
vk Down |
40 |
Курсор вниз |
|
192 |
~ |
vk Insert |
45 |
Insert |
|
219 |
[ |
vk Delete |
46 |
Delete |
|
220 |
\ |
vk 0..vk 9 |
48..57 |
0..9 |
|
221 |
] |
В квадратных скобках указаны клавиши из зоны дополнительных цифровых клавиш.
Важно, что константы vk_A. .vk_z и vk_o. .vk_9 не определены в файле source\rtl\win\ windows.pas и следовательно в модуле System, поэтому для них компилятор выдаст сообщение о неизвестном идентификаторе — в этом случае нужно использовать собственные определения констант или их числовые эквиваленты.