4825

Создание первой программы в языке Turbo Pascal

Лекция

Информатика, кибернетика и программирование

Создание первой программы. Цель: Показать студентам управление программой при помощи меню. Задачи: Воспитательная: повторение уже изученного языка программирования TurboPascal. Учебная: научить создавать программы. Развивающая: развитие внимат...

Русский

2012-11-27

94.5 KB

2 чел.

Создание первой программы.

Цель:

Показать студентам управление программой при помощи меню.

Задачи:

Воспитательная: повторение уже изученного языка программирования Turbo Pascal.

Учебная: научить создавать программы.

Развивающая: развитие внимательности.

План занятия.

  1.  Организационный момент.
  2.  Изучение нового материала.
  3.  Контрольные вопросы.
  4.  Резюме.
  5.  Домашнее задание.

Изучение нового материала.

   Продолжим создание программ на основе уже знакомой программы. Для этого используем не визуальные компоненты TMainMenu и TPopupMenu. Измененная форма с этими компонентами показана на рисунке.

   Как видно из рисунка, на форме добавились еще два компонента. Причем эти компоненты можно располагать где угодно, так как они при компиляции и запуске программы будут не видны.

   Компонент TMainMenu предназначен для добавления к программе главного меню, без которого не обходится практически ни одно из приложений. Чтобы добавить к программе меню, надо выбрать на вкладке Standard компонент TMainMenu. Меню создается с помощью специального редактора. Редактор меню вызывается двойным щелчком на объекте MainMenu1. Первоначально меню пустое. В Инспекторе объектов надо открыть категорию Localizable (настраиваемые) и в свойстве Caption (заголовок) ввести название первого пункта, например &Файл и нажать кнопку Enter. Редактор меню переключится обратно в проектируемое меню, где появится первый пункт. Теперь опять нажать на клавишу Enter, и система переключится к заголовку Caption для нового пункта. В него вводится очередное название (&Вычислить)и нажать кнопку Enter. То же самое сделаем для кнопки Завершить. Когда меню подготовлено, редактор можно закрыть.  

   Чтобы выполнить вычисление, выберем пункт меню Вычислить. При щелчке на нем в Проектировщике форм будет создан соответствующий обработчик. Повторно писать ранее созданный код (метод Button1Click) не имеет смысла. Проще и правильнее вызвать метод Button1Click напрямую, передав ему параметр Sender.

   Обработчик события выглядит следующим образом.

   procedure TForm1.N2Click(Sender: TObject);

   begin

       Button1Click(Sender)

   end;

   То же самое сделаем и для кнопки Завершить.

   procedure TForm1.N3Click(Sender: TObject);

   begin

       Button2Click(Sender)

   end;

   Теперь создадим обработчик щелчка мыши на объекте. Такая возможность используется, когда важно просто среагировать на щелчок, не анализируя координаты указателя. Для этого обрабатывают событие OnClick, которое  чаще всего используют в таких объектах, как кнопка или переключатель, где знание точных координат указателя мыши не обязательно. Такой подход не всегда устраивает разработчика, поэтому в системе имеются еще два события: OnMouseDown (При нажатии кнопки мыши) и OnMouseUp (При отпускании кнопки мыши). Они содержат подробную информацию о параметрах щелчка: координаты указателя в рамках клиентской области объекта, на котором выполнен щелчок, тип щелчка (одинарный или двойной), какая кнопка мыши была нажата/отпущена и состояние системных клавиш SHIFT, ALT, CTRL.

   Контекстное меню, вызываемое в сделанном приложении по щелчку правой клавишей мыши, является удобной и стандартной возможностью программ. Компонент TPopupMenu (всплывающее меню) предназначен для создания контекстных меню. После того как компонент TPopupMenu размещен на форме, структура меню формируется таким же способом, как и основное меню. Единственное отличие состоит в том, что в контекстном меню не может быть нескольких раздело верхнего уровня, так как все пункты располагаются в одном вертикальном столбце.

   Дважды щелкнув на пункта Завершить, в обработчик события можно скопировать раннее созданный оператор завершения работы или ссылку на него.

   procedure TForm1.N5Click(Sender: TObject);

   begin

       Button2Click(Sender)

   end;

   То же самое сделаем для пункта Вычислить

   procedure TForm1.N4Click(Sender: TObject);

   begin

       Button1Click(Sender)

   end;

   Теперь осталось вызвать созданное меню из программы. Чтобы добавить в программу обработчик такого события, надо в Проектировщике форм выделить главную форму и в Инспекторе объектов на вкладке Events дважды щелкнуть в строке с надписью OnMouseUp. В теле данной процедуры необходимо активизировать контекстное меню PopupMenu1. Это осуществляется с помощью метода Popup() с двумя параметрами – координатами верхнего левого угла меню. Только указываются эти координаты в экранной системе отсчета, а не в границах клиентской части программы. Чтобы указать корректное значение координат, надо добавить к ним смещение, определяющее начало клиентской части формы. Пересчитать экранные координаты точки щелчка в координаты клиентской области можно с помощью метода GetClientOrigin. Эта функция обращается к стандартным функциям Windows и возвращает корректное значение смещения. Результирующее значение имеет тип TPoint (Координатная точка), представляющий собой запись из двух элементов; X и Y.

   procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

                     Shift: TShiftState; X, Y: Integer);

   var P:TPoint;

   begin

       P:=GetClientOrigin;

       IF Button = mbRight then PopupMenu1.Popup(P.X+X,P/Y+Y);

   end;

   Тип TMouseButton является перечислимым типом и содержит значения mbLeft, mbRight, mbMiddle (признаки использования левой, правой и средней кнопок мыши). Тип TShiftState представляет собой множество: так как можно выполнить, например, двойной щелчок, одновременно удерживая нажатыми клавиши ALT и SHIFT, необходимо проверять комбинации допустимых значений.

   Полный листинг программы приведен

unit vrun1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, Menus;

type

 TForm1 = class(TForm)

   Edit1: TEdit;

   Edit2: TEdit;

   Label1: TLabel;

   Label2: TLabel;

   Label3: TLabel;

   Label4: TLabel;

   Button1: TButton;

   Button2: TButton;

   MainMenu1: TMainMenu;

   PopupMenu1: TPopupMenu;

   N1: TMenuItem;

   N2: TMenuItem;

   N3: TMenuItem;

   N4: TMenuItem;

   N5: TMenuItem;

   procedure Button1Click(Sender: TObject);

   procedure Button2Click(Sender: TObject);

   procedure N2Click(Sender: TObject);

   procedure N3Click(Sender: TObject);

   procedure N5Click(Sender: TObject);

   procedure N4Click(Sender: TObject);

   procedure FormMouseUp(Sender: TObject; Button: TMouseButton;

     Shift: TShiftState; X, Y: Integer);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

   dist : integer;

   t:     real;    

   min : integer;  

   sek : integer;   

   v: real;        

begin

   dist := StrToInt(Edit1.Text);

   t := StrToFloat(Edit2.Text);

   min := Trunc(t);  

   sek := Trunc(t*100) mod 100;

   v := (dist/1000) / ((min*60 + sek)/3600);

   label4.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13 +

                                'Время: ' + IntToStr(min) + ' мин ' +

                                IntToStr(sek) + ' сек ' + #13 +

                               'Скорость: ' + FloatToStrF(v,ffFixed,4,2) + ' км/ч';

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

       Form1.Close;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

Button1Click(Sender)

end;

procedure TForm1.N3Click(Sender: TObject);

begin

Button2Click(Sender)

end;

procedure TForm1.N5Click(Sender: TObject);

begin

Button2Click(Sender)

end;

procedure TForm1.N4Click(Sender: TObject);

begin

Button1Click(Sender)

end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;

                 Shift: TShiftState; X, Y: Integer);

var P:TPoint;

begin

P:=GetClientOrigin;

IF Button = mbRight then PopupMenu1.Popup(P.X+X,P/Y+Y);

end;

end.

Контрольные вопросы

  1.  Для чего предназначен компонент TMainMenu? Как создается данное меню?
  2.  Для чего предназначен компонент TPopupMenu? Как создается данное меню?
  3.  Вызов контекстного меню. Метод вызова.

Резюме

  1.  Компонент TMainMenu предназначен для добавления к программе главного меню, без которого не обходится практически ни одно из приложений. Меню создается с помощью специального редактора
  2.  Компонент TPopupMenu (всплывающее меню) предназначен для создания контекстных меню. После того как компонент TPopupMenu размещен на форме, структура меню формируется таким же способом, как и основное меню.
  3.  Теперь осталось вызвать созданное меню из программы. Чтобы добавить в программу обработчик такого события, надо в Проектировщике форм выделить главную форму и в Инспекторе объектов на вкладке Events дважды щелкнуть в строке с надписью OnMouseUp. В теле данной процедуры необходимо активизировать контекстное меню PopupMenu1. Это осуществляется с помощью метода Popup() с двумя параметрами – координатами верхнего левого угла меню.

Домашнее задание

   Написать собственную программу.


 

А также другие работы, которые могут Вас заинтересовать

59712. Літературний вечір на тему: «Мово рідна, слово рідне...» 81.5 KB
  Багато є таємниць у світі і одна з найбільших це мова. Найбільше і найдорожче добро в кожного народу його мова ота жива схованка людського духу його багата скарбниця в яку народ складає і своє давнє життя і свої сподіванки розум досвід почування.
59713. Сценарій уроку: Леся Українка як особистість 148.5 KB
  Леся Українка як особистість. Айвазовський Девятий вал Рафаель Сікстинська мадонна Леся Українка. Запишіть до зошитів тему Леся Українка як особистість накресліть схему зазначте дати: 1871-1913 та епіграф уроку: Є народження й смерть два стовпи на межі.
59714. Підготовка до написання твору на морально-етичну тему «Шануй батька свого і матір...» 55.5 KB
  Учитель мас повною мірою використати ці величезні можливості мистецтва слова для розвитку звязного мовлення учнів на уроці літератури. Учитель. Учитель. Про яке з етичних почуттів совість обовязок честь гуманність милосердя гідність відповідальність тощо дав нам уявлення автор Учитель.
59715. Правила вживання м’якого знака (урок рідної мови в 10 класі) 44.5 KB
  Мета: повторити і систематизувати знання про правила вживання мякого знака; вдосконалювати правописні вміння учнів розвивати усне і писемне мовлення мислення дітей; виховувати життєву необхідність подальшого вдосконалення і розширення знань з української граматики...
59716. Працюємо над нормами керування на комунікативній основі 300 KB
  За такого підходу оволодіння мовною нормою відбувається на комунікативній основі. Слово вітати перехідне адже означає дію обовязково скеровану на обєкт: вітати кого матір учнів друга.
59717. Складання листа. Оформлення конверта (урок розвитку зв’язного мовлення в 5 класі) 220.5 KB
  Мета: ознайомити учнів з ознаками офіційноділового стилю сферами його вживання правилами написання листів; формувати вміння та навички правильно визначати зміст і композицію листа добирати потрібні слова та словосполучення правильно писати адресу на конверті...
59718. на тему: Структура уроку української мови проблема структури уроку вимагає переосмислення Основною мето. 87.5 KB
  Сказане насамперед стосується таких модулів як принципи і методи навчання урок зокрема структурування уроку. Організація такого процесу значною мірою залежить від структурування уроку.
59719. Тарас Шевченко — видатний художник. Цінність його живописної спадщини (урок української літератури у 9 класі) 62.5 KB
  Обладнання: портрет Тараса Шевченка репродукції Шевченкових картин таблиці слівтермінів і дат визначних подій в житті поета малюнки учнів. Шевченка працювали над розкриттям ідейного змісту його поезій вивчали напамять його твори.