안녕하세여.. 타락임다.. 꾸벅..
한델에서 열쒸미 배우고 있섭니다.. 감사함다.. 꾸벅..
OnKeyDown()에서 한개의 키는 받을수 있습니다..
근데, 두개 또는 세개의 조합키는 받는 방법을 모르겠습니다..
가령 Shift + F1 키를 알려면..
if Key = VK_SHIFT or VK_F1 then
// 여기서 작업한다.
이렇게 하는거 맞나여??? 틀린거 같은데,, 긁적긁적..
고슈님의 성의있는 답변 바람다.. 꾸벅..
왕초보 타락천사. ^^;;;
> 안녕하세여.. 타락임다.. 꾸벅..
>
> 한델에서 열쒸미 배우고 있섭니다.. 감사함다.. 꾸벅..
>
> OnKeyDown()에서 한개의 키는 받을수 있습니다..
>
> 근데, 두개 또는 세개의 조합키는 받는 방법을 모르겠습니다..
>
> 가령 Shift + F1 키를 알려면..
>
> if Key = VK_SHIFT or VK_F1 then
> // 여기서 작업한다.
>
> 이렇게 하는거 맞나여??? 틀린거 같은데,, 긁적긁적..
땡~! 틀렸습니다. 히히....
지금 보니간 밑에 치형님께서 답변을 하셨는데 저는 약간 덧붙일라고
이렇게 답변을 하는 겁니다. (물론 치형님은 알고 있겠지만...)
'Alt + G' key 를 받을려면 다른 조작들이 필요합니다.
1. 실행화면 상태에서 'Alt + G' key 를 누르면 소리가 난다.
물론 다른 'Alt + 여타 다른 키들을 누르면 그래도 똑같지요
이 것을 해결하는 것이 중요하것지요
2. g 값을 받아오는거 이건 너무 간단한가? 필요없다 히...
이제 본격적으로 시작을 하지요....
예제 1)
if (key = ord(71)) and (ssalt in shift) then
begin
caption := '규춘이바보';
end;
이렇게 하믄요 되는겁니다. ord 명령은 아스크 코드값을 이야기 하는 거지요
ord(65)는 A 이것지요?
ord(71)는 G 가 되는 겁니다.
물론 이것은 OnKeyDown 이벤트에서 정의를 해 주면 됩니다.
자 이제 부터 소스를 한번 보시지요
예제 2)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
Procedure CMDialogChar(var Msg: TWMGetDlgCode); message CM_DIALOGCHAR; // alt 키로 인한 소리를 없애 준다.
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// 자 여기서 왜 alt키를 누르면 소리가 날까요? 바로 윈도우 메뉴땜시 나는 겁니다.
// 지금 델파이가 실행되어 있다면 아님 이 웹브라우져 상태에서라도
// alt 키와 z 키를 눌러보셔요! 소리가 들리지요!
// alt 키와 f 키를 눌러보면 곧 메뉴가 열립니다.
// 이제 이해가 가십니까? 바로 alt는 메뉴로 이동하는 키로 인식하기 땜시
// 없는 메뉴라고 소리가 나는 겁니다.
// 자 아래에 있는 것이 바로 컴이 그것을 인식못하게 하는 것입니다.
procedure TForm1.CMDialogChar(var Msg: TWMGetDlgCode);
begin
inherited;
Msg.Result := DLGC_WANTMESSAGE or DLGC_WANTALLKEYS or DLGC_WANTARROWS or
DLGC_WANTTAB or DLGC_WANTCHARS;
end;
// 'Alt + G' key 를 받으려면 의 질문의 답변입니다.
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key = ord(71)) and (ssalt in shift) then
begin
caption := '규춘이바보'; // 여기에 자신이 처리할 명령을 수행
end;
end;
end.
도움이 되었나 모르겠군요! 히~!
도움이 안되었으면 죄송이지요! (그렇다면 다음부터 qna에 나오지 않것습니다용)
히~!!!~!~!~!~!~!~!~!~!
행복하셔용~!