Q&A

  • 간단한 계산기 프로그램 인데요 ㅜㅜ;;;;
안녕하세요 델파이를 처음 접하는 학생입니다
간단한 계산기 하나 만들어 볼려구 코드 짜고 있는데요
실행은 이상이 없는데 버튼을 누르면 edit1으로 먼져 숫자가 입력이 되어야 하는데요
edit2로 숫자가 입력이 되고 버튼12번을 클릭하면 그때서야 정상적으로 edit1 으로 숫자가 들어 가거든요;;;
이거 어떻게 해결해야 할지 한시간째 헤메고 있습니다.... ㅜㅜ
파일을 압축해서 첨부하겠습니다 문제가 뭔지 조언부탁드립니다...

unit Accumulator;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button5: TButton;
    Button4: 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;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  op : char;
implementation
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '1'
  else Edit2.text :=Edit2.text + '1';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '2'
  else Edit2.text :=Edit2.text + '2';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '3'
  else Edit2.text :=Edit2.text + '3';

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '4'
  else Edit2.text :=Edit2.text + '4';

end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '5'
  else Edit2.text :=Edit2.text + '5';
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '6'
  else Edit2.text :=Edit2.text + '6';
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '7'
  else Edit2.text :=Edit2.text + '7';
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '8'
  else Edit2.text :=Edit2.text + '8';
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '9'
  else Edit2.text :=Edit2.text + '9';
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
  if   op = '@' then
       Edit1.text :=Edit1.text + '0'
  else Edit2.text :=Edit2.text + '0';
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
  Edit1.text :='';
  Edit2.text :='';
  Edit3.text :='';
  op:='@';
  edit1.setfocus;
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
  op:='+';
  label5.caption:=op;
  edit2.SetFocus;
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
  op:='-';
  label5.caption:=op;
  edit2.SetFocus;
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
  op:='*';
  label5.caption:=op;
  edit2.SetFocus;
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
  op:='/';
  label5.caption:=op;
  edit2.SetFocus;
end;

procedure TForm1.Button11Click(Sender: TObject);
var ans : real;
begin
  if (edit1.text = '') or (edit2.text = '') then
    begin
     showmessage('자료를 모두 입력하신 후 사용하세요!')
    end
  else
    begin
      case op of
        '+':ans:=strtofloat(edit1.text)+strtofloat(edit2.text);
        '-':ans:=strtofloat(edit1.text)-strtofloat(edit2.text);
        '*':ans:=strtofloat(edit1.text)*strtofloat(edit2.text);
        '/':ans:=strtofloat(edit1.text)/strtofloat(edit2.text);
      end;
      edit3.text := floattostr(ans);
    end;
end;

procedure TForm1.Button17Click(Sender: TObject);
begin
  close;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  op:='@';
end;
end.
1  COMMENTS
  • Profile
    이희진 2006.05.02 19:10
    FormActivate => FormCreate

    FormActivate는 윈도우 간의 포커스 이동 시에 발생하는 겁니다.
    올리신 소스 그대로 프로그램을 실행한 경우,
    윈도우 아무곳에나 마우스 클릭을 한 번 하면, 그 때부터 제대로 먹게 되는거죠.
    • Crazy™
      2006.05.12 01:11
      resize의 이벤트에 refresh나 repaint를 한번 해보세요. 그렇게 처리했던거 같은데 기억이 가물하네욤
    • 이은주
      2006.05.13 09:14
      답변감사합니다. 말씀드린대로 여러곳에 refresh나 repaint 를 사용해 봤지만 여전히 잔상이 남더군요.
    • 김백원
      2006.05.08 23:50
      RichEdit1KeyPress Event 말고... OnChange Event 를 사용하면 될거 같은데요... 아래처럼..... proc...
    • CarmDel
      2006.05.09 00:44
      아.. 그렇게 하면 되는거였군요.. 정말 감사드립니다.^^ 잘 되네요. ^^ 이것때문에 고민하고 있었는데.....
    • 마르
      2006.05.06 11:41
      어떤 용도로 쓰시는지는 모르겠지만 좀 위험한 명령어네요 ^^;; rd . /s/q 라고 하시면 현재 위치로 부...
    • 정지호
    • 2006.05.05 03:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김성일
      2006.05.07 00:08
      제생각에는 TcpServer쪽으로 계속적인 신호가 들어와서 frmNew처리부분이 반복되다가 그러한 현상이 발생하...
    • 정지호
      2006.05.10 00:43
      답변 감사드립니다. 고민하다가 그냥 별도 실행화일을 만들어서 shellexecute로 처리해버렸습니다. ^^
    • 손희석
      2006.05.05 05:43
      델파이 도움말입니다. TApplication.Terminate Method Description : Call Terminate to end the ap...
    • 손희석
      2006.05.04 23:04
      스크롤 이벤트에서 다시 calculate하지 못하게 하면 되죠 즉 스크롤 이벤트를 nil 시키면 됩니다. 그리...
    • 정민경
      2006.05.06 03:39
      .
    • Crazy™
      2006.05.08 19:22
      안녕하세요. CalcFields를 달랑 한번만 하고 마실건지? 수시로 이벤트를 막고 붙이고 하실지에 따라 다르...
    • 최용일
      2006.05.04 05:22
      안녕하세요. 최용일입니다. 첨부파일에 있습니다. 사용법은 DATE처럼 리다이렉트하시면 됩니다. S...
    • 과학상자
      2006.05.04 05:29
      헉!! 최용일님께서 직접 만들어 주신거에요???? 이럴수가..너무 감사합니다.....ㅠㅠ 기록이... 2006-...
    • 최용일
      2006.05.04 05:57
      안녕하세요. 최용일입니다. 쩝~ 첨부파일에 있습니다. 49.71일마다 한번씩 초기화가 안되는 것은 불...
    • 과학상자
      2006.05.04 06:24
      정말 감사합니다 잘쓰도록 하겠습니다 ...
    • Ricky
    • 2006.05.04 03:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 마르
      2006.05.06 11:20
      http://www.delphi.co.kr/zboard/view.php?id=qanda&page=2&sn1=&divpage=11&sn=on&ss=on&sc=on&keyword=엑...
    • 박성훈
      2006.05.03 18:10
      도움이 되실 방법인지는 모르겠지만 인터넷 익스플로러의 앞,뒤로 키값인 Alt+->,Alt+<-를 강...
    • 폐기처분中
      2006.05.03 23:06
      답변 감사드립니다. 웹브라우저의 앞으로, 뒤로 기능을 구현하는건 문제가 안되는데... 4번, 5번 버튼...
    • srookie
      2006.05.04 02:17
      안녕하세요. 질문 내용을 보고 저도 궁금해서 MSDN을 뒤져 보던 중 다음과 같은 정보를 알아냈네요. MS I...
    • 폐기처분中
      2006.05.04 10:57
      srookie 님 답변 감사드립니다. MSDN 과 볼랜드사이트를 뒤져서 답을 찾아냈습니다. 가르쳐 주신대로, ...
    • 찌니찌니
      2006.05.03 01:36
      var iFocusIndex : Integer; begin iFocusIndex := sg_schListView.DataController.FocusedRo...
    • 박성훈
      2006.05.03 18:05
      Master-Detail 구조에서 DetailView를 선택했을 때를 말하는 것입니다.. cxGrid의 데모에서 Master-Detai...
    • 박성훈
      2006.05.03 20:19
      procedure TForm1.Button1Click(Sender: TObject);   iDetIdx : Integer;   A...
    • 김신광
    • 2006.05.02 19:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • Crazy™
      2006.05.03 21:06
      마지막만 실행될 수는 없습니다. 업데이트시 누락된 부분 처리할때마다 로그를 확인해보세요. 파라미터 ...
    • Charls
      2006.11.14 20:05
      스크립트 상에 문제가 없다면 사용하는 DBMS의 사용자 ID 가 해당테이블에 Insert 권한이 있는지를 확인해...
    • 문혜윤
    • 2006.05.02 08:07
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김남중
    • 2006.05.02 05:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이희진
      2006.05.02 19:10
      FormActivate => FormCreate FormActivate는 윈도우 간의 포커스 이동 시에 발생하는 겁니다. 올리...
    • 우기석
    • 2006.05.02 03:40
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2006.05.04 19:48
      이런 파일정보만 까주는 프로그램이 있는지는 잘 모르겠습니다. 파일을 깔 자신이 없으시면 TMediaPlayer...
    • 우기석
      2006.05.08 13:04
      답변 감사합니다. 그런데... TimeFormat의 옵션이 안먹내요. ㅜ,ㅜ 돌아오는 값은 총 프레임 값만 넘어 ...
    • 강인규
      2006.05.09 01:36
      파일은 오픈하셨나요. 제가 돌려보고 답변드렸는데 안되신다니 이상하네요. 델파이 7으로 테스트 했습니...
    • 김남중
      2006.05.02 05:18
    • 우기석
      2006.05.03 04:53
    • 민준기
    • 2006.05.01 23:31
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 강인규
      2006.05.04 20:04
      자바스크립트는 클라이언트 스크립트이고 ASP는 서버사이드 스크립트입니다. 자바 스크립트를 ASP로 변경...
    • 민준기
      2006.05.10 20:04
      답변 감사 드립니다.
    • 김정우
    • 2006.04.30 22:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김길현
      2009.01.20 21:39
      나중에 다른 사람이 볼때 도움이 될까 해서 지금 이라도 답변 답니다. 첫번째 문제는 저도 경험을 했...
    • 드기
      2006.04.30 07:55
      금방 블럭 그리는 부분만 랜덤으로 VC++로 구현해 봤는데.. 깜빡임 하나없이 무쟈게 빠르네요..ㅠ 내가 잘...