- •Саблукова н.Г. Программирование в среде delphi
- •Часть II
- •Создание проектов
- •Содержание
- •§1 Добавление графических изображений в проект
- •§2 Использование элементов анимации и мультипликации
- •Движение объектов
- •Задания
- •2.2 Изменение форм и видов объектов
- •Задания
- •2.3 Изменение размеров объектов
- •2.4 Пример программы движения объектов с элементами анимации и мультипликации типа «Тараканьи бега»
- •§3 Управление объектами
- •3.1 Управление объектом с помощью мыши
- •Создание проекта с использованием управления объектом с помощью мыши
- •Задания
- •3.3 Управление объектом с помощью клавиатуры
- •Задания
- •§4 Работа со строками
- •4.1 Строковый тип данных
- •4.2 Использование компонента tMemo для работы со строками
- •4.3 Работа со строками с помощью компонентов
- •Задания
- •5. Массивы
- •5.1 Одномерные массивы
- •Доступ к элементам массива
- •Задания
- •Многомерные массивы. Пример создания проекта с границами типа «Лабиринт»
- •Задания
- •6. Создание меню
- •6.1 Главное и вложенное меню
- •6.2 Создание текстового редактора с изменяемыми настройками типа «меню» и элементами диалога
- •7. Элементы мультимедиа
- •Литература
Задания
Создать проект «Морской бой», в котором клавишами управления курсором следует навести прицел на движущийся корабль. При нажатии на клавишу Enter прицел должен выстрелить в корабль пулькой. Если пуля попадет в корабль, то образуется взрыв.
Изменить проект «Морской бой» таким образом, чтобы после поражения корабля, он появлялся вновь у левой границы. В проекте должно отображаться количество попаданий в корабль.
Создать проект «Морской бой» с режимом игры на двоих, при котором возможна стрельба и из прицела и с корабля. В проекте должно отображаться число попаданий каждого игрока и определяться победитель.
Создать программу, имитирующую движение по форме белого кубика нажатием клавиш управления указателем. Кубик должен увеличивать свои размеры при нажатии клавиши Insert и уменьшать при нажатии клавиши Delete.
Составить проект рисования дома и обеспечить возможность зажигать и гасить свет в доме. Включение и выключение света в окне должно выполняться: с клавиатуры; с помощью мыши.
Написать игровую программу, в которой необходимо попасть мячиком по кирпичикам. Мяч находится на движущейся подставке и управляется с помощью мыши. При попадании кирпич исчезает. После окончания времени выводится итоговое сообщение о количестве попаданий.
§4 Работа со строками
Объекты строкового типа string довольно часто встречаются в программах, написанных на языке Delphi, поэтому рассмотрим подробней свойства и методы этих объектов.
4.1 Строковый тип данных
Строковый тип данных служит для хранения строк или цепочки символов. Переменная строкового типа объявляется следующим образом:
Var str1: String; или Var str1: String [длина]
где: Str1 – имя переменной;
string – ключевое слово обозначения строкового типа;
длина – константа целого типа, которая задает максимально допустимую длину строки. Если в объявлении строковой переменной длина строки не указана, то ее длина задается равной 255 символам.
Используя операции =, <, >, <=, >=, переменную типа string можно сравнить с другой переменной типа string или со строковой константой. Строки сравниваются посимвольно, начиная с первого символа. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом.
Кроме операции сравнения, к строковым переменным и константам можно применить операцию сложения. В результате выполнения этой операции получается новая строка.
Например, в результате выполнения команд:
first__name: ='Иван' ;
last_name:='Иванов';
ful_name:=first_name+last_name;
переменная ful_name получит значение ‘Иван Иванов’.
Основные свойства и методы объектов строкового типа (объектов TString) рассмотрим в следующем пункте на примере работы с текстовой областью.
4.2 Использование компонента tMemo для работы со строками
Не всегда удается обойтись простым текстовым полем TEdit. Если нужно ввести большой объем информации, то может понадобиться несколько строчек текста. В таком случае следует использовать компонент ТMemo (Текстовая область) , который находится на панели Standard.
Основные свойства TMemo.
1. Свойство Lines (Строки) – это свойство типа string, в котором хранится список строк, введенных пользователем. По умолчанию в компоненте ТМемо находится одна строка текста, равная имени компонента. Добавить или удалить строки можно и с помощью Инспектора объектов, и в окне кода программы. Свойство Lines само является объектом, поэтому оно имеет свои свойства и методы (см. ниже).
Рис. 26 Компонент TMemo с одной строкой Memo1.
2. Свойство Alignment (Выравнивание) задает способ выравнивания и может принимать одно из следующих значений:
taLeftJustify — выравнивание по левой границе (по умолчанию);
tacenter — выравнивание по центру;
taRightJustify — выравнивание по правой границе.
3. Свойство ScrollBars (Прокрутка) устанавливает полосы прокрутки для удобного просмотра информации. Это свойство принимает следующие значения:
ssNone — полосы прокрутки отсутствуют (по умолчанию);
ssHorizontai — снизу имеется горизонтальная полоса прокрутки;
ssvertical — справа имеется вертикальная полоса прокрутки;
ssBoth — есть обе полосы прокрутки.
Основные свойства объекта Lines
Свойство Count (Подсчет) – выводит количество строк, содержащихся в объекте.
Пример. Подсчитать количество строк в текстовой области. |
Разместим на форме компоненты TMemo, TEdit и TButton. В текстовое поле с помощью свойства Lines Инспектора объектов введем дни недели:
Рис. 27 Окно программы подсчета количества строк.
Создадим обработчик события OnClick у кнопки и напишем в нем следующий текст:
procedure TForm1.Button1Click(Sender: TObject); |
begin |
Edit1.Text:=IntToStr(Memo1.Lines.Count); |
end; |
Эта программа подсчитывает и те строки, которые были введены изначально с помощью Инспектора Объектов, и строки, введенные после запуска программы.
Рис. 28 Работающее приложение
Свойство Strings (Строки) – хранит набор строк. Чтобы получить доступ к строке, нужно использовать следующую конструкцию: Memo1.Lines.Strings[номер строки].
Свойство Текст (Текст) – хранит все строчки в виде одной целой строки.
Основные методы объекта Lines
Метод Clear (Очистить) – удаляет набранные строки в текстовой области.
Пример. Составим программу, которая удаляет строки, набранные в текстовой области. |
Разместим на форме компонент TMemo и очистим его содержимое. Добавим кнопку с заголовком Очистить.
Рис. 29 Окно программы очистки строк
Для удаления строк применим метод Clear к свойству Lines компонента Memo1. Код обработчика события OnClick будет следующий:
procedure TForm1.Button1Click(Sender: Tobject); |
begin |
Memo1.Lines.Clear; |
end; |
Если после запуска программы мы наберем какие-либо строки в текстовом поле, а затем нажмем на кнопку Очистить, то все строки удалятся.
Метод Add (Добавить) – программно добавляет новую строку в текстовую область. У этого метода в скобках указывается текст, который нужно добавить: Add (const S: string).
Пример. Составить программу, которая добавляет строки в текстовую область. |
В предыдущем примере изменим заголовок кнопки на Добавить. Код обработчика события OnClick будет следующий:
Procedure TForm1.Button1Click(Sender: Tobject); |
begin |
Memo1.Lines.Add (‘Новая строка’) |
end; |
Рис. 30 Добавление строк
Метод Delete (Удалить) – удаляет строку под указанным номером. В скобках у этого метода указывается номер удаляемой строки.
Пример. Составить программу, которая удаляет строчку, в которой находится курсор. |
Создадим форму по образцу:
Рис. 31 Окно программы удаления строки
Чтобы узнать позицию курсора, воспользуемся свойством CaretPos объекта TMemo. Это переменная типа TPoint. У него есть два свойства «Х» и «Y». X указывает на текущую колонку, а Y – на текущую строку. Обработчик события OnClick у кнопки будет следующим:
procedure TForm1.Button1Click(Sender: TObject); |
begin |
Memo1.Lines.Delete(Memo1.CaretPos.Y); |
end; |
Метод LoadFromFile (Открыть из файла) – загружает текст из файла. При выполнении этой команды нужно предварительно проверить есть ли загружаемый файл. Чтобы проверить существование файла, используется функция FileExists. В скобках у этой функции указывается имя файла.
Метод SaveToFile (Сохранить) – сохраняет содержимое текстовой области в файл.
Пример. Создать программу, которая загружает текст из файла и сохраняет его. |
Разместим на форме компонент TMemo и очистим его содержимое. В текстовом редакторе Блокнот наберем несколько предложений. Текстовый документ сохраним с именем memo.txt в той же папке, что и проект.
Рис. 32 Содержимое текстового файла
Для загрузки файла изменим обработчик OnShow (Показать) у формы, для сохранения – OnClose (Закрыть) также у формы.
procedure TForm1.FormShow(Sender: TObject); |
begin |
Memo1.Lines.LoadFromFile('memo.txt'); |
end; |
|
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); |
begin |
Memo1.Lines.SaveToFile('memo.txt'); |
end; |
После запуска появится следующее окно:
Рис. 33 Загрузка текстового файла в текстовую область
Изменим какую-нибудь строчку текстовой области и закроем программу. Изменения, которые вы сделали сохраняться. В этом можно убедиться, открыв данный текстовый документ.
Рис. 34 Изменения в тестовой области и в исходном файле
