Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методическое пособие для самостоятельных работ.doc
Скачиваний:
21
Добавлен:
16.11.2019
Размер:
2.89 Mб
Скачать

1.2. Принципы визуального программирования

Поставим перед собой задачу создания простой работающей программы. При запуске нашей программы на экране появится окно, приведенное на рис. 1.2. В поля «Ввод 1» и «Ввод 2» можно ввести любой текст. При нажатии на кнопку «Перенести» в поле «Вывод» появится текст, полученный путем сцепления текстов полей для ввода. При нажатии на кнопку «Завершение работы» программа заканчивает свою работу.

Рис. 1.2. Окно простой программы

Как было сказано выше, при запуске Delphi автоматически создаются форма (Form1) и соответствующий ей программный модуль (Unit1). Дадим форме название «Моя первая программа». Для этого в инспекторе объектов изменим значение свойства “Caption”. Для получения заглавия в форме поступим следующим образом. В палитре компонент “Standard” имеется компонент “Label”, обозначенный буквой “А”. Щелкаем левой клавишей мыши на А, перенесем курсор мыши на нашу форму примерно на то место, где должно начинаться заглавие формы и, держа левую клавишу нажатой, передвигаем мышь направо и вниз на небольшое расстояние. Появится четырехугольник с надписью “Label1”. Изменим значение его свойства “Caption” на желаемый заголовок формы. Четырехугольник принимает требуемые для размещения заголовка размеры, однако он может не находиться в центре. Для его центрирования передвигаем курсор мыши на любую точку внутри его и нажмем на правую кнопку (в углах четырехугольника должны быть черные квадратики, если их нет, то сначала щелкните левой клавишей.) Появится локальное (pop-up menu) меню. Выберем пункт позиция (Alignment), выровнять, появится окно «Выравнивание» и в его левой половине с названием «по горизонтали» (Horizontal) выберем по центру (Center in window). В результате заглавие окажется в центре формы.

Приступаем к формированию названий полей ввода/вывода. Для этого необходимо перенести на форму три компоненты “Label” и дать им требуемые названия. Чтобы не повторять описанные выше действия три раза, держим при выборе из палитры нажатой клавишу “Shift”. После этого нарисуйте на форме три поля для будущих названий, они будут иметь названия по умолчанию Label2. . . Label4. После рисования трех указанных полей передвигайте курсор мыши на знак ã и делайте щелчок: это освобождает компоненту Label. Если этого не сделать, то при манипуляции мышью будут возникать все новые компоненты Label. Затем даем всем меткам оговоренные выше названия через свойство “Caption”. Выравниваем только что введенные поля. Для этого:

  • щелкните левой клавишей мыши за пределами трех введенных полей (ни на одном из них не должно быть черных квадратиков);

  • поставьте курсор мыши выше и левее верхней метки, держите левую клавишу нажатой и рисуйте прямоугольник (он будет показан пунктирной линией) вокруг всех меток, после завершения рисования прямоугольника в углах всех меток появятся серые квадратики: это означает, что их выделение выполнено, в противном случае начинайте этот пункт сначала;

  • поставьте курсор мыши на одной из выделенных меток и нажмите на правую клавишу: появится знакомое локальное меню, из него выберите пункт “Alignment”, и Вы получите возможность выравнивания (по горизонтали) по левым или правым границам; желательно самому поэкспериментировать с разными вариантами выравнивания и посмотреть их влияние;

  • для завершения выравнивания щелкните левой клавишей мыши в любом месте за пределами выделенных полей.

Для полей данных перенесем из палитры компонент на нашу форму три компоненты Edit, обозначенных на палитре через “ab”. Их перенос и выравнивание осуществляется аналогично меткам. Среди свойств компоненты Edit имеется ReadOnly, которое по умолчанию имеет значение False, т.е. это поле может быть использовано как для ввода, так и для вывода данных. Если дать этому свойству значение True, то оно будет в дальнейшем использоваться только для вывода данных; менять в нем значения невозможно. Измените значение этого свойства для поля вывода. Этим мы завершим формирование на форме пояснительного текста и полей для данных и приступаем к формированию управляющих компонент – кнопок. Для этого перенесем на форму две компоненты “Button”, обозначенных в палитре через “ОК”, поменяем их названия известным нам способом. После этого обратим снова внимание на инспектор объектов. Прямо под словами инспектор объектов (Object Inspector) приведено название того объекта, чьи свойства показаны, справа имеется знак . Известным способом можно вызвать выпадающий список имеющихся объектов (Form1, Label1, . . .) и выбрать объект, свойства которого необходимо видеть и/или изменить. Немного поэкспериментируйте со свойствами Font и Color: выбирайте для них разные значения и следите за изменениями на форме.

