Avatar billede stenbye Nybegynder
14. marts 2001 - 17:50 Der er 7 kommentarer

Lommeregner

HEJ!!!

Er der nogen som kan skaffe mig den programmerede tekst (til Delphi) til en lommeregner???

Det ville glæde mig meget hvis du kan!

På forhånd tak

nikolaj@bh-agro.dk
Avatar billede stone Forsker
14. marts 2001 - 18:21 #1
hvor avanceret skal den være?
Avatar billede berg Nybegynder
14. marts 2001 - 18:46 #2
Der er en simpel én her:
http://www.delphiforfun.org/Programs/SimpleCalc.htm

.:Berg:.
Avatar billede borrisholt Novice
15. marts 2001 - 07:36 #3
http://borrisholt.com findet du en simpel og en kompliceret udgave af en lomme regner ...

Jens B
Avatar billede kingguro Nybegynder
29. marts 2001 - 17:41 #4
Det kommer nok til at virke lidt uoverskueligt, men giv mig den E-mail så gen jeg sende den rigtige kode....

//Kingguro

---------------------------------
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls;

const
    WM_UPDATE_MEMORY = WM_USER;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    Button19: TButton;
    Button20: TButton;
    Panel1: TPanel;
    Button21: TButton;
    Button22: TButton;
    Button23: TButton;
    Button24: TButton;
    Button25: TButton;
    Button26: TButton;
    Button27: TButton;
    Timer1: TTimer;
    ListBox1: TListBox;
    procedure Button23Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button21Click(Sender: TObject);
    procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean);
    procedure FormKeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
    procedure Button27Click(Sender: TObject);
    procedure Button26Click(Sender: TObject);
    procedure Button24Click(Sender: TObject);
    procedure Button25Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button20Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
  private
    IsResult : Boolean;
    Memory : Real;
    tmpResult : Real;
    LastAction : (_ADD, _DIV, _SUB, _MUL, _NONE );
  public
    procedure UpdateMemory (var Msg: TMessage);      message WM_UPDATE_MEMORY;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}


procedure SetButtonStyle(Button : TButton);
const
  BS_MASK = $000F;
var
  Style: Word;
  I : Integer;
begin
  Style := BS_PUSHBUTTON;

  for i:= 0 to Form1.ComponentCount-1 do
  begin
    if Form1.Components[i] is TButton then
      if GetWindowLong(TButton(Form1.Components[i]).Handle, GWL_STYLE) and BS_MASK <> Style then
          SendMessage(TButton(Form1.Components[i]).Handle, BM_SETSTYLE, Style, 1);
  end;

  If Button = nil then
    exit;

  if Button.HandleAllocated then
  begin
    Style := BS_DEFPUSHBUTTON;
    if GetWindowLong(Button.Handle, GWL_STYLE) and BS_MASK <> Style then
      SendMessage(Button.Handle, BM_SETSTYLE, Style, 1);
  end;
end;

procedure TForm1.Button23Click(Sender: TObject);
begin
  ListBox1.Items.Strings[0] := \'0\';
  tmpResult :=0;
  isResult := False;
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  s : String;
begin
S:= ListBox1.Items.Strings[0];

If (not isResult) AND (S <> \'0\') then
    S := S + (Sender as TButton).Caption
else
  begin
    S := (Sender as TButton).Caption;
    isResult := False;
  end;
  ListBox1.Items.Strings[0] := s;
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
IsResult := True;
KeyPreview := True;
(*
  If KeyPreview is True, keyboard events occur on the form before they occur on the active control.
  (The active control is specified by the ActiveControl property.)

  If KeyPreview is False, keyboard events occur only on the active control.

  Navigation keys (Tab, BackTab, the arrow keys, and so on) are unaffected by
  KeyPreview because they do not generate keyboard events.

  KeyPreview is False by default.
*)
LastAction := _None;
ListBox1.Items.Add(\'0\');
ListBox1.Style := lbOwnerDrawFixed;
(*
  Owner-draw list boxes require more programming because the application needs
  information on how to render the image for each item in the list.

  Each time an item is displayed in an lbOwnerDrawFixed list box,
  the OnDrawItem event occurs. The event handler for OnDrawItem draws
  the specified item.

  The ItemHeight property determines the height of each of the items.
*)
end;

procedure TForm1.Button21Click(Sender: TObject);
var
  s : String;
begin
  if IsResult then
    Exit;
  S:= ListBox1.Items.Strings[0];
  Delete(s,Length(s),1);
  ListBox1.Items.Strings[0] := s;

  If ListBox1.Items.Strings[0] = \'\' then
    ListBox1.Items.Strings[0] := \'0\';

  SetButtonStyle((Sender as TButton));
//Delete the ciffer at the end
end;


procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,  NewHeight: Integer; var Resize: Boolean);
begin
  Resize := False;
  //Prevent the user from rezing the application
end;

procedure TForm1.Button27Click(Sender: TObject);
begin
  Memory := Memory + StrToFloat(ListBox1.Items.Strings[0]);
  PostMessage(Handle, WM_UPDATE_MEMORY, 0, 0);
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button26Click(Sender: TObject);
begin
  Memory := Memory - StrToFloat(ListBox1.Items.Strings[0]);
  PostMessage(Handle, WM_UPDATE_MEMORY, 0, 0);
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button24Click(Sender: TObject);
begin
  Memory := 0;
  PostMessage(Handle, WM_UPDATE_MEMORY, 0, 0);
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button25Click(Sender: TObject);
begin
  ListBox1.Items.Strings[0] := FloatToStr(Memory);
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.UpdateMemory(var Msg: TMessage);
begin
  if Memory <> 0 then
    Panel1.Caption := \'M+\'
  else
    Panel1.Caption := \'\';
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);
begin
  Panel1.SetFocus;
  case KEY of
    96, 48 : Button1Click(Button16);
    97, 49 : Button1Click(Button1);
    98, 50 : Button1Click(Button2);
    99, 51 : Button1Click(Button3);
    100, 52 : Button1Click(Button4);
    101, 53 : Button1Click(Button5);
    102, 54 : Button1Click(Button6);
    103, 55 : Button1Click(Button7);
    104, 56 : Button1Click(Button8);
    105, 57 : Button1Click(Button9);
    8      : Button21Click(Button21);
    77      : Button27Click(Button27);
    67      : Button23Click(Button23);
    111    : Button10Click(Button10);
    106    : Button11Click(Button11);
    109    : Button12Click(Button12);
    107    : Button13Click(Button13);
    110    : Button14Click(Button14);
    13      : Button17Click(Button17);
  end;
  (*
    NUM 0 96
    MUN 9 105
    ENTER 13
    NORMAL 0 48
    NORMAL 9 57
    BACKSPACE 8
    M 77
    C 67
    NUM /    111
    NUM * 106
    NUM - 109
    NUM + 107
    NUM . 110
  *)
  (*
    USE this to get hold of the value of the key pressed
  Caption := IntToStr(key);
  *)
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
  isResult := true;
  tmpResult := StrToFloat(ListBox1.Items.Strings[0]);
  LastAction := _DIV;
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
  isResult := true;
  tmpResult := StrToFloat(ListBox1.Items.Strings[0]);
  LastAction := _MUL;
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
  isResult := true;
  tmpResult := StrToFloat(ListBox1.Items.Strings[0]);
  LastAction := _Sub;
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
  isResult := true;
  tmpResult := StrToFloat(ListBox1.Items.Strings[0]);
  LastAction := _Add;
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button17Click(Sender: TObject);
var
  Result : real;
begin
  Case LastAction Of
    _Add :
        begin
          Result := tmpResult + StrToFloat(ListBox1.Items.Strings[0]);
        end;
    _Sub :
        begin
          Result := tmpResult - StrToFloat(ListBox1.Items.Strings[0]);
        end;
    _MUL :
        begin
          Result := tmpResult * StrToFloat(ListBox1.Items.Strings[0]);
        end;
    _DIV :
        begin
          Result := tmpResult / StrToFloat(ListBox1.Items.Strings[0]);
        end;
    else
        Result := StrToFloat(ListBox1.Items.Strings[0]);
  end;

  ListBox1.Items.Strings[0] := FloatToStr(Result);
  isResult := True;
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
  if isResult then
    Button23Click(Button23);

  if Pos(#46, ListBox1.Items.Strings[0]) = 0 then
    ListBox1.Items.Strings[0] := ListBox1.Items.Strings[0] + \'.\';

  SetButtonStyle((Sender as TButton));
  (*
    Pos searches for Substr within S and returns an integer value that is the
    index of the first character of Substr within S.
    Pos ignores case-insensitive matches.
    If Substr is not found, Pos returns zero.
  *)
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
  ListBox1.Items.Strings[0] := FloatToStr(StrToFloat(ListBox1.Items.Strings[0]) * -1);
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button18Click(Sender: TObject);
begin
  ListBox1.Items.Strings[0] := FloatToStr(1/StrToFloat(ListBox1.Items.Strings[0]));
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Button20Click(Sender: TObject);
begin
  If StrToFloat(ListBox1.Items.Strings[0]) < 0 then
    Exit;

  ListBox1.Items.Strings[0] := FloatToStr(Sqrt(StrToFloat(ListBox1.Items.Strings[0])));
  SetButtonStyle((Sender as TButton));
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  SetButtonStyle(nil);
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;  Rect: TRect; State: TOwnerDrawState);
begin
  with Control as TListbox do
  begin
    Canvas.Font.Name := \'Book Man OldStyle\';
    Canvas.Font.Size := 15;
    Canvas.FillRect(Rect);
    if StrToFloat(ListBox1.Items.Strings[0]) < 0 then
      begin
        Canvas.Font.Color := clRed;
        Canvas.Font.Style:=Canvas.Font.Style+[fsBold];
      end;
    Canvas.TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]);
  end;
end;

end.
Avatar billede kingguro Nybegynder
29. marts 2001 - 19:51 #5
Hovsa. Jeg glemte at sætte det som svar. Mit svar er ovenover.....

//Kingguro
Avatar billede borrisholt Novice
30. marts 2001 - 08:38 #6
Kingguro >> Når nu du stjæler fra http://borrisholt.com, gidder du så ikke i det mindste at fortælle det ?

Jens B
Avatar billede ziron Nybegynder
30. marts 2001 - 20:28 #7
jeg skulle sige undskyld fra Kingguro...

/ZIRON
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester