Q&A

  • 'Alt + G' key 를 받으려면???????
안녕하세여.. 타락임다.. 꾸벅..



한델에서 열쒸미 배우고 있섭니다.. 감사함다.. 꾸벅..



OnKeyDown()에서 한개의 키는 받을수 있습니다..



근데, 두개 또는 세개의 조합키는 받는 방법을 모르겠습니다..



가령 Shift + F1 키를 알려면..



if Key = VK_SHIFT or VK_F1 then

// 여기서 작업한다.



이렇게 하는거 맞나여??? 틀린거 같은데,, 긁적긁적..



고슈님의 성의있는 답변 바람다.. 꾸벅..



왕초보 타락천사. ^^;;;

3  COMMENTS
  • Profile
    조규춘 2000.04.08 20:55
    타락천사 wrote:

    > 안녕하세여.. 타락임다.. 꾸벅..

    >

    > 한델에서 열쒸미 배우고 있섭니다.. 감사함다.. 꾸벅..

    >

    > 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에 나오지 않것습니다용)

    히~!!!~!~!~!~!~!~!~!~!

    행복하셔용~!

  • Profile
    이치형 2000.04.08 21:10
    타락천사 wrote:

    > 안녕하세여.. 타락임다.. 꾸벅..

    >

    > 한델에서 열쒸미 배우고 있섭니다.. 감사함다.. 꾸벅..

    >

    > OnKeyDown()에서 한개의 키는 받을수 있습니다..

    >

    > 근데, 두개 또는 세개의 조합키는 받는 방법을 모르겠습니다..

    >

    > 가령 Shift + F1 키를 알려면..

    >

    > if Key = VK_SHIFT or VK_F1 then

    > // 여기서 작업한다.

    >

    > 이렇게 하는거 맞나여??? 틀린거 같은데,, 긁적긁적..

    >

    > 고슈님의 성의있는 답변 바람다.. 꾸벅..

    >

    > 왕초보 타락천사. ^^;;;

    Oh my God....

    잘못 된것 같군요... Onkeydown 이벤트가 발생하면 Key라는 변수와 TShiftState타입의

    Shift라는 변수,, 두개의 변수에 값이 리턴됩니다..

    여기서 Key변수에는 f1,f2,엔터 등등의 키에 해당하는 값이 리턴되구요,, 만약에 ,shift키등등을 눌렀을때는 Shift라는 변수에 값이 리턴됩니다.. 아래를 참고하세요..

    그럼 성공하시면 메일 주세요..

    그리구 참고로 델파이의 도움말을 참고하세요.. TShiftState의 'T'자에 커서를 갔다놓구

    F1를 누르시면 델파이의 도움말이 나올거예요,,,

    아래는 Shift변수에 리턴 되는 값들입니다..

    ---------------------------------------

    ssShift The Shift key is held down.

    ssAlt The Alt key is held down.

    ssCtrl The Ctrl key is held down.

    ssLeft The left mouse button is held down.

    ssMiddle The middle mouse button is held down.

    ssDouble The mouse was double-clicked.

    -----------------------------------------

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

    Shift: TShiftState);

    if ssAlt in Shift and Key = VK_F1 then

    begin

    //작업 처리

    end;

    begin



    end;



  • Profile
    타락천사 2000.04.08 21:06
    안녕하세여.. 타락임다.. ^^



    3개 이상의 조합키가 궁금했는데, 해보니까 돼더군여..^^



    ..님 감사합니다.. 넙죽...



    즐거운 하루 되세여...



    왕초보 타락천사. ^_____^

    • hj998811
    • 2000.04.08 21:12
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 윤진화
      2000.04.11 06:09
      제 나름대로 간략한 그림그리기 기법을 통해서 그 그려진 그림을 BMP파일로 저장하는 예제를 아래에 올립...
    • 정상락
      2000.04.15 02:13
      윤진화씨 정말로 감사합니다. 덕분에 간단하게 해결이 되었습니다. 진심으로 감사드리며 좋은 하루가 되...
    • 장민석
    • 2000.04.08 20:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이치형
      2000.04.08 21:19
      장민석 wrote: > 잘되던 프로그램이었는데 IP를 바꾸고 나서 다음과 같은 error 가 뜨네요 > 해결방법은 ...
    • 강동길
    • 2000.04.08 20:39
    • 3 COMMENTS
    • /
    • 0 LIKES
    • OD
      2000.04.09 03:08
      안녕하세요. OD입니다. OnDataChange Event의 맨 처음 부분에 다음을 추가해 보세요. if Field = nil the...
    • 이치형
      2000.04.08 21:33
      강동길 wrote: > 사용환경 : WIN98, DELPHI 4, MS-SQL SERVER 7.0 > 안녕하세요... > 실력이 미흡하여 ...
    • 강동길
      2000.04.08 22:32
      이치형님 답변에 감사드립니다. 에러 위치는 알고 있는데 왜 에러가 나는지 잘 모르거든요... qry_nego...
    • 창백한달빛
      2000.04.08 20:49
      hee wrote: > 제목 그대로 입니다. bde나 odbc를 이용하지 않고 직접 연결 하는 방법이 없나해서요. ...
    • 조규춘
      2000.04.08 20:55
      타락천사 wrote: > 안녕하세여.. 타락임다.. 꾸벅.. > > 한델에서 열쒸미 배우고 있섭니다.. 감사함다....
    • 이치형
      2000.04.08 21:10
      타락천사 wrote: > 안녕하세여.. 타락임다.. 꾸벅.. > > 한델에서 열쒸미 배우고 있섭니다.. 감사함다....
    • 타락천사
      2000.04.08 21:06
      안녕하세여.. 타락임다.. ^^ 3개 이상의 조합키가 궁금했는데, 해보니까 돼더군여..^^ ..님 감사합니...
    • 사노테
    • 2000.04.08 19:37
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이치형
      2000.04.08 20:58
      사노테 wrote: > BDE Administrator을 써서 DataBase DB 라고 하나 만들어 넣고여.. > 아무것두 안하구 ...
    • 타락천사
      2000.04.08 23:56
      안녕하세여. 타락임다.. 꾸벅... 흠.. ..님이 답변해 주셨는데, 제 질문은 그게 아니였는데.. ^^;;;; ...
    • 타락천사
      2000.04.09 02:58
      안녕하세여.. 타락임다.. 꾸벅.. ShortString 과 AnsiString을 구분해서 써야해여.. 제가 통신에 쓰...
    • 황 현
    • 2000.04.08 19:03
    • 0 COMMENTS
    • /
    • 0 LIKES
    • mr.Q
    • 2000.04.08 12:16
    • 3 COMMENTS
    • /
    • 0 LIKES
    • mr.Q
      2000.04.08 13:18
      헉~ i1이 하나의 변수인데, 제가 잘못봤습니다. 죄송~
    • 최용일
      2000.04.08 12:32
      울랄랄라~ 델파이 6이 새로 나왔나 보네요... 저두 하나 보내주세요... 델파이 1~5까진 안되는 내용인데...
    • mr.Q
      2000.04.08 12:48
      헉~~ 아직 안주무시나요? 무지 배고픈 밤이네요. ^^ 저 코드를 쓴 사람은, 델4를 썼는데, 문법을 개조한 ...
    • mr.Q
      2000.04.08 12:43
      이렇게 하니 되는군요. implementation {$R *.DFM} var keyTag:integer; procedure TForm1...
    • mr.Q
      2000.04.08 13:16
      일부 수정 mr.Q wrote: > > 이렇게 하니 되는군요. > > implementation > > {$R *.DFM} > va...
    • 이용현
    • 2000.04.08 08:33
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.08 23:01
      안녕하세요. 최용일입니다. constructor는 객체에 인스턴스를 링크시키는 역활을 할 뿐 어떤 에러 코드...
    • 음냐~
      2000.04.08 08:47
      이 질문은 밑빠진 독에 불부으면 물이 가득차냐는 질문이랑 같습니다. 이용현 wrote: > TFilestream.Cr...
    • 최용일
      2000.04.08 10:52
      안녕하세요. 최용일입니다. 에고~ 에고~ 두가지가 있다고 했는데 한가지만 설명드렸네요. 날이 갈수록 ...
    • 최용일
      2000.04.08 08:15
      안녕하세요. 최용일입니다. 오른쪽 정렬은 아래와 같이 텍스트 출력하는 부분만 약간 수정하시면 될것 ...
    • 황현동
    • 2000.04.08 05:28
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2000.04.08 06:17
      황현동 wrote: > 무슨 키 누르면 뭐해라 (폼에서) > > 대충 아주 간단한 예제라도 하나 알려주세요 ...
    • 황현동
    • 2000.04.08 05:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.04.08 23:16
      안녕하세요. 최용일입니다. FindFirst, FindNext, FindClose함수를 이용하면 구현하실 수 있습니다. ...