Ваш город: Не указано

Пишем калькулятор на Delphi 7 (часть1)

В этой статье мы подробно рассмотрим создание простого стандартного калькулятора с помощью среды разработки Borland Delphi 7. Основные объекты калькулятора будем создавать программным способом.

Итак, меняем свойства главного окна (в окошке слева Object Inspector) Form1, в соответствии со следующей таблицей (остальные поля не трогаем):

Свойства Form1 Значение
 Caption  Калькулятор
 AutoScroll  false
 BorderIcons  [biSystemMenu,biMinimize]
 BorderStyle  bsSingle
 Position  poScreenCenter
 Height  292
 Width  286

Добавим на форму объект MainMenu (вверху или справа на панеле).

Delphi MainMenu

Кликнем на него два раза мышкой и заполним следующим образом:

Delphi 7 Создание главного меню для калькулятора. Вкладка "Файл" Delphi 7 Создание главного меню для калькулятора. Вкладка "Справка"

Чтобы подчеркнуть букву в названии определенного пункта меню, необходимо перед ней поставить знак &. (Например, "&Справка").

Далее переходим на создание объектов при помощи программного кода (жмем F12).

Попробуем сначала добавить текстовое поле, где будут выводиться все цифры и вычисления калькулятора (все, что записано ниже после слова "Например" - пишем в Delphi).

Для создания объекта программным способом, выполним следующие действия:

1.   В uses пропишем модуль объектов.

Например: StdCtrls

2.   Перед строкой implementation и после ключевого слова var создадим новую переменную, а в качестве типа переменной укажем класс объекта (класс объекта всегда начинается с буквы "Т" - вероятно, произошло от названия программы Turbo Pascal).

Например:

Edit: TMemo;
Button: array[0..22] of TButton;

3.   В событии (например, при создании формы) сначала создаем новый объект (Edit:=TMemo.Create(form1);), затем отображаем его на Form1 (Edit.Parent:=form1;). А дальше, как и для обычного объекта, указываем его свойства (координаты, размеры и т.п.).

Например:

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit:=TMemo.Create(form1);
Edit.Parent:=form1;
Edit.Text:='0';
Edit.Width:=250;
Edit.Height:=21;
Edit.Left:=10;
Edit.Top:=20;
Edit.Alignment:=taRightJustify;
end;

Свойство Alignment выравнивает текст в крайнее правое положение.

Таким же образом создадим на форме кнопки. Но создавать их не будем по-отдельности. Создадим массив кнопок, который и выведем в определенном порядке на форму. У нас будет несколько групп кнопок (для ввода цифр и для вычислений). Так как у нас используется массив, соответственно каждый объект необходимо смещать таким образом, чтобы не получилось так, что один объект лежит на другом. Так не должно быть! Поэтому обязательно используйте свойства Top и Left для расположения объекта на форме Form1 в определенных координатах. Чтобы проще было программировать, мы создали массив кнопок от 0 до 9 с соответствующими им кнопками.

Должно получиться что-то вроде этого:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Edit: TMemo;
Button: array[0..22] of TButton;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i,left,width,top:integer;
begin
left:=10;
width:=40;
// Создаем объект поля ввода
Edit:=TMemo.Create(form1);
Edit.Parent:=form1;
Edit.Text:='0';
Edit.Width:=244;
Edit.Height:=21;
Edit.Left:=left;
Edit.Top:=20;
Edit.Alignment:=taRightJustify;
// Создаем объекты кнопок для стандартного калькулятора
for i:=0 to 22 do
begin
Button[i]:=TButton.Create(form1);
Button[i].Parent:=form1;
case i of
10..12:
begin
if i=10 then
left:=10;
Button[i].Left:=left;
Button[i].Top:=51;
Button[i].Width:=75;
left:=left+83;
end;
1..9:
begin
if i=1 then
begin
left:=10;
top:=176;
end;
left:=left+width+10;
if i mod 3 =1 then
begin
left:=10;
top:=top-30;
end;
Button[i].Width:=width;
Button[i].Left:=left;
Button[i].Top:=top;
Button[i].Caption:=inttostr(i);
end;
13..20:
begin
if i=13 then
begin
left:=button[9].Left+button[9].Width+10;
top:=206;
width:=40;
end;
left:=left+width+10;
if i mod 2 =1 then
begin
left:=button[9].Left+button[9].Width+10;
top:=top-30;
end;
Button[i].Width:=width;
Button[i].Left:=left;
Button[i].Top:=top;
end;
0:
begin
Button[0].Width:=width;
Button[0].Left:=10;
Button[0].Top:=176;
Button[i].Caption:=inttostr(i);
end;
21,22:
begin
left:=left+width+10;
if i mod 2 =1 then
left:=button[0].Left+button[9].Width+10;
Button[i].Width:=width;
Button[i].Left:=left;
Button[i].Top:=button[13].Top;
end;
end;
end;
// Даем названия каждой кнопке
button[10].Caption:='Backspace';
button[11].Caption:='CE';
button[12].Caption:='C';
button[13].Caption:='+';
button[14].Caption:='=';
button[15].Caption:='-';
button[16].Caption:='1/x';
button[17].Caption:='*';
button[18].Caption:='%';
button[19].Caption:='/';
button[20].Caption:='sqrt';
button[21].Caption:='+/-';
button[22].Caption:=',';
end;

end.

Затем, по-желанию, добавим на форму объект StatusBar (с вкладки Win32). В свойстве Panels откроем новое окно, создадим новую панель и назовем ее "Copyright @ 2013 FORTRAN NEW Company" (можно назвать по-своему).


<<Предыдущая статья                                     Следующая статья >>

Опубликовано: 2018-01-02 14:50:28