Поставим задачу реализации кнопок «Перенести» и «Завершение работы». Начнем с последней. Делаем двойной щелчок на ней левой клавишей мыши. В результате откроется «заготовка» процедуры, исполняемая часть которой будет в дальнейшем выполняться при нажатии этой кнопки. Реализация кнопки «Завершение работы» предельно проста и состоит из одного слова:

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

В Windows закрытие главного окна программы означает ее завершение. Для реализации кнопки «Перенести» поступим аналогично и запишем напечатанный жирным шрифтом оператор:

procedure TForm1.Button1Click(Sender: TObject);

begin

Edit3.Text:=Edit1.Text+’ ‘+Edit2.Text;

end;

Пояснения:

  • Edit1, Edit2, Edit3 – имена полей редактирования;

  • Text – свойство объекта Edit, задающее текст, который будет показан на экране.

В этом примере видим еще одну возможность Delphi: значения свойств объектов могут быть даны и/или изменены программным путем, как в последнем примере.

Часто необходимо задавать начальные значения переменным или выполнять другие инициирующие действия при запуске программы. В Delphi это делается путем задания реакции на событие создания главного окна. Переключим инспектор объектов на объект Form1, сам инспектор переключим на события (Events, путем щелканья мышью на этом слове) и найдем событие onCreate. Делаем на нем двойной щелчок и дополним открывшуюся процедуру:

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.Text:=‘’;

Edit2.Text:=‘’;

end;

После этого наше первое приложение готово и можно его запустить через меню, нажатием функциональной клавиши F9 или путем щелканья на зеленом треугольнике. Для остановки приложения:

  • нажмите на кнопку “Конец”;

  • выберите нужный пункт из меню Delphi;

  • щелкните на значке , чтобы закрыть окно и тем самым остановить приложение;

  • активизируйте системное меню WINDOWS щелчком мыши в верхнем левом углу, выберите пункт “Закрыть” или нажмите на комбинацию клавиш Alt+F4 (комбинация клавиш действует и без активизации системного меню).

В отличие от традиционных программ программа на Delphi может быть остановлена (как описано выше) или переведена в состояние паузы путем выбора подпункта Pause пункта меню Run или щелканьем на «горячей клавише» (находится рядом с зеленым треугольником и активизируется при запуске программы). Разница между остановкой программы и состоянием паузы заключается в следующем:

  • при остановке программы все переменные теряют свои значения и при новом запуске выполнение начнется сначала;

  • в состоянии паузы переменные сохраняют свои значения и при запуске программа начнет свою работу как бы с точки останова.

Таким образом, завершим создание простой работающей программы в Delphi. Поставим перед собой задачу ее изменения, чтобы она могла работать с числовыми данными (значение свойства Text объекта Edit имеет тип String), точнее, чтобы при нажатии на кнопку «Перенести» в поле «Вывод» появилась сумма чисел, набранных в полях ввода. Для этого требуется вставить в программу реализации кнопки «Перенести» процедуры или функции преобразования типов. Две возможных реализации приведены ниже:

procedure TForm1.Button1Click(Sender: TObject);

Var

k1,k2,result :integer;

begin

k1:=strtoint(Edit1.Text);

k2:=strtoint(Edit2.Text);

result:=k1+k2;

Edit3.Text:=inttostr(result);

end;

Приведенные функции Strtoint() Inttostr() преобразуют соответственно значение строкового типа в целочисленные и, наоборот, значение целочисленного типа в строковый.

procedure TForm1.Button1Click(Sender: TObject);

Var

k1,k2,result :integer;

s1 :string;

begin