|
code를 그냥 copy하시면 안됩니다.
1. 문의하신 Shift.Contains(ssCtrl) <<-- 이 부분은 현재 KeyBoard에 Ctrl키가 눌려져 있는지 확인하는 겁니다.
Shift.Contains(ssShift) <<--이렇게 하면 shift 키가 눌려져 있는지 확인이 되구요
2. 그다음 switch 문에서 case 1 : <<--- 이부분을 고쳐야 합니다.
Key보드에서 숫자 1을 입력하면 1이 아니라 '1' 이 들어옵니다.
Key값 '1'은 ascii테이블을 참조하면 decimal로 49 네요
그러므로 case 문은
case '1' : 로 해주던가?
case 49 : 로 해주시던지
아니면 아래처럼 하는 방법도 있겠네요
int inum=Key-48 ;
switch(inum)
{
case 0:
break;
case 1:
break;
.....
}
이상입니다.
허접 님이 쓰신 글 :
: 자세한 답변 정말 감사드립니다.
: 장성호님께서 가르쳐 주신대로 해봤는데, 안되네요.
: 뭘 빠뜨렸나..... 한번 더 알려주세요~ ㅠ.ㅜ 정말 급합니다..
: 그리고 소스에서, Shift.Contains(ssCtrl) <- 이 부분은, Ctrl 키를 함께 누르고 키를 눌러야 하는건지요......
:
:
: 장성호 님이 쓰신 글 :
: : 1. Form속성에 KeyPreView 가 있습니다. 이놈을 True로 해주시구요
: : (이러면 Form위에 올려져있는 모든 Control의 Key Event가 Form으로 왔다가 갑니다.)
: :
: : 2. 그런 다음 Form의 KeyDown이벤트에서 처리해주시면 되겠네요
: :
: : void __fastcall TMain::FormKeyDown(TObject *Sender, WORD &Key,
: : TShiftState Shift)
: : {
: : //enum Classes__1 { ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble };
: : if(Shift.Contains(ssCtrl))
: : {
: :
: : switch( Key)
: : {
: : case 1:
: : Panel1Click(Panel1);
: : break;
: : ...
: : }
: : }
: : }
: :
: : 너무 상세히 가르쳐 줬남?
: :
: :
: : 허접 님이 쓰신 글 :
: : : 안녕하세요.
: : : 매일 삽질하고 있는 허접입니다. ㅠ.ㅜ
: : : 오늘은 단축키를 만들려고 하는데요.
: : : Panel이 10개가 있습니다.
: : : 각 Panel을 클릭하면(버튼 대신 패널로 했습니다) RS232통신을 이용해서 데이터를 주고 받습니다.
: : : 지금 그 기능은 잘 되고 있는데요.
: : : 패널에 각각 번호를 부여했습니다. 1번 부터 10번까지......
: : : Caption에 &1 ~ &0 해서 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 를 누르면 해당 번호의 패널을 누른 효과를 내게 하고 싶은데요.
: : :
: : : TApplicationEvents 라는 컴포넌트를 사용하라고 하시는 분들도 계신데, 어떻게 사용하는지도 모르겠네요. ㅠ.ㅜ
: : : 도와주세요~ 고수님들~ ㅠ.ㅜ
|