Q&A

  • word 형을 object 형으로....
keydown 이벤트를 일으키면,

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);

위의 procedure 가 선언이 되구 인자로 Key 값을 받을수 있자나요... 맞나? -_-

Key는 Word 형으로 되어 있는데, 제가 버튼 클릭 procedure 로 key 값을 보내고 싶어요

그러니깐 procedure TForm1.Button10Click(Sender: TObject); 여기로요....

그런데 여기서는 TObject로 값을 받으니깐 Word 로 보낼수 없는거 같은데...

값을 보내고 싶을때는 어찌 해야 하나요....

그러니깐 요약하면 키를 눌렀을때 그 누른 key값을  다른 프로시져 ( TObject값을 인자로 갖는)로 보내고 싶거등요...

으... 초짜라 질문조차 허접스럽숨다...만은,,, 어찌해야하는지  좀 갈켜주세요...

즐푸임다....
4  COMMENTS
  • Profile
    윤수아 2003.04.29 00:17
    음..하시려는 것을 말씀해주세용~
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState); 의 key 값을
    procedure TForm1.Button10Click(Sender: TObject);  로 보내려 하시는 이유요...
    어떤 로직을 구현하고 싶으셔서 저런 방법을 쓰시는지 알려주시면 좋은 구현방법이 나올 것 같습니다.  
    key 값에 따라 TForm1.Button10Click(Sender: TObject); 여기서 분기하시려는 건가요???
    그렇다면 TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState); 여기서 분기해주시고 해당 키값에 따라 분기해야 되는 코드는 함수로 따로 만들어주시면 되는데..
    암튼 자세한 사항 좀 올려주세요

  • Profile
    delcho 2003.04.29 00:32
    네... ^^
    다른게 아니고 계산기를 짜고 있거등요...

    마우스 클릭했을때 일어나는 이벤트에 숫자를 더하는 것을 구현해 두었거등요...

    아래처럼요

    procedure TForm1.Button10Click(Sender: TObject);
    begin

         if not bGettingNum then
          begin
           Label1.Caption := '';
           bGettingNum := True;
          end;
       Label1.Caption := Label1.Caption + TButton(Sender).Caption;

    end;

    그리고

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState);

    여기서 Key 값으로 분기를 해서 (아래 처럼 case 문으로 )그 값을 가지고  Button10Click 를 호출하면

                 Case Key of
                    48..57:begin
                    
                    Button10Click(Key);
                    
                    end;
                    .                                    .
                          .
                          .
                          .
                          .
                 end;         

    마우스로 클릭했을때와 마찬가지로 Label1.Caption 에 숫자를 더해서 찍어 주고 싶거등요....

    역시 질문이 허접하네요 -__-;; 지송

    그러니깐, 최종적으로 원하는게 ^^ 함수 하나로 마우스 클릭을 하던 키프레스를 하던 똑같이 라벨에다가 찍어 주고 싶은 거거덩요...

    어떻게 하면 좋을까요?
  • Profile
    한원희 2003.04.29 02:20
    안녕하세요. 한원희입니다.

    아래와 같이 라벨에 숫자를 출력해 주는 프로시저를 만들고,
    각 버튼의 Tag 속성에 버튼이 눌렸을 때, 찍혀야할 숫자를 입력해 둡니다.

    procedure PrintLabel(Value:integer);
    begin
       Label1.Caption := Label1.Caption + IntToStr(Value);
    end;

         printLabel(TComponent(Sender).Tag);

    그리고, KeyDown에서...

                         printLabel(Key-47);

    이런식으로 구현하면 될것 같습니다.

    그럼, 즐푸~


  • Profile
    delcho 2003.04.29 04:14
    감사합니다.
    ^_____^