Inlämningsuppgift 1
Du skall programmera en räknare med följande utseende. Till din hjälp har du källkoden nedan.
Komponenterna du skall använda är:
2 st. TEdit, 2 st. TLabel, 1 st. TPanel, 8 st. TBitBtn
Hur räknaren skall fungera framgår av exemplet som finns på W:\DTR1207\Inlamn1
Spara all kod i mappen W:\DTR1207\(ditt namn)\T07\Inlämn1
Källkod:
unit Unit1; {unit1.pas}
{$mode objfpc}{$H+}
interface uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics,Dialogs, StdCtrls, Buttons, ExtCtrls;
type
{ TfrmnnCalc }
TfrmnnCalc = class(TForm) edNum1 : TEdit;
edNum2 : TEdit;
lbOperator : TLabel;
Label2 : TLabel;
plResult : TPanel;
btnAdd : TBitBtn;
btnClear : TBitBtn;
btnDIV2 : TBitBtn;
btnMOD : TBitBtn;
btnAbout : TBitBtn;
btnSubtr : TBitBtn;
btnMult : TBitBtn;
btnDiv : TBitBtn;
procedure btnAboutClick(Sender: TObject);
procedure btnAddClick(Sender: TObject);
procedure btnClearClick(Sender: TObject);
procedure btnDIV2Click(Sender: TObject);
procedure btnDivClick(Sender: TObject);
procedure btnMODClick(Sender: TObject);
procedure btnMultClick(Sender: TObject);
procedure btnSubtrClick(Sender: TObject);
procedure edNum1KeyPress(Sender: TObject; var Key: char);
procedure edNum2KeyPress(Sender: TObject; var Key: char);
private
{ private declarations } public
{ public declarations } end;
var
frmnnCalc: TfrmnnCalc;
implementation { TfrmnnCalc }
procedure TfrmnnCalc.btnAboutClick(Sender: TObject);
begin
ShowMessage('djCalc' + #13#10 + 'Dennis Jonsson' + #13#10 + '2010-12-23');
end;
procedure TfrmnnCalc.btnAddClick(Sender: TObject);
var
Num1,Num2,Result: Integer;
begin try
Num1 := StrToInt(edNum1.Text);
Num2 := StrToInt(edNum2.Text);
Result := Num1 + Num2;
plResult.Caption := IntToStr(Result);
lbOperator.Caption := '+';
except
ShowMessage('Felaktig inmatning');
end;
end;
procedure TfrmnnCalc.btnClearClick(Sender: TObject);
begin
edNum1.Text := SysUtils.EmptyStr;
edNum2.Text := SysUtils.EmptyStr;
plResult.Caption := SysUtils.EmptyStr;
end;
procedure TfrmnnCalc.btnDIV2Click(Sender: TObject);
var
Num1,Num2,Result: Integer;
begin try
Num1 := StrToInt(edNum1.Text);
Num2 := StrToInt(edNum2.Text);
Result := Num1 DIV Num2;
plResult.Caption := IntToStr(Result);
lbOperator.Caption := 'DIV';
except
ShowMessage('Felaktig inmatning');
end;
end;
Byt ut ’dj’mot dina egna initialer och ändra namn och datum.
procedure TfrmnnCalc.btnDivClick(Sender: TObject);
var
Num1,Num2: Integer;
Result: Double;
begin try
Num1 := StrToInt(edNum1.Text);
Num2 := StrToInt(edNum2.Text);
Result := (Num1/Num2);
plResult.Caption := FloatToStrF(Result, ffFixed, 8, 4);
lbOperator.Caption := '/';
except
ShowMessage('Felaktig inmatning');
end;
end;
procedure TfrmnnCalc.btnMODClick(Sender: TObject);
var
Num1,Num2,Result: Integer;
begin try
Num1 := StrToInt(edNum1.Text);
Num2 := StrToInt(edNum2.Text);
Result := Num1 MOD Num2;
plResult.Caption := IntToStr(Result);
lbOperator.Caption := 'MOD';
except
ShowMessage('Felaktig inmatning');
end;
end;
procedure TfrmnnCalc.btnMultClick(Sender: TObject);
var
Num1,Num2,Result: Integer;
begin try
Num1 := StrToInt(edNum1.Text);
Num2 := StrToInt(edNum2.Text);
Result := Num1 * Num2;
plResult.Caption := IntToStr(Result);
lbOperator.Caption := '×';
except
ShowMessage('Felaktig inmatning');
end;
end;
procedure TfrmnnCalc.btnSubtrClick(Sender: TObject);
var
Num1,Num2,Result: Integer;
begin try
Num1 := StrToInt(edNum1.Text);
Num2 := StrToInt(edNum2.Text);
Result := Num1 - Num2;
plResult.Caption := IntToStr(Result);
lbOperator.Caption := '-';
except
ShowMessage('Felaktig inmatning');
end;
end;
procedure TfrmnnCalc.edNum1KeyPress(Sender: TObject; var Key: char);
begin
// #8 is Backspace
if not (Key in [#8, '0'..'9']) then begin ShowMessage('Invalid key');
// Discard the key Key := #0;
end;
end;
procedure TfrmnnCalc.edNum2KeyPress(Sender: TObject; var Key: char);
begin
// #8 is Backspace
if not (Key in [#8, '0'..'9']) then begin ShowMessage('Invalid key');
// Discard the key Key := #0;
end;
end;
initialization {$I unit1.lrs}
end.