
- •Задание:
- •1.Заполнение массива 10 случайными числами:
- •2. Нахождение суммы 10 чисел:
- •Оператор выбора
- •Лабораторная работа №20
- •Создать Form2 и Form3 для пункта «Помощь» с данными об авторе и о программе.
- •Создать контекстное меню(PopupMenu1) для Memo1 с пунктами:
- •Задание 2: загрузить данные из файла и найти самого высокого мужчину, средний рост, женщину с наиболее близким к среднему рост.
Лабораторная работа №20
Использование компонентов кнопок обычных, графических и с фиксацией.
Создать форму с паролем. При вводе правильного пароля, будет запускаться 2 форма, иначе сообщение о том, что пароль не верный в label1
Загрузка приложения
Создаете вторую форму Form2 и Form3.
На Form2 располагаете элементы как ProgressBar(Win32) и Timer (system) . Таймеру ставите интервал 50 и в основной программе объявляешь переменную i:Integer.
Делаете события FormCreate, Timer1Timer по примеру:
На Form3 создать форму с часами, кнопками (SpeedButton): сохранить, загрузить, изменить цвет, изменить размер для данных в компоненте Memo1.
Пример:
Memo.Lines.SaveToFile(‘Primer1.txt’);
Memo.Lines.LoadFromFile(‘Primer1.txt’);
Добавить компоненту Image (Additional) и определить таймер для смены картинок через 3 секунды.
Лабораторная работа №21 Использование компонента таймер для управления при выполнении программы.
Выполнить задание по примеру
Пример. Создадим форму с кнопкой, но пусть кнопка каждую секунду изменяет своё положение. Воспользуемся таймером (TTimer, вкладка System палитры компонент). Interval оставим без изменения (1 сек.), а вот в обработчике запрограммируем произвольное изменение положения кнопки на форме. Разберёмся, что нам нужно: 1) Позиция кнопки на форме. Как Вы уже знаете, за положение отвечают свойства Left и Top, которые указывают положение левого верхнего угла кнопки относительно левого верхнего угла формы. Именно этим свойствам мы будем присваивать произвольные значения. 2) Каков будет диапазон для генерации случайных чисел? Очевидно, что кнопка не должна уйти за границы формы... Значит нам нужно подключить размеры самой формы, т.е. её высоту и ширину. В данном случае будем использовать не Width и Height, а ClientWidth и ClientHeight, так как в первые свойства входят заголовок и границы формы, а это лишние пиксели, за которые кнопка может вылезти. Однако и это ещё не всё - из этих размеров мы должны вычесть соответственно ширину и высоту самой кнопки, иначе она может частично скрыться за границами. Пишем обработчик:
procedure TForm1.FormCreate(Sender: TObject); begin Randomize end; procedure TForm1.Timer1Timer(Sender: TObject); begin Button1.Left:=Random(ClientWidth-Button1.Width); Button1.Top:=Random(ClientHeight-Button1.Height) end;
Теперь кнопка будет прыгать совершенно по разным точкам при каждом запуске программы.
2) Создать приложение на основе лабораторной 20 с выполнением следующих заданий:
1. Дан текстовый файл. Вывести количество содержащихся в нем символов и строк (маркеры концов строк EOLN и конца файла EOF при подсчете количества символов не учитывать).
2. Дана строка S и текстовый файл. Добавить строку S в начало1|конец2 файла.
3. Дан текстовый файл. Удалить из него первую1|последнюю2 строку.
4. Даны два текстовых файла с именами Name1 и Name2. Создать новый текстовый файл с именем Name3, являющийся объединением содержимого файлов Name1 и Name2 (в указанном порядке).
5. Даны два текстовых файла с именами Name1 и Name2. Добавить в конец файла Name1 содержимое файла Name2.
6. Дан текстовый файл, содержащий более трех строк. Удалить из него три последние строки.
7. Дано число k (< 10) и текстовый файл, содержащий более k строк. Удалить из файла первые1|последние2 k строк.
8. Дано число k (< 10) и текстовый файл, содержащий более k строк. Создать новый текстовый файл, содержащий k последних строк исходного файла.
9. Дано число k и текстовый файл. Удалить из файла строку с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений.
10. Дано число k и текстовый файл. Вставить пустую строку перед1|после2 строки с номером k (строки нумеруются от 0). Если строки с таким номером нет, то оставить файл без изменений.
11. Дан текстовый файл. Удалить из него пустые строки.
12. Дана строка S и текстовый файл. Заменить в файле все пустые строки на строку S.
13. Дан текстовый файл. Заменить в нем все подряд идущие пробелы на один пробел.
14. Дан текстовый файл, содержащий текст, выровненный по левому краю. Выровнять его по [правому краю]1|центру2, добавив в начало каждой непустой строки необходимое количество пробелов (ширину текста считать равной 50). Строки нечетной длины перед центрированием дополнять слева пробелом.
15. Дан текстовый файл, содержащий текст, выровненный по левому краю. Абзацы текста разделяются одной пустой строкой. Выровнять текст по ширине (то есть и по левому, и по правому краю), увеличив в каждой непустой строке (кроме последних строк абзацев) количество пробелов между словами, начиная с первого1|последнего2 пробела в строке (ширину текста считать равной 50).
16. Дан текстовый файл. Найти количество абзацев в тексте, если абзацы отделяются друг от друга одной или несколькими пустыми строками.
17. Дан текстовый файл. Найти количество абзацев в тексте, если каждый абзац начинается с красной строки (5 пробелов). Пустые строки между абзацами не учитывать.
18. Дан текстовый файл. Абзацы выделяются в нем с помощью красной строки (5 пробелов), а пустых строк нет. Вставить между соседними абзацами по пустой строке.
Лабораторная работа №22 Использование компонентов зависимых и независимых переключателей.
Задание
Задание : создать тест с 3 вопросами и выдать правильный результат
Задание: сделать выбор шрифта для строки
Пример
Лабораторная работа №23 Использование диалоговых окон.
Разработаем приложение, осуществляющее ввод и вывод информации с помощью диалоговых окон. В приложении будет 5 кнопок, при нажатии на одну их 4 первых кнопок будет появляться диалоговое окно, а при нажатии на последнюю кнопку приложение должно завершать свою работу.
В окне Object Inspector на вкладке Properties необходимо установить следующие значения для свойств формы:
Свойство |
Значение |
Caption |
Диалоговые окна |
Height |
75 |
Width |
537 |
Left |
300 |
Top |
200 |
Следует заметить, что такие свойства как Height, Width, Left, Top можно изменять, не используя окно Object Inspector. Свойства Height и Width можно изменить, наведя курсор мыши к краю формы, и когда он примет вид двусторонней чёрной стрелки, удерживая нажатой левую кнопку мыши, переместить мышь. Положение формы, т.е. свойства Left и Top, можно изменить, если навести курсор мыши к строке заголовка окна и, удерживая нажатой левую кнопку мыши переместить окно. Т.е. изменение размеров формы и её положения осуществляется таким же способом, как это делается с обычными окнами в Windows. Но, если необходимо установить точные значения, то без окна Object Inspector не обойтись.
Разместите на форме 5 кнопок редактирования и установите для них следующие свойства в окне Object Inspector:
Свойства, одинаковые у всех 5 кнопок:
Width |
97 |
Top |
8 |
Следующие свойства различны для каждой кнопки:
Button1 |
|
Caption |
InputBox |
Left |
8 |
Button2 |
|
Caption |
MessageDlgPos |
Left |
112 |
Button3 |
|
Caption |
MessageDlg |
Left |
216 |
Button4 |
|
Caption |
ShowMessage |
Left |
320 |
Button5 |
|
Caption |
Выход |
Left |
424 |
Положение кнопок на форме можно изменять в ручную, перемещая их по стартовой форме, причём все компоненты привязаны к сетке, которая отображается в виде точек, следовательно, переместить компонент можно лишь на величину, равную шагу сетки. Размеры компонентов также можно изменять с помощью мыши, и величина, на которую можно изменить ширину или высоту, определяется шагом сетки.
Перейдите к окну кода программы.
Сделаем так, чтобы при нажатии на первую кнопку появлялось диалоговое окно с полем редактирования, в которое можно было бы ввести какое-нибудь слово, а при нажатии на вторую кнопку появлялось окно с сообщением, отображающим введённое слово. При нажатии на третью кнопку также выдаётся окно введённым словом, и в этом окне присутствуют несколько кнопок. При нажатии на четвёртую кнопку появляется диалоговое окно с сообщением о том, какую кнопку нажал пользователь в предыдущем окне.
Для работы второго и третьего окон понадобится переменная строкового типа, для работы четвёртого окна понадобится ещё две переменные – строковая и целочисленная.
В разделе объявления переменных добавьте три новые переменные.
var str1,str2 : string; x : integer; |
Чтобы ввести текст процедуры, описывающей событие OnClick, для кнопки не обязательно открывать вкладку Events окна Object Inspector, достаточно сделать двойной челочек левой кнопкой мыши по той кнопке, для которой необходимо написать процедуру, тогда откроется окно кода программы с зарезервированной заготовкой для описания процедуры.
Процедура для первой кнопки выглядит следующим образом:
procedure TForm1.Button1Click(Sender: TObject); begin str1 := InputBox('Пользователь','Введите слово','Слово'); end; |
При нажатии на первую кнопку будет выдаваться диалоговое окно с полем ввода, в котором уже будет некоторое содержимое – «Слово». Если пользователь не изменит строку в поле редактирования, то переменной str1 будет присвоено значение «Слово», в противном случае переменной присваивается значение, введённое в поле редактирования.
Процедура для второй кнопки:
procedure TForm1.Button2Click(Sender: TObject); begin ShowMessagePos (str1,300,200); end; |
При нажатии на вторую кнопку будет выдаваться диалоговое окно с сообщением, отображающим значение переменной str1, а именно, слово, которое было введено в поле редактирования первого диалогового окна, либо значение, установленное по умолчанию. Причем данное диалоговое окно будет находиться на расстоянии 300 пикселей от левой границы экрана и 200 пикселей от верхней.
Процедура для третьей кнопки:
procedure TForm1.Button3Click(Sender: TObject); begin x := MessageDlg ('Вы ввели слово "'+str1+'"', mtInformation, [mbOK,mbYes,mbNo,mbIgnore,mbCancel], 0); end; |
При нажатии на третью кнопку будет появляться информационное диалоговое окно, отображающее значение переменной str1, окно будет закрываться при нажатии любой из пяти кнопок: OK, Yes, No, Ignore, Cancel или закрытии окна с помощью стандартной кнопки для всех окон Windows, либо нажатии клавиши Esc. Так как необходимо запомнить, какую кнопку нажал пользователь, то переменной x присваивается значение процедуры MessageDlg, таким образом, переменная будет хранить значение результата.
Процедура для четвёртой кнопки:
procedure TForm1.Button4Click(Sender: TObject); begin case x of 0: ShowMessage ('Вы ничего не нажали в предыдущем диалоговом окне'); 1: str2 := '"OK"'; 2: str2 := '"Cancel" или закрыли окно'; 5: str2 := '"Ignore"'; 6: str2 := '"Yes"'; 7: str2 := '"No"'; end; if x<>0 then ShowMessage ('Вы нажали кнопку '+str2); end; |
При нажатии на третью кнопку будет появляться диалоговое окно, аналогичное окну, появляющемуся при нажатии на вторую кнопку, с той лишь разницей, что теперь окно будет появляться в центре экрана, так как для него нельзя задать координаты его положения.
Содержимое данного окна полностью зависит от того, как пользователь работал с третьим окном. Если пользователь не нажимал на третью кнопку, тогда переменная x имеет значение, равное нулю, и в четвёртом окне выдастся сообщение о том, что пользователь ничего не нажимал в третьем окне. Если же пользователь уже работал с третьим окном, то переменной x присвоится некоторое значение в зависимости от того, какая кнопка была нажата. В данной процедуре переменная x не меняется, в зависимости от её значения присваивается какое-либо значение переменной str2 и выдаётся соответствующее сообщение.
Процедура для пятой кнопки:
procedure TForm1.Button5Click(Sender: TObject); begin Form1.Close; end; |
Данная процедура осуществляет завершение работы приложения.
Вид приложения при его запуске:
Вид диалогового окна, появляющегося при нажатии на первую кнопку:
Вид диалогового окна, появляющегося при нажатии на вторую кнопку:
Вид диалогового окна, появляющегося при нажатии на третью кнопку:
Вид диалогового окна, появляющегося при нажатии на четвёртую кнопку:
Текст кода модуля
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; str1,str2: string; x: integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin str1 := InputBox('Пользователь','Введите слово','Слово'); end;
procedure TForm1.Button2Click(Sender: TObject); begin ShowMessagePos (str1,300,200); end;
procedure TForm1.Button3Click(Sender: TObject); begin x := MessageDlg ('Вы ввели слово "'+str1+'"', mtInformation, [mbOK,mbYes,mbNo,mbIgnore,mbCancel], 0); end;
procedure TForm1.Button4Click(Sender: TObject); begin case x of 0: ShowMessage ('Вы ничего не нажали в предыдущем диалоговом окне'); 1: str2 := '"OK"'; 2: str2 := '"Cancel" или закрыли окно'; 5: str2 := '"Ignore"'; 6: str2 := '"Yes"'; 7: str2 := '"No"'; end; if x<>0 then ShowMessage ('Вы нажали кнопку '+str2); end;
procedure TForm1.Button5Click(Sender: TObject); begin Form1.Close; end;
end. |
Лабораторная работа №24 Использование операторов обработки исключений
Выполнить приложение по следующим рисункам
Код программы:
Добавить ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ
Try Except и Try Finally для ВВОДА, ВЫЧИСЛЕНИЯ данных
Отключите вывод ошибок в TOOLS
Создать следующий пример с двумерным массивом: компонеyта MaskEdit находится на странице Additional/
Максимальная длина ввода данных – 2 цифры
Редактор ШАБЛОНА ввода
Можно определить тот ШАБЛОН данных которые нам необходимы, мы определили что вводим двухзначное число НЕ БОЛЕЕ, кроме чисел ничего нельзя ввести.
Чтобы можно было вводить данные в массив, разрешим это с помощью свойства goEditing а чтобы можно было передвигаться по ячейкам с помощью TAB – goTabs перевести в TRUE
Добавить ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ
Try Except и Try Finally для ВВОДА и ВЫЧИСЛЕНИЯ данных
Лабораторная работа №25 Создание главного и контекстного меню
Ссылка на создание главного и контекстного меню http://www.interface.ru/home.asp?artId=7582
Создать главное меню со следующими пунктами и свойствами (горячие клавиши, пиктограммы, линии разрыва, вложение меню):
Для каждого пункта внести процедуру обработки события данных в Memo1 и компонент системных диалогов OpenFileDialog, SaveFileDialog, FontDialog и т.д. Например для пункта «Файл- Открыть»: