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() с двумя параметрами – координатами верхнего левого угла меню.

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

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


 

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

80623. Прямой, обратный счет. Плоские геометрические фигуры 50.5 KB
  Дети берутся за руки и становятся в круг. А теперь поделитесь хорошим настроением со своими друзьями погладьте друг другу ладошки и пожмите руки дети выполняют действие. Дети рассматривают 6 картинок первые буквы слов образуют слово ракета Какое слово получилось...
80624. Зв’язок слів у реченні між собою за змістом 82 KB
  Мета. Вчити учнів зв’язувати слова у реченні, удосконалювати вміння встановлювати межі речень; розвивати навички написання слів у реченні, формувати орфографічну увагу, виховувати уважне ставлення до природи Обладнання.
80625. Симетричні форми. Симетрія у природі. Послідовність дій під час виготовлення простих симетричних форм із паперу. Практична робота: вирізання деталей виробів симетричної форми; створення аплікацій із вирізаних простих симетричних форм «Грибочок» 30.5 KB
  Мета. Вчити дітей виготовляти предметні аплікації, ознайомити із способом симетричного вирізування. Розвивати просторове уявлення, дрібну моторику. Виховувати емоційне ставлення до результатів своєї праці, інтерес до секретів природи. Обладнання: зображення грибів, кольоровий папір, картон, клей, ножиці, шаблони.
80626. Письмо великої букви Ф 34.5 KB
  Мета: навчити учнів писати велику букву Ф окремоі в словах; розвивати вміння аалізувати, зіставляти, узагальнювати; продовжувати ознайомлювати учнів зі скоромовками; виховувати інтерес до вивченння української мови, Бережливе ставлення до природи.
80627. Здравствуй, гостья Зима! 33.5 KB
  Выпал пушистый снег. На дворах и домах Снег лежит полотном И от солнца блестит Разноцветным огнем. Как в третьей строфе поэт называет снег С чем он его сравнивает Здесь художник использует такое средство художественной выразительности как сравнение когда один объект сравнивается с другим...
80628. Поняття про мову. Українська мова – державна мова України 49.5 KB
  Мета: Розширити уявлення учнів про мову як найважливіший скарб українського народу, про існування різних мов; вчити спостерігати за звучанням, написанням і значенням слів у споріднених мовах. Розвивати усне мовлення учнів, каліграфічні навички письма, поширювати словниковий запас учнів.
80629. Квіти. Музика П.І. Чайковського «Вальс квітів» 46.5 KB
  Удосконалювати техніку читання прозових творів насичених діалогами; продовжувати навчати учнів сприймати на слух, вчити голосом, інтонацією передавати настрій дійових осіб; визначати головного герою, спостерігати за його вчинками. Розширювати коло морально-етичних понять про добро, людяність, красу.
80630. Андрій М’ястківський. Казка про яблуню 89.5 KB
  Мета. Удосконалювати навички усвідомленого, виразного читання художніх творів; формувати вміння знаходити за допомогою вибіркового читання уривки тексту, що характеризують дійових осіб; виховувати працелюбність, бажання вивчати і допомагати природі.
80631. Гори України. Карпати. Рослини і тварини Карпат 49 KB
  Продовжити формувати поняття гори розкрити залежність природи гір від їхньої висоти; ознайомити учнів з характерними особливостями Карпатських гір географічним положенням кліматом рослинним і тваринним світом корисними копалинам; розвивати спостережливість...