В этой статье мы подробно рассмотрим создание простого стандартного калькулятора с помощью среды разработки Borland Delphi 7. Основные объекты калькулятора будем создавать программным способом.
Итак, меняем свойства главного окна (в окошке слева Object Inspector) Form1, в соответствии со следующей таблицей (остальные поля не трогаем):
Свойства Form1 | Значение |
Caption | Калькулятор |
AutoScroll | false |
BorderIcons | [biSystemMenu, biMinimize] |
BorderStyle | bsSingle |
Position | poScreenCenter |
Height | 292 |
Width | 286 |
Добавим на форму объект MainMenu (вверху или справа на панеле).
Кликнем на него два раза мышкой и заполним следующим образом:
Чтобы подчеркнуть букву в названии определенного пункта меню, необходимо перед ней поставить знак &. (Например, "&Справка").
Далее переходим на создание объектов при помощи программного кода (жмем 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" (можно назвать по-своему).
<<Предыдущая статья Следующая статья >>
Опубликовано: 2013-02-18 23:51:43