- •Лабораторная работа 1. Реализация линейных алгоритмов
- •Вариант 1
- •1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
- •Вариант 2
- •1. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
- •Вариант 3
- •1. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой.
- •Вариант 4
- •1. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга.
- •Лабораторная работа 2. Условный оператор
- •Лабораторная работа 3. Оператор варианта.
- •Лабораторная работа 4. Строки. Операторы цикла.
- •Программирование численных циклических алгоритмов. Циклы «до» и «пока»
- •Лабораторная работа 5. Подпрограммы
- •Лабораторная работа 6. Массивы
- •Лабораторная работа 7. Множества
- •Лабораторная работа 8. Комбинированный тип данных (Запись)
- •Лабораторная работа 9. Работа с файлами
- •Лабораторная работа 10. Процедуры и функции модуля GraphABC
- •Графические примитивы
- •Подпрограммы для работы с пером
- •Лабораторная работа 11. Создание собственных модулей.
- •Лабораторная работа 12. Решение простейших задач в Console Application
- •Лабораторная работа 13. Динамические массивы
- •Лабораторная работа 14. Тип данных Variant
- •Лабораторная работа 15. Тип TDateTime
- •Лабораторная работа 16. Простейшие задачи на форме
- •Лабораторная работа 17. Флажки и переключатели
- •Лабораторная работа 18. Работа с меню
- •Главное меню
- •КОНТЕКСТНОЕ МЕНЮ
- •Лабораторная работа 19. Работа со списками
- •СПИСКИ ВЫБОРА
- •ВЫПАДАЮЩИЕ СПИСКИ
- •Лабораторная работа 20. Таймер. Работа с календарем
- •Лабораторная работа 21. Таблица строк
- •Лабораторная работа 22. Графика в Delphi
- •Лабораторная работа 23. Калькулятор
- •Лабораторная работа 24. Моделирование движения. Пуля
- •Лабораторная работа 25. Моделирование движения по кругу
- •Лабораторная работа 26. Цветомузыка
- •Лабораторная работа 27. Проигрыватель
- •Лабораторная работа 28. Цветочная поляна
- •Лабораторная работа 29. QUEST
- •Лабораторная работа 30. Тир
- •Лабораторная работа 31. Компоненты Delphi для взаимодействия с серверами автоматизации MS Office
- •Лабораторная работа 32. Обмен данными между программами с помощью DDE
- •Лабораторная работа 33. Технология Drag & Drop
- •Лабораторная работа 34. Использование динамически подключаемых библиотек (DLL).
- •Лабораторная работа 35. Создание собственного класса
- •Лабораторная работа 36. Конструкторы и деструкторы
- •Лабораторная работа 37. Создание собственных компонентов
Лабораторная работа 25. Моделирование движения по кругу
Задания для самостоятельной работы
Организуем движение по кругу вдоль линии окружности с возможностью изменения значений радиуса и положения центра вращения.
© ИМПИ ОГПУ
Лабораторная работа 26. Цветомузыка
Задания для самостоятельной работы
Создать нечто похожее на цветомузыку на дискотеке. Это будут цветные круги, появляющиеся и исчезающие в окне программы. Все действо будет сопровождаться
мелодией, которую выберем сами.
Лабораторная работа 27. Проигрыватель
Задания для самостоятельной работы
Создать электронный проигрыватель, с помощью которого можно также смотреть видеоролики и фильмы.
© ИМПИ ОГПУ
Лабораторная работа 28. Цветочная поляна
Задания для самостоятельной работы
По щелчку указателя мыши в любом месте зеленой поляны появляется маленький цветочек. Цветок вырастает. Щелкнув в другом месте экрана, образуем новый цветочек, который тоже вырастает. Так можно засадить всю поляну цветами.
Лабораторная работа 29. QUEST
Задания для самостоятельной работы
Создадим игру в стиле Quest (поиск). Суть игры: в начале на экране монитора
появляется черное поле, на котором имеется выключатель. При наведении указателя мыши на выключатель, над ним появляется надпись: «Включить?». Щелкнув по выключателю, черное поле исчезает и появляется интерьер комнаты: дверь, в двери замочная скважина, картина на стене, лампочка под потолком, на переднем плане стол, книга на столе, выключатель и ключ на гвозде. С помощью выключателя можно включить или выключить свет, если щелкнуть на нем указателем мыши. Щелкать указателем мыши можно на любом предмете, находящемся в комнате. При этом рядом с предметом, на котором произведен щелчок, появляется пояснительная надпись. Так при щелчке по двери появляется надпись о том, что дверь закрыта. Щелчок по книге, лежащей на столе, открывает текст с инструкцией, объясняющей суть игры. В процессе игры нужно найти выход из комнаты. Для этого надо использовать предметы, находящиеся в комнате. Очевидно, что для того, чтобы выйти из комнаты, необходимо взять ключ в гвоздя. Щелчок указателя мыши на ключе помещает этот гвоздь в специальный чемоданчик. В левой верхней части картинки имеется кнопка меню, щелчком на которой открывается этот чемоданчик. На его крышке имеются две кнопки: «Закончить» и «Не закончить». Первая кнопка предназначена для выхода из игры, вторая – возвращает пользователя в игру. Чемоданчик остается пустым, пока не щелкнуть по ключу. Для использования ключа необходимо щелкнуть указателем мыши на его изображении в чемоданчике, а затем
© ИМПИ ОГПУ
щелкнуть указателем мыши на замочной скважине. На этом игра заканчивается. Появляется надпись Game Over и приложение закрывается.
Лабораторная работа 30. Тир
Задания для самостоятельной работы
Игрок должен поражать мишень. Для этого он наводит мышкурсор (крест) на центр мишени и нажимает левую мышкнопку. Мишень от выстрела к выстрелу меняет свое положение. Предусмотрены разные уровни сложности. По итогам 10 выстрелов пользователь набирает определенное количество очков относительно своей меткости.
Лабораторная работа 31. Компоненты Delphi для взаимодействия с серверами автоматизации MS Office
В поставку Delphi включен ряд компонентов, специально предназначенных для организации взаимодействия с приложениями MS Office. Данные компоненты располагаются на странице Servers палитры компонентов Delphi IDE.
Компоненты доступа к серверам автоматизации могут использоваться и для доступа к вложенным объектам приложений MS Office (таким как Document, Excel WorkBook и т. д.). Рассмотрим опубликованные свойства компонентов серверов СОМ,
устанавливающих контакт с интерфейсом Application (компоненты
WordApplication, ExcelApplication). PowerPointApplication,
OutlookApplication). Наряду с традиционными для всех компонентов свойствами Name и Tag они содержат четыре дополнительных:
© ИМПИ ОГПУ
∙AutoConnect: Boolean—определяет, загружать (true) или нет (false) сервер при запуске приложения;
∙AutoQuit: Boolean— определяет, разрывать (true) или нет (false) связь с
сервером при завершении работы приложения;
∙ ConnectKind: TConnectKind — определяет способ установки соединения с сервером. Это свойство может принимать следующие значения:
ckRunningOrNew – если приложение-сервер уже выполняется, то
производится подключение к запущенной программе, иначе запускается новый экземпляр;
сkNewInstance – всегда создается новый экземпляр сервера;
ckRunningInstance – подключение к уже запущенному серверу;
ckRemote – подключение к удаленному серверу.
∙RemoteMachineName – сетевое имя компьютера, на котором расположен
сервер.
При использовании компонентов для доступа к приложениям Office достаточно разместить компонент на форме, а затем вызывать требуемые методы сервера автоматизации. Например, для того, чтобы выполнить подключение к серверу Word, создать в нем новый документ, передать в него текст и выйти, можно использовать следующий фрагмент кода
With WordApplication1 do
Begin
Connect;
Visible:=True; Documents.Add(EmptyParam, EmptyParam);
Selection.InsertAfter(’Вводим текст в новый документ’); Quit;
Disconnect; end;
Отметим, что большинство параметров методов имеют тип OleVariant, а для пустых параметров используется специальное значение EmptyParam.
Рассмотрим взаимодействие с MS Word. Основной объект, представляющий программу Word – WordApplication. Его основные свойства:
∙Visible: Boolean – если false, то программа будет невидима;
∙ActiveDocument: Document – ссылка на активный документ;
∙Documents: Documents – список открытых документов;
∙Selection: Selection – выделенный фрагмент текста или текущая
позиция курсора.
Для выхода из программы используется метод Quit, для печати документа –
PrintOut.
© ИМПИ ОГПУ
Массив документов Documents содержит свойство Count: Integer – количество документов и методы:
∙Add(Var Template, NewTemplate: OleVariant) – создание нового
документа. Необязательные параметры задают имя шаблона и логическое значение, которое задает, является ли создаваемый документ шаблоном;
∙Open(var FileName: OleVariant,…) – открывает файл. Кроме
первого параметра – переменной, задающей имя файла, – требует еще девять параметров, которые задают различные режимы открытия файла. Обычно все они равны EmptyParam.
∙Save( var NoPromt, Format: OleVariant) – сохраняет открытые
документы. Если первый параметр равен true, то не будет выдан запрос на сохранение документа. Второй параметр задает формат сохраняемого документа.
∙Close(var SaveChanges, Format, RouteDocument: OleVariant)
–закрывает все документы.
∙Item(var Index: OleVariant): Document – возвращает ссылку на документ. Index – его порядковый номер. Документы нумеруются с единицы.
С каждым документом Word можно работать как с объектом класса
TWordDocument.
Для этого компонент WordDocument нужно присоединить к одному из открытых документов вызовом метода ConnectTo(D: Document). Например, для присоединения к активному документу вызываем
WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
Компонент содержит следующие основные свойства:
∙Content: Range – объект, содержащий весь текст документа;
∙Name: WideString – имя документа;
∙Paragraphs– содержит все абзацы документа;
∙Tables – содержит все таблицы документа.
Также компонент содержит методы Save и Close, аналогичные методам объекта Documents, метод PrintOut для печати документа.
Метод Range(var Start, End_: OleVariant): Range возвращает объект типа Range, содержащий фрагмент текста, начиная с символа с номером Start и заканчивая символом с номером End_.
Для ввода и форматирования текста в MS Word используются свойства и методы объектов Paragraph, Range, Selection.
© ИМПИ ОГПУ
Объект Paragraph – элемент объекта Paragraphs, который является одним из свойств WordDocument. У объекта Paragraphs есть методы:
∙Add(var Range: OleVariant): Paragraph – добавление абзаца. Необязательный параметр Range задает фрагмент текста, перед которым будет добавлен абзац. Если этот параметр равен EmtyParam, то абзац добавляется в конец документа.
∙Item (Index: integer): Paragraph – возвращает абзац, имеющий номер Index.
У объекта Paragraph есть свойства, задающие параметры форматирования абзаца:
∙Alignment – способ выравнивания текста абзаца. Может принимать
значения :
owdAlignParagraphCenter,
owdAlignParagraphLeft,
owdAlignParagraphRight,
owdAlignParagraphJustify;
∙FirstLineIndent: Real – отступ красной строки в пунктах;
∙LeftIndent, RightIndent: Real – левый и правый отступы;
и т. д.
Объект Selection задает выделенную область текста. Он имеет следующие основные свойства:
∙Range – содержит выделенный фрагмент. Может использоваться для установки параметров шрифта;
∙Text: String – собственно текст;
∙Font – шрифт, с ним может быть связан специальный компонент Delphi
WordFont;
∙Start, End_ – начальный и конечный символ выделения;
и методы:
∙TypeText(Text: WideString) – вставляет текст вместо выделения, при этом новый текст не выделяется;
∙InsertBefore(Text: WideString)
иInsertAfter(Text: WideString) – вставляют текст до или после выделения, при этом текст включается в выделение.
Объект Range также содержит свойства Font, Start, End_ и методы
InsertAfter, InsertBefore, а также дополнительные свойства Bold,
© ИМПИ ОГПУ
Italic: Integer – равны единице, если включена жирность или наклон и нулю, если выключены.
Объект Font (свойство у Selection или у Range) содержит свойства шрифта, в том числе Bold, Italic, Size: integer – размер шрифта, Name:
WideString – имя шрифта и другие.
Для работы с таблицами используется свойство Tables объекта
WordDocument. Добавляется таблица методом Add (Range: Range; NumRows, NumCols: integer); где Range – фрагмент текста, в котором создается таблица, NumRows и NumCols – количества строк и столбцов. Метод Item(index: Integer): Table возвращает таблицу с номером Index.
Для работы с ячейкой таблицы используется метод Cell(Row, Column: integer): Cell, возвращающий ячейку таблицы – объект Cell.
Текст ячейки таблицы можно получить с помощью свойства Range объекта Cell. Метод Select выделяет ячейку таблицы. Таким образом, при заполнении таблицы можно применить любой из двух способов:
∙использовать методы InsertBefore или InsertAfter объекта
Cell(i,j).Range;
∙вызвать метод Cell(i,j).Select, а затем использовать для ввода методы объекта Selection.
Пример: Добавим в активный документ таблицу умножения в место, где стоит курсор.
With WordApplication1 do begin
ActiveDocument.Tables.Add(Selection.Range, 9, 9);
For i := 1 to 9 do For j := 1 to 9 do
ActiveDocument.Tables.Item(1).Cell(i,j).Range.InsertBefore(IntToStr(i*j))
End;
Задания для самостоятельной работы
1.Создать в MS Word новый документ, добавить туда заголовок (выровненный по центру полужирным начертанием), напечатать в следующей строке свои фамилию
иимя, сохранить под именем MyName.doc и закрыть MS Word.
2.Открыть документ MyName.doc, добавить в конец документа таблицу квадратов чисел от 0 до 99.
© ИМПИ ОГПУ