Создание приложений в визуальной интегрированной среде разработки Delphi
Цель работы:
привитие практических навыков написания приложений в визуальной интегрированной среде разработки Delphi.
Содержание работы:
1. Создание простейших приложений.
2. Программирование калькулятора.
3. Создание генератора надежных паролей.
Требования к отчету:
Отчет по работе должен содержать:
название лабораторного занятия, цель работы, порядок выполнения каждого пункта задания, выводы по каждому пункту задания;
указанные в заданиях файлы, сохраненные в личной папке на жестком диске.
II. МЕТОДИКА ВЫПОЛНЕНИЯ РАБОТЫ
1. Создание простейших приложений
Задание № 1а. Создание текста на форме
С
оздайте
программу, имеющую интерфейс с двумя
надписями (рис. 1).
Для
отображения текста на форме используется
компонент TLabel
(Надпись)
(кнопка Label
в палитре компонентов Standard).
Технология работы
Запустите программу Delphi (Пуск Программы Borland Delphi 7 Delphi 7)
Создайте новый проект типа Application, для чего выполните команды меню File New Application или щелкните по кнопке New items
и в открывшемся одноименном диалоговом
окне на вкладке New
дважды щелкните на пиктограмме
.Поместите надпись в форму: на палитре компонент выберите вкладку Standart и дважды щелкните кнопкой мыши на пиктограмме Label
(или один раз щелкните кнопкой мыши на
,
а затем щелкните мышью в нужном месте
формы). При этом можно, не отпуская
кнопки мыши, задать необходимые размеры.
Чтобы удалить надпись из формы, выделите
ее (щелкните на ней мышью) и нажмите
клавишу Delete.
Также удаление можно выполнить с помощью
контекстного меню, если щелкнуть правой
кнопкой мыши на объекте.
Переместите надпись в другое место формы методом перетаскивания. Для этого установите указатель мыши на надписи, щелкните кнопкой мыши и, удерживая ее нажатой, передвиньте надпись в другое место. Когда надпись займет нужное положение, отпустите кнопку мыши.
Измените свойство надписи Name (Имя) на MyFirstLabel (по умолчанию она называлась Label1): выделите надпись щелчком мыши, а затем в инспекторе объектов щелкните на свойстве Name и введите слово MyFirstLabel. После ввода нужного имени надписи зафиксируйте его, нажав клавишу Enter. Убедитесь, что вы изменяете свойство надписи, а не формы. Для этого надпись в форме должна быть выделена, а в поле выбора в верхней части инспектора объектов должно быть написано Label1: TLabel (когда вы измените имя надписи, там будет написано MyFirstLabel: TLabel).
Измените саму надпись. Для этого выберите в инспекторе объектов свойство Caption, введите новую надпись: «Моя первая надпись!» и нажмите клавишу Enter. Введенный текст появится в форме. Обратите внимание, как изменяются границы надписи. Это связано со свойством AutoSize. Если установить свойство AutoSize в состояние False, то автоматического изменения границ происходить не будет. Границы можно изменять вручную, для чего выделите объект и наведите курсор мыши на одну из черных меток границы. Когда он примет вид двунаправленной стрелки, нажмите кнопку мыши и задайте необходимые размеры.
Измените цвет фона надписи. Для этого выделите надпись, выберите свойство Color (Цвет), щелкните на стрелке, выберите в раскрывшемся списке желтый цвет и щелкните на нем.
Измените шрифт и цвет текста надписи. Для этого выберите свойство Font (Шрифт) и щелкните на трех точках. В окне Шрифт (Font) измените шрифт на Arial, стиль на Жирный курсив (Bold Italic), а размер — на 20. В раскрывающемся списке Цвет (Color) выберите красный цвет и щелкните на кнопке ОК.
Добавьте к форме еще одну надпись. На этот раз воспользуйтесь другим методом — щелкните на пиктограмме Label
,
переместите указатель мыши в произвольное
место формы и еще раз щелкните кнопкой
мыши. При этом в форме в указанном вами
месте должна появиться новая надпись.
Можете не отпускать кнопку мыши и задать
необходимые размеры.Измените свойство Name новой надписи на MySecondLabel, а свойство Caption — на «Моя вторая надпись!».
Выберите пункты меню View Alignment Palette (Просмотр Палитра способов выравнивания). Выделите в форме надписи, что можно сделать несколькими способами. В окне дерева объектов при нажатой клавише Shift щелкните на тех объектах, которые необходимо выделить, в нашем случае это MyFirstLabel и MySecondLabel. Или обведите их на форме указателем мыши при нажатой клавише. Используйте различные пункты из палитры способов выравнивания и оцените результат.
Теперь выделите форму. Это можно сделать двумя способами: щелкнуть в любом месте формы за пределами надписей, или щелкнуть на пиктограмме формы на панели View. Если форма видна, то первый способ, конечно, удобнее, однако если в проекте есть много форм, причем нужная форма закрыта другими окнами, то более удобен второй способ.
Измените свойства формы: свойству Name задайте значение «LabelExample», а свойству Сарtion — значение «Надпись».
Итак, создано простое приложение. Выполните его. Это можно сделать одним из трех способов: щелкнув на пиктограмме Run (Выполнить)
на панели отладки, выбрав в главном
меню команду Run
Run или нажав клавишу F9.
При этом на экране должна появиться
форма, как показано на рис. 1.Щелкнув на кнопке закрытия окна в верхнем правом углу, завершите приложение. Это же можно сделать и в среде Delphi. Для этого запустите приложение еще раз, активизируйте любое окно Delphi (однократно щелкнув на нем кнопкой мыши) и выберите Run Program Reset (Выполнить Переустановка программы), или нажмите клавиши Ctrl+F2.
Для сохранения разработанного проекта выберите пункты меню File Save all или щелкните на кнопке
.
В открывшемся диалоговом окне Save
Unit1
As
выберите (или создайте) папку для
сохранения, а в поле Имя
файла введите нужное имя.
Сохраните проект в папке Мои
документы\Отчет ЛЗ-07\Задание 1а\.
Задание № 1b. Создание поля ввода текста
С
оздайте
программу, имеющую интерфейс с полем
ввода (рис. 2).
В
компоненте TEdit
(Поле ввода)
(кнопка Edit
в палитре компонентов Standard)
хранится текст, который можно помещать
в данный компонент как во время разработки,
так и во время выполнения. Текст, видимый
в поле ввода, находится в свойстве Text.
Свойство MaxLength
определяет максимальное количество
символов в поле ввода. Если значение
свойства MaxLength
равно 0, то
количество символов ничем не ограничено.
С помощью свойства Font
можно устанавливать шрифт текста. Если
свойство Readonly
(Только чтение)
установить в True,
то во время выполнения программы
пользователь не сможет изменять текст
поля ввода.
Технология работы
Создайте новый проект типа Application.
Разместите поле ввода в форме для чего выполните двойной щелчок мышью на кнопка Edit
в палитре компонентов Standard.
Измените размер поля ввода. Для этого установите указатель мыши на одном из черных квадратиков и, удерживая кнопку мыши нажатой, переместите черный квадратик (а с ним и границу поля ввода) в нужном направлении. Установив необходимый размер, отпустите кнопку мыши.
Переместите поле ввода в нужное место методом перетаскивания.
Установите значение свойства Name в MyText. Для этого в инспекторе объектов щелкните на свойстве Name и введите MyText. Как и в случае с надписью, убедитесь, что вы изменяете свойство поля ввода, а не формы. Для этого в заголовке поля выбора в верхней части инспектора объектов должно быть написано Edit1: TEdit.
Выберите в инспекторе объектов свойство Text и введите его новое значение: «Это поле ввода». Нажав клавишу Enter, зафиксируйте введенный текст. Обратите внимание: во время ввода изменяется текст в поле ввода формы.
Измените цвет текста в поле ввода на синий. Для этого в инспекторе объектов щелкните на значке (+) рядом со свойством Font. При этом значок (+) изменяется на (-), и появляется список свойств объекта Font. Выберите свойство Color и щелкните на стрелке, расположенной в этом поле. При этом раскрывается список доступных цветов. Найдите в нем синий цвет и щелкните на нем.
Выделите форму. Измените значение свойства Name формы на «EditBoxExample», а значение свойства Caption — на «Поле ввода».
Нажав клавишу F9, запустите разработанную программу. При этом на экране появляется изображение, показанное на рис. 2. В отличие от надписи, текст в поле ввода можно изменять, запоминать и извлекать из буфера обмена. Но после установки значения свойства Readonly в True изменять содержимое поля ввода через графический интерфейс пользователя уже будет нельзя. Значение свойства Readonly можно менять из программы, запрещая или разрешая таким образом пользователю вводить данные.
Завершите приложение и сохраните его в папке Мои документы\Отчет ЛЗ-07\Задание 1b\.
Задание № 1c. Создание области просмотра текста
С
оздайте
программу, имеющую интерфейс с областью
просмотра текста (рис. 3).
Компонент
TMemo (Область
просмотра) (кнопка Memo
в палитре компонентов Standard)
предназначен для вывода на экран
нескольких строк текста. Свойства
MaxLength, Font
и Readonly области
просмотра аналогичны соответствующим
свойствам поля ввода. Свойство Text
содержит весь текст области просмотра,
однако это свойство доступно только по
время выполнения. Свойство Lines
содержит отдельные строки текста области
просмотра, оно доступно как во время
разработки, так и во время выполнения.
Свойство WordWarp
определяет, будут ли переноситься
строки, выходящие за пределы области
просмотра, или они останутся невидимыми.
Если вместо русского текста на экране появились произвольные символы, то нужно изменить значение свойства Charset (Набор символов) объекта Font (Шрифт). Для большинства шрифтов подходящими значениями свойства Charset являются DEFAULT_CHARSET или RUSSIAN_CHARSET.
Технология работы
Создайте новый проект типа Application.
Разместите область просмотра в форме, выполнив двойной щелчок на кнопке Memo
в палитре компонентов Standard.Установите подходящий размер области просмотра и переместите область просмотра в удобное место.
Измените значение свойства Name области просмотра на «memSample», для чего в инспекторе объектов щелкните на свойстве Name и введите «memSample». Убедитесь, что вы изменили свойство области просмотра, а не формы. В поле выбора в верхней части инспектора объектов должно быть написано Memo1: TMemo (после изменения имени там будет memSample: TMemo).
В
ыберите
свойство Lines
и щелкните на кнопке с тремя точками.
При этом появляется окно редактора
строк String List Editor.
Введите текст, показанный на рис. 4.
Закончив ввод текста, щелкните на кнопке
ОК.Выделите форму. Для этого щелкните на ней левой кнопкой мыши, или щелкните на имени формы в раскрывающемся списке инспектора объектов. Измените значение свойства Name на «MemoBoxExample», а свойства Caption — на «Область просмотра».
В инспекторе объектов измените значение свойства WordWarp области просмотра memSample на False, а значение свойства ScrollBars — на ssBoth (это свойство определяет наличие или отсутствие полос прокрутки).
Запустите программу на выполнение. На экране должно появиться изображение, показанное на рис. 3. Попробуйте вводить тексты различной длины. Попробуйте режимы выделения текста, сохранения и извлечения из буфера обмена.
Завершите работу программы и сохраните проект в папке Мои документы\Отчет ЛЗ-07\Задание 1c\.
Для лучшего понимания работы области просмотра поэкспериментируйте с различными установками свойств WordWarp и ScrollBars.
Задание № 1d. Создание кнопки
С
оздайте
программу, имеющую интерфейс с кнопкой
(рис. 5).
С
помощью компонента TButton
(Кнопка) (кнопка
Button
в палитре компонентов Standard)
пользователь инициирует выполнение
какого-либо фрагмента кода или целой
программы. Другими словами, если щелкнуть
на элементе управления TButton,
то программа выполняет определенное
действие. При этом кнопка принимает
такой вид, будто она нажата.
Кнопкам можно присваивать комбинации быстрых клавиш. Во время выполнения нажатие такой комбинации клавиш эквивалентно щелчку мыши на кнопке.
Технология работы
Создайте новый проект типа Application
В инспекторе объектов измените значение свойства формы Name на ButtonExample, а свойства Caption — на «Кнопка».
Поместите кнопку в форму, выполнив двойной щелчок на пиктограмме Button
в палитре компонентов Standard.
Измените значение свойства Name кнопки на MyButton, а значение свойства Caption кнопки на "&Щелкать здесь". Обратите внимание: в надписи на кнопке буква, перед которой стоит символ "&", будет подчеркнутой. В данном случае это буква Щ. Это означает, что теперь кнопке присвоена комбинация клавиш быстрого вызова Щ.
Нажав клавишу F9, запустите программу. При этом на экране появляется изображение, показанное на рис. 5.
Щелкните на кнопке. При этом кнопка принимает такой вид, будто она нажата. Пока еще с кнопкой не связан какой-либо код, поэтому никакой реакции на нажатие кнопки не происходит.
Завершите работу программы и сохраните проект в папке Мои документы\Отчет ЛЗ-07\Задание 1d\.
Что делать, если в названии кнопки должен отображаться символ «&»? Ведь если поместить его в название, то он сделает следующую букву подчеркнутой, а сам виден не будет. Чтобы решить эту проблему, используется следующее правило: символ «&» отображается в названии кнопки, если в свойстве Caption записаны два стоящих подряд символа — «&&». Например, чтобы название кнопки имело вид This & That, в свойство Caption необходимо записать This && That. При этом никакая комбинация клавиш быстрого вызова кнопке не присваивается.
Задание № 2. Создание простого приложения в Delphi
Создайте программу, имеющую интерфейс с двумя кнопками и надписью, которую можно как выводить на экран, так и убирать с экрана (рис. 6).
Технология работы
Создайте проект типа Application.
Разместите на нем две кнопки и надпись. Используя палитру способов выравнивания, или вручную постарайтесь расположить их симметрично, выбрав подходящие размеры.
Назовите первую кнопку «Вывести надпись», а вторую — «Очистка» (это свойство Caption).


Для надписи выберите: тип шрифта - Arial, начертание – Жирный курсив, размер шрифта – 16 пунктов, цвет - Красный (выше говорилось, как это сделать). Выберите для надписи желтый фон.
Для создания обработчика события нажатия кнопки необходимо в инспекторе объектов выбрать вкладку Events (События), затем выбрать событие OnClick (Щелчок). Разумеется, инспектор объектов должен отображать настройки нужного объекта. В нашем случае это будет кнопка Buttonl с названием «Вывести надпись».
Дважды щелкните мышью на появившемся справа от события OnClick белом поле, и Delphi моментально перенесет вас в редактор кода, где сделает заготовку для обработчика события и установит курсор на том месте, где нужно ввести необходимый код:
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
Между ключевыми словами begin и end вручную введите следующий код:
Labell.Caption:='Моя первая программа';
Проделайте то же самое со второй кнопкой, для которой введите такой код:
Labell.Caption:='';
Запустите программу и пощелкайте на кнопках.
Завершите работу программы и сохраните проект в папке Мои документы\Отчет ЛЗ-07\Задание 2\.
Полностью листинг программы имеет вид:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TPrimer1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Primer1: TPrimer1;
implementation
{$R *.dfm}
procedure TPrimer1.Button1Click(Sender: TObject);
begin
Label1.Caption:='Моя первая программа!';
end;
procedure TPrimer1.Button2Click(Sender: TObject);
begin
Label1.Caption:='';
end;
end.
Посмотрев на него, вы увидите имена созданных вами объектов и выводимых надписей.
Задание № 3. Создание программы без написания кода
Создайте программу Календарь с интерфейсом, приведенном на рис. 7.
Рассмотрим пример создания простейшей программы без написания кода.
Технология работы
Создайте проект типа Application.
Разместите на нем надпись «Календарь» и компонент DateTimePicker (Календарь)
,
который находится на вкладке Win32
палитры компонент.Разместите календарь в углу формы и установите подходящие размеры формы.
Запустите программу и попробуйте работу компонента DateTimePicker. Завершите работу программы, сохраните ее в папке Мои документы\Отчет ЛЗ-07\Задание 3\ и можете ею пользоваться.
Самостоятельно изучите листинг программы в окне Редактора Кода.
2. Программирование калькулятора
Задание № 4. Разработка простого калькулятора
Р
азработайте
программу, имитирующую работу калькулятора,
работающего с целыми числами и выполняющего
четыре действия: сложение, вычитание,
умножение и целочисленное деление.
Форма будет содержать одно текстовое поле и 16 кнопок (рис. 8).
Технология работы
1. Разработка формы:
Запустите программу Delphi и создайте новый проект.
Присвойте значения свойствам формы Form1 согласно следующей таблице:
Свойство
Значение
Пояснение
Caption
Калькулятор
Заголовок формы
BorderStyle
bsDialog
Граница формы не позволяет изменять ее размеры - как у диалоговых окон
Heigth
178
Высота формы
Width
173
Ширина формы
Разместите на форме компонент текстового поля Edit
с вкладки Standard
и присвойте свойствам компонента Edit1
следующие значения:Свойство
Значение
Пояснение
Text
Очищаем содержимое текстового поля
Left
4
Отступ слева
Top
4
Отступ сверху
Width
157
Ширина поля
Разместите на форме компонент кнопки BitBtn
с вкладки Additional
и присвойте свойствам компонента
BitBtn1
следующие значения:
|
Свойство |
Значение |
Пояснение |
|
Caption |
7 |
Надпись на кнопке |
|
Left |
4 |
Отступ слева |
|
Top |
32 |
Отступ сверху |
|
Width |
33 |
Ширина кнопки |
|
Font.Size |
10 |
Делаем шрифт надписи крупнее |
|
Font.Color |
clBlue |
Выделяем надпись синим цветом |
|
Font.Style.fsBold |
True |
Выделяем надпись полужирным начертанием |
Эта кнопка, соответствующая цифре 7.
Разместите на форме остальные цифровые кнопки, соответствующие десятичным цифрам калькулятора. Для этого можно выделить уже созданную кнопку 7, скопировать ее в буфер обмена (нажав комбинацию клавиш CTRL+C или выполнив команды меню Правка (Edit) Копировать (Copy)), а затем вставить из буфера обмена требуемое количество раз, нажав комбинацию клавиш CTRL+V или выполнив команды меню Правка (Edit) Вставить (Paste).
Присвойте размещенным кнопкам следующие свойства:
Caption
8
9
4
5
6
1
2
3
0
Left
40
76
4
40
76
4
40
76
4
Top
32
32
60
60
60
88
88
88
116
Разместите на форме кнопки, соответствующие сбросу (СЕ) и значению равно (=). Измените их следующие свойства:
Кнопка сброса
Кнопка равно
Пояснение
Caption
CE
=
Надпись на кнопке
Left
40
76
Отступ слева
Top
116
116
Отступ сверху
Font.Color
clRed
clRed
Выделяем надпись красным цветом
Разместите на форме 4 кнопки BitBtn (
),
соответствующие арифметическим
действиям, и измените их следующие
свойства:
|
Кнопка сложения |
Кнопка вычитания |
Кнопка деления |
Кнопка умножения |
Пояснение |
|
|
Caption |
+ |
-- |
/ |
* |
Надпись на кнопке |
|
Width |
37 |
37 |
37 |
37 |
Ширина кнопки |
|
Left |
124 |
124 |
124 |
124 |
Отступ слева |
|
Top |
32 |
60 |
88 |
116 |
Отступ сверху |
|
Font.Color |
clGreen |
clGreen |
clGreen |
clGreen |
Выделяем надпись зеленым цветом |
2. Разработка программного кода:
Перейдите в окно программного кода и объявите в разделе Var все переменные, которые будут использоваться:
...
var
Form1: TForm1;
...
num1, num2: integer; //Для хранения первого и второго числа
doit: string; //Действие, выполняемое с числами
Полужирным цветом выделяется то, что вы должны ввести в программу!!!
Создайте обработчик события OnClick нажатия каждой цифровой кнопки. Для этого в форме выполните двойной щелчок мышью на каждой из цифровых кнопок в конструкторе формы и внесите необходимые операторы в процедуре обработки события OnClick.
Для кнопки 0:
procedure TForm1.BitBtn10Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'0';
end;
Для кнопки 1:
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'1';
end;
И так далее для остальных цифровых кнопок.
При щелчке на кнопке СЕ должен происходить сброс содержимого текстового поля. Выполните двойной щелчок мышью на кнопке СЕ и внесите необходимые операторы в процедуру обработки события OnClick:
procedure TForm1.BitBtn11Click(Sender: TObject);
begin
Edit1.Clear;
num1:=0;
num2:=0;
doit:='';
end;
Здесь очищается текстовое поле (метод Clear) и обнуляются все переменные.
Создайте обработчик события OnClick нажатия кнопок арифметических действий.
Для кнопки сложения:
procedure TForm1.BitBtn13Click(Sender: TObject);
begin
num1:=StrToInt(Edit1.Text);
doit:='плюс';
Edit1.Clear;
end;
Для кнопки вычитания:
procedure TForm1.BitBtn14Click(Sender: TObject);
begin
num1:=StrToInt(Edit1.Text);
doit:='минус';
Edit1.Clear;
end;
Для кнопки умножения:
procedure TForm1.BitBtn16Click(Sender: TObject);
begin
num1:=StrToInt(Edit1.Text);
doit:='умножить';
Edit1.Clear;
end;
Для кнопки деления:
procedure TForm1.BitBtn15Click(Sender: TObject);
begin
num1:=StrToInt(Edit1.Text);
doit:='разделить';
Edit1.Clear;
end;
В этих процедурах сначала запоминается число, введенное пользователем (num1), поскольку, если он выполняет какое-либо действие, то это означает, что первое число уже введено. Затем запоминается действие (doit), которое пользователь хочет выполнить над переменной num1. После этого текстовое поле очищается (Edit1.Clear), чтобы можно было ввести второе число.
Создайте обработчик события OnClick нажатия кнопки равно, выводящей результат:
procedure TForm1.BitBtn12Click(Sender: TObject);
begin
num2:=StrToInt(Edit1.Text);
if doit='плюс' then Edit1.Text:=IntToStr(num1+num2);
if doit='минус' then Edit1.Text:=IntToStr(num1-num2);
if doit='умножить' then Edit1.Text:=IntToStr(num1*num2);
if doit='разделить' then
if num2=0 then Edit1.Text:='Делить на 0 нельзя!!!'
else Edit1.Text:=IntToStr(num1 div num2);
num1:=0;
num2:=0;
doit:='';
end;
Пользователь нажимает кнопку = после того как уже ввел второе число, поэтому это число сохраняется в переменной num2. Затем проверяется, какое действие хотел выполнить пользователь. Результат операции заносится в текстовое поле (свойство Edit1.Text), после чего все переменные обнуляются для использования в последующих расчетах.
3. Компиляция и запуск программы:
Щелкните на кнопке Run (
)
или нажмите клавишу F9.
Запустится программа калькулятора.Введите два произвольных целых числа и проверьте правильность выполнения всех арифметических действий.
Программа калькулятора в действии показана на рис. 9. При попытке деления на 0 в текстовом поле появляется сообщение Делить на 0 нельзя!!!
Завершите работу программы, сохраните ее в папке Мои документы\Отчет ЛЗ-07\Задание 4\.
Самостоятельно преобразуйте данный калькулятор, работающий с целыми числами, в калькулятор, работающий с вещественными числами. Добавьте в форму еще одну кнопку, позволяющую вычислить квадратный корень из введенного числа. Сохраните проект в папке Мои документы\Отчет ЛЗ-07\Задание 4-Сам\
3. Создание генератора надежных паролей
Существует множество программ, способных методом перебора несложных, часто используемых паролей и ключей шифрования «взломать» практически все, что этими паролями или ключами защищается. Больших знаний для такого метода кражи паролей и ключей не требуется – достаточно в Интернете найти программу для перебора и словарь с паролями размером с десяток мегабайт. В этом случае перед защищающейся стороной возникает вопрос: «А как удостовериться, что в этом словаре нет моего пароля?».
Задание № 5. Разработка генератора надежных паролей
Разработайте программу, генерирующую надежные пароли, включающие буквы, цифры и специальные символы.
Технология работы
1. Разработка формы:
Запустите программу Delphi и создайте новый проект Application.
Присвойте свойству Caption формы значение Генератор паролей, свойству Height – значение 218, а свойству Width – значение 315.
Разместите на форме следующие компоненты с вкладки Standard:
Label
;четыре компонента CheckBox
;два компонента Edit
;три компонента Button
.
С
вкладки Samples
разместите
на форме
компонент SpinEdit
,
который используется для ввода чисел
вручную или с помощью кнопок
увеличения-уменьшения.
Присвойте свойства компонентам значения согласно следующей таблицы:
|
Компонент |
Свойство |
Значение |
Пояснение |
|
Label1
|
Caption |
Количество символов |
Надпись |
|
Left |
8 |
Отступ слева |
|
|
Top |
16 |
Отступ сверху |
|
|
CheckBox1
|
Caption |
Строчные буквы |
Надпись для флажка |
|
Checked |
True |
Установлен флажок |
|
|
Name |
small |
Флажок, указывающий на наличие в пароле строчных букв |
|
|
Left |
8 |
Отступ слева |
|
|
Top |
40 |
Отступ сверху |
|
|
Width |
117 |
Ширина |
|
|
CheckBox2
|
Caption |
Заглавные буквы |
Надпись для флажка |
|
Checked |
True |
Установлен флажок |
|
|
Name |
big |
Флажок, указывающий на наличие в пароле заглавных букв |
|
|
Left |
8 |
Отступ слева |
|
|
Top |
60 |
Отступ сверху |
|
|
Width |
117 |
Ширина |
|
|
CheckBox3
|
Caption |
Цифры |
Надпись для флажка |
|
Checked |
True |
Установлен флажок |
|
|
Name |
num |
Флажок, указывающий на наличие в пароле цифр |
|
|
Left |
8 |
Отступ слева |
|
|
Top |
80 |
Отступ сверху |
|
|
Width |
117 |
Ширина |
|
|
CheckBox4
|
Caption |
Специальные символы |
Надпись для флажка |
|
Checked |
True |
Установлен флажок |
|
|
Name |
special |
Флажок, указывающий на наличие в пароле специальных символов |
|
|
Left |
8 |
Отступ слева |
|
|
Top |
100 |
Отступ сверху |
|
|
Width |
145 |
Ширина |
|
|
Edit1
|
Name |
chars |
Новое имя компонента |
|
Left |
152 |
Отступ слева |
|
|
Top |
96 |
Отступ сверху |
|
|
Text |
:-)(+!<|>/?\&$[*]@%;`.,”~_ |
Текст в поле |
|
|
Width |
148 |
Ширина |
|
|
Edit2
|
Name |
pass |
Новое имя компонента. Предназначен для отображения пароля |
|
Left |
8 |
Отступ слева |
|
|
Top |
128 |
Отступ сверху |
|
|
Text |
Пустое поле |
||
|
Width |
292 |
Ширина |
|
|
Button1
|
Caption |
Создать |
Предназначена для начала процесса генерирования пароля |
|
Left |
8 |
Отступ слева |
|
|
Top |
152 |
Отступ сверху |
|
|
Width |
97 |
Ширина |
|
|
Button2
|
Caption |
Копировать |
Предназначена для копирования пароля в буфер обмена |
|
Left |
105 |
Отступ слева |
|
|
Top |
152 |
Отступ сверху |
|
|
Width |
97 |
Ширина |
|
|
Button3
|
Caption |
Очистить |
Предназначена для очистки буфера обмена и поля с паролем |
|
Left |
202 |
Отступ слева |
|
|
Top |
152 |
Отступ сверху |
|
|
Width |
97 |
Ширина |
|
|
SpinEdit1
|
MinValue |
1 |
Минимальное допустимое значение длины пароля |
|
MaxValue |
20 |
Максимальное допустимое значение длины пароля |
|
|
Name |
colvo |
Новое имя компонента |
|
|
Left |
136 |
Отступ слева |
|
|
Top |
8 |
Отступ сверху |
|
|
Width |
40 |
Ширина |
Г
отовая
форма программы должна иметь вид,
приведенный на рис. 9.
2. Разработка программного кода:
Перейдите в окно программного кода и объявите все переменные, которые будут использоваться:
var
Form1: TForm1;
s: array[1..100] of string; //Каждый элемент этого массива
//содержит 1 символ пароля
a,i,x: integer;
Полужирным цветом выделяется то, что вы должны ввести в программу!!!
Создайте обработчик события OnClick кнопки Создать. Для этого в форме выполните двойной щелчок мышью на кнопке Создать. В окне кода появится заготовка процедуры обработки события OnClick, в которой объявите метку ran и введите следующий код:
procedure TForm1.Button1Click(Sender: TObject);
label ran;
begin
Randomize;
pass.Text:='';
for i:=1 to colvo.Value do
begin
ran:
a:=random(3);
case a of
0: if num.Checked then s[i]:=IntToStr(random(10))
else goto ran;
1: if big.Checked or small.Checked
then
begin
x:=random(26)+65;
s[i]:=chr(x);
if small.Checked and (big.Checked=false)
then s[i]:=AnsiLowerCase(s[i]);
if small.Checked and big.Checked
then
begin
a:=random(2);
if a=1 then s[i]:=AnsiLowerCase(s[i]);
end;
end
else goto ran;
2:if special.Checked then
begin
a:=random(length(chars.Text))+1;
s[i]:=chars.Text[a];
end
else goto ran;
end;
pass.Text:=pass.Text+s[i];
end;
end;
Здесь каждый символ пароля получаем при помощи функции генерации случайных чисел random, и поэтому каждый следующий пароль абсолютно не похож на предыдущий. После того, как символ сгенерирован, проверяем, разрешен ли он для использования в пароле. Если его использование разрешено, то добавляем этот символ в пароль, в противном случае – генерируем новый символ.
Для работы с буфером обмена добавьте в раздел uses ссылку на модуль Clipbrd:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Spin, StdCtrls, Clipbrd;
Создайте обработчик события OnClick кнопки Копировать. Для этого в форме выполните двойной щелчок мышью на кнопке Копировать. В окне кода появится заготовка процедуры обработки события OnClick, в которой введите следующий код:
procedure TForm1.Button2Click(Sender: TObject);
begin
ClipBoard.Open;
ClipBoard.AsText:=pass.Text;
ClipBoard.Close
end;
Создайте обработчик события OnClick кнопки Очистить. Для этого в форме выполните двойной щелчок мышью на кнопке Очистить. В окне кода появится заготовка процедуры обработки события OnClick, в которой введите следующий код:
procedure TForm1.Button3Click(Sender: TObject);
begin
pass.Clear;
ClipBoard.Open;
ClipBoard.Clear;
ClipBoard.Close;
end;
3. Компиляция и запуск программы:
Щелкните на кнопке Run (
)
или нажмите клавишу F9.
Запустится программа генерирования
паролей. Программа генерирования
паролей в действии показана на рис. 10.Выберите количество символов в пароле. Поэкспериментируйте с разными флажками и проверьте работу всех кнопок.
Завершите работу программы, сохраните ее в папке Мои документы\Отчет ЛЗ-07\Задание 5\.


Выводы
Создание простейших приложений в Delphi связано с размещением на форме таких компонент как Label, Edit, Memo, Button и др. и изменением их свойств с помощью Инспектора Объектов.
Для определения каких-либо действий с компонентами, например, щелчок мышью на кнопке, требуется на вкладке События Инспектора Объектов активизировать нужное событие и в заготовку процедуры, отображаемой в Редакторе Кода, ввести необходимые команды.
Delphi позволяет создавать простые программы, ничего при этом не программируя. Для этого используются уже готовые компоненты, например, Календарь.
Программирование более сложных приложений связано с необходимостью установления определенных связей между компонентами, располагаемыми на форме.
Контрольные вопросы
Какими способами можно установить компонент на форму?
Как назначаются свойства установленным на форме компонентам?
Перечислите основные свойства компонентов Label и Button.
Какими способами можно выполнить программу?
Какие функции используются для преобразования целых (вещественных) чисел в строку и наоборот?
Какую функцию выполняют компоненты CheckBox в программе генерирования надежных паролей?