Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 19:14   #1
Alsazius
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 13
Вопрос [Delphi] Доделать калькулятор

Помогите с калькулятором. Не получается реализовать следующее:

1) Чтобы при вводе, на индикаторе калькулятора оставались цифры и знаки (2+2=4);
2) Нужно сделать, чтобы нельзя было ввести запятую первым знаком (,2+2=4);
3) Ввести ограничение на ввод букв и не нужных символов в индикатор калькулятора.

Спасибо!

Код:
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Menus;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Edit1: TEdit;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
    procedure MenuItem2Click(Sender: TObject);
    procedure MenuItem5Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  x,y,z: Real;
  Sim: Char;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
 
end;
 
procedure TForm1.MenuItem2Click(Sender: TObject);
begin
 
end;
 
procedure TForm1.MenuItem5Click(Sender: TObject);
begin
  ShowMessage ('by Alsazius');
end;
 
procedure TForm1.Button17Click(Sender: TObject);
begin
  Button11.Enabled:=True;
  x:= 0;
  y:= 0;
  z:= 0;
  Sim:= '0';
  Edit1.Clear;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '1';
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '2';
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '3';
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '4';
end;
 
procedure TForm1.Button5Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '5';
end;
 
procedure TForm1.Button6Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '6';
end;
 
procedure TForm1.Button7Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '7';
end;
 
procedure TForm1.Button8Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '8';
end;
 
procedure TForm1.Button9Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '9';
end;
 
procedure TForm1.Button16Click(Sender: TObject);
begin
  Button11.Enabled:=True;
  y:= StrToFloat(Edit1.Text);
  case sim of
  '+': z:=x+y;
  '-': z:=x-y;
  '*': z:=x*y;
  '/': z:=x/y;
  end;
  Edit1.Text:= FloatToStr(z);
end;
 
procedure TForm1.Button10Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + '0';
end;
 
procedure TForm1.Button11Click(Sender: TObject);
begin
  Edit1.Text:= Edit1.Text + ',';
  Button11.Enabled:=False;
end;
 
procedure TForm1.Button12Click(Sender: TObject);
begin
  Button11.Enabled:=True;
  x:= StrToFloat(Edit1.Text);
  Sim:= '/';
  Edit1.Text:= '';
end;
 
procedure TForm1.Button13Click(Sender: TObject);
begin
  Button11.Enabled:=True;
  x:= StrToFloat(Edit1.Text);
  Sim:=  '*';
  Edit1.Text:= '';
end;
 
procedure TForm1.Button14Click(Sender: TObject);
begin
  Button11.Enabled:=True;
  x:= StrToFloat(Edit1.Text);
  Sim:= '-';
  Edit1.Text:= '';
end;
 
procedure TForm1.Button15Click(Sender: TObject);
begin
  Button11.Enabled:=True;
  x:= StrToFloat(Edit1.Text);
  Sim:= '+';
  Edit1.Text:= '';
end;
 
end.
Исходники на Lazarus.
Вложения
Тип файла: rar Калькулятор.rar (309.3 Кб, 26 просмотров)

Последний раз редактировалось Alsazius; 15.12.2012 в 23:52.
Alsazius вне форума Ответить с цитированием
Старый 15.12.2012, 22:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

думаю, что если бы запаковали исходники проекта в архив и выложили данный архив на форум - шансов получить помощь было бы намного больше.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.12.2012, 22:27   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Совет для сокращения кода:
Код:
procedure TForm1.ButtonClick(Sender: TObject);
begin
  edit1.Text := edit1.text + (sender as tbutton).Caption;
end;
У Вас же кнопки имеют цифры-подписи, вот и назначьте им одинаковый обработчик.
(вместо 40 строчек кода четыре)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.12.2012, 23:24   #4
Alsazius
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 13
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Совет для сокращения кода:
Код:
procedure TForm1.ButtonClick(Sender: TObject);
begin
  edit1.Text := edit1.text + (sender as tbutton).Caption;
end;
У Вас же кнопки имеют цифры-подписи, вот и назначьте им одинаковый обработчик.
(вместо 40 строчек кода четыре)
Можно пожалуйста подробнее.. Так как я новичок, то ничего не понял =(

Последний раз редактировалось Alsazius; 15.12.2012 в 23:40.
Alsazius вне форума Ответить с цитированием
Старый 15.12.2012, 23:51   #5
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию

Используй свойство кнопки Tag, в него введи циферки от 0 до 9 и используй его вместе с предложенным выше примером.

1) Чтобы при вводе, на индикаторе калькулятора оставались цифры и знаки (2+2=4);

Сохраняй все в строку. Потом проходить по ней Pos.

2) Нужно сделать, чтобы нельзя было ввести запятую первым знаком (,2+2=4);

Проверку сделать. Кстати, если первой ввести запятую число станет не 2 , а 0,2. Может второго пункта и не нужно? Если сделать 3-й пункт, то второй и не нужен, если числа целые.

3) Ввести ограничение на ввод букв и не нужных символов в индикатор калькулятора.

Маскедит можешь попробовать.

Все что нужно тебе подсказали. Подумай и сделай. Если будет туго - пиши в личку.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты

Последний раз редактировалось apromix; 15.12.2012 в 23:58.
apromix вне форума Ответить с цитированием
Старый 15.12.2012, 23:57   #6
Alsazius
Пользователь
 
Регистрация: 10.12.2012
Сообщений: 13
По умолчанию

Извините, можно наглядно, на примере.
Alsazius вне форума Ответить с цитированием
Старый 16.12.2012, 00:01   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Во-первых, используйте кнопочку "Правка".
Во-вторых, вот (см вложение) изменил то, о чем писал выше.
Sender: TObject - объект, который вызвал данный обработчик. Т.к. мы знаем, что это кнопка, то указываем это явно (sender as tbutton) и обращаемся к свойству Caption (у каждой кнопки в Caption то, что мы видим на экране). Эта модификация СУЩЕСТВЕННО сокращает код, т.к. он пока достаточно маленький.
Вложения
Тип файла: zip Калькулятор.zip (472.2 Кб, 35 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программист Delphi который поможет доделать проект на Delphi XE3 BukTop2009 Фриланс 3 26.10.2012 23:51
График, доделать delphi --Sashok-- Помощь студентам 11 19.04.2012 20:53
Доделать программку на delphi! kitty19 Фриланс 7 16.06.2011 16:19
Помогите доделать Калькулятор Ivanich Помощь студентам 12 18.12.2007 06:26