Q&A

  • Ctrl 키 누르지 않고 다중선택할 수 있는 방법없을까요?
안녕하세요.. 날씨가 많이 풀렸네요.. 그래도 건강들 조심하세요.. ^^

다름이 아니라.. 각종 Grid나 리스트 박스에서 멀티셀렉트시 컨트롤키를
누른채 클릭하면 다중선택이 되는데, 컨트롤키를 누르지 않고 클릭만 으로
다중선택이 되도록 구현하고 싶습니다.

어떤 시점에(어떤 이벤트발생시) 컨트롤키가 눌린 효과를 줘야 컨트롤키를
누른채 마우스클릭을 한 효과를 줄수 있을까요?

참고로 OnMouseDown, OnKeyDown등의 이벤트에 컨트롤키가 눌린효과를 줘도
제가 원하는 효과를 얻을수 없더군요..
Down이벤트가 발생하는 시점에는 이미 마우스키 등이 눌려 버렸기 때문에
그시점에 컨트롤키가 눌린 효과를 줘봤자 뒷북인듯 싶더군요..
마우스 버튼은는 먼저 눌러놓고 나중에 컨트롤 키를 누른것과 동일하다는 이야깁니다...

또 OnMouseMove이벤트에 컨트롤키가 눌린효과를 주면
제가 원하는 효과를 얻을수 있긴 한데, 그때 마우스 휠을 움직이거나 F11키를
누르거나 하면 컨트롤 키가 눌린 상태이므로 제가 원하지 않는 여러가지 현상이
발생합니다.. 예를 들면 폰트가 작아진다거나 익스플로러의 툴바가 없어진다거나..
(쩝.. 제가 지금 엑티브엑스로 뭔짓을 하고 있어서.. ^^;)
여러가지 기현상이 발생해서 컨트롤키를 안누르고 멀티셀렉트하는 장점보다
단점이 더 많이 생겨서.. OnMouseMove는 포기해야 할것 같습니다..

정확히 마우스키가 눌리는 시점에만 Ctrl + OnMouseDown 현상을 발생시키고
MouseUp될때 Ctrl키가 눌린것을 해제해주면 될것같은데..

막강고수님들의 한수 부탁드립니다..

그럼 답올라올때까지 눈빠지게 기둘리겠습니다.. ^^;
4  COMMENTS
  • Profile
    홍성락 2003.01.30 01:03
    일단 마우스 다운에서 컨트롤키를 인식시켜 멀티선택게함니다
    또한 다른 컴포실행시엔 컨트롤 키를 해제시킴니다
    그리고 더블 클릭시 컨트롤키를 해제시킴니다.
    private
    { Private declarations }
    DblClick :boolean; //마우스더블클릭에 필요한 변수
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.dfm}

    procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    var
    pKeyboardState : ^TKeyboardState;
    begin
    if (DblClick = false) then begin
    New(pKeyboardState);
    GetKeyboardState(pKeyboardState^); //초기 상태 구함
    pKeyboardState^[VK_CONTROL] := $80; //Ctr키를 누를 상태로 설정
    SetKeyboardState(pKeyboardState^);
    end
    else
    DblClick := false;
    end;

    procedure TForm1.ListBox1Exit(Sender: TObject);
    var
    pKeyboardState : ^TKeyboardState;
    begin
    New(pKeyboardState);
    GetKeyboardState(pKeyboardState^); //초기 상태 구함
    pKeyboardState^[VK_CONTROL] := $0; //Ctr키를 누를 상태해제
    SetKeyboardState(pKeyboardState^);
    end;


    procedure TForm1.ListBox1DblClick(Sender: TObject);
    var
    pKeyboardState : ^TKeyboardState;
    i : integer;
    begin
    DblClick := True;
    New(pKeyboardState);
    GetKeyboardState(pKeyboardState^); //초기 상태 구함
    pKeyboardState^[VK_CONTROL] := $0; //Ctr키를 누를 상태해제
    SetKeyboardState(pKeyboardState^);
    for i := 0 to ListBox1.Items.Count-1 do
    ListBox1.Selected[i] := False;
    end;


    procedure TForm1.FormCreate(Sender: TObject);
    begin
    DblClick := false;
    end;
    hsr///////////////////////////////////////////////////
  • Profile
    장석윤 2003.02.04 21:46
    홍성락님 답변 감사드립니다.

    더블클릭속도를 빠르게 설정해둔경우 문제가 되긴하지만.. ^^;;

    작동 잘됩니다...  답변 감사드립니다..

    건강조심하세요. ^^
  • Profile
    한원희 2003.01.12 09:47
    안녕하세요. 한원희입니다.

    도움이 될지는 모르겠지만, 윈도우즈 API 중에 키보드의 상태를 설정하는 SetKeyboardState 라는 함수가 있습니다. 이 함수를 마우스가 눌리는 시점에서 컨트롤키가 눌린것처럼 설정해 주면 될것 같습니다. ^^;

    그럼 즐푸~

  • Profile
    장석윤 2003.01.13 21:30
    질문의 요지를 잘못이해하신듯하군요.
    pKeyboardState^[VK_Contro] := $80을 알고싶은게 아니라..
    OnMouseDown메시지가 발생하기전에 컨트롤키가 눌린것처럼 인식시키고
    싶어서 OnMouseDown메시지가 발생하기전에 마우스 버튼이 눌린것을
    인식할수 있는 방법이 있느냐를 질문드린건데..

    아무튼 관심가져주셔서 감사합니다..


    • 최은하
    • 2003.01.13 18:46
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2003.01.13 22:06
      안녕하세요 하얀까마귀 입니다. 아마 Indy TCPServer 의 Connect,DisConnect, Execute를 말씀하시는것 ...
    • 한휘
    • 2003.01.13 18:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한휘
      2003.01.13 19:00
      procedure TForm1.Button1Click(Sender: TObject);   var TFS , RTFS1, RTFS2 : TFileStream; ...
    • 윤승환
      2003.01.13 18:10
         재귀(再歸)호출을 말씀하시는 거겠죠? 다시 자신을 호출한다는 뜻이니 함수내에서 자신을 ...
    • 김진호
    • 2003.01.13 03:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 그냥
      2003.03.22 23:45
      도움이 되시려는 지는 모르겠습니다만 우연히 소리에 대한 자료를 구하던중 라이브라리가 담긴 압축파일...
    • 작스
    • 2003.01.12 21:38
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박성훈
      2003.01.18 10:01
      안녕하세요? 전 복잡한거는 모르겠구요. 기냥 쿼리하난 더 붙여서 담 번호 구해오시면 될 것 같은데요.
    • 호롱불
      2003.01.21 20:59
      입력 버튼누르기전의 레코드 카운터를 기억해 두었다가 입력 버튼을 누르면 그 레코드 값에서 + 1 한 값...
    • 이준억
      2003.01.13 02:25
      시퀀스를 이용하는 방법이 있죠. 시퀀스의 메소드 중에 nextval이라는 것이 잇는데 이것은 시퀀스중에서 ...
    • 여시
    • 2003.01.12 13:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 그냥
      2003.01.13 05:40
      코드를 바로 작성하신것이 맞는지 모르겠군요.. 프로시저와 함수에  Begin..end; 레코드선어부...
    • 세라핌
      2003.01.15 20:12
      ocx에서 파일을 다운받게 하면 되지 않을까하는데..
    • 이정용
    • 2003.01.11 21:45
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 한만교
      2003.01.12 04:53
      전 델 5.0을 사용하는데 그런 종류의 경고는 나오지 않는군여.. 혹시 TStringList.Create하고 하셨는지?? ...
    • 이정용
      2003.01.13 18:13
      델 7.0을 쓰고 있구요, 사용은 아래와 같이 하였습니다. var   templist : TStringList; be...
    • 이준희
      2003.01.13 18:36
      create 문이 try 블럭 밖에 있어야 합니다. templist := TStringList.Create(); try finally  ...
    • 이정용
      2003.01.13 20:44
      답변해주셔서 감사합니다. 다시 컴파일 해보니 [경고]가 사라졌습니다. "이렇게 사용하는거구나~..."하고 ...
    • 엄화용
    • 2003.01.11 16:01
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 열심히
      2003.01.13 09:34
      일단 님 쿼리를 이런식으로 바꾸시는게 낫겠네요.. SELECT  A."ITEM_CODE", min(D."ITEM_NAME...
    • 박상윤
      2003.02.06 02:30
      winapi에는 그런 함수는 없습니다. FFT 를사용하시여 주파수를 분리 해서 사용하시거나 믹서 컴포를 사용...
    • 박성훈
      2003.01.11 22:56
      안녕하세요? 그런 옵션이 있는지는 정확이 모르겠습니다. 다만, 어플리케이션 차원에서 전역적으로 ...
    • 구창민
      2003.01.11 03:38
      안녕하세요~ 구창민입니다. OnChange 이벤트를 이용하시면 되겠군여.. 아래처럼 한번 해보세요.. ...
    • 한원희
      2003.01.12 09:41
      안녕하세요. 한원희입니다. TDatabase로 연결할 때, 파라미터 정보중에 Blob Size와 Blob Cache 값을 높...
    • 조승기
      2003.01.16 03:32
      안녕하세요. 조승깁니다. 음... 말씀하신 방법은 이미 시도를 해 봤습니다. 그런데 MySQL에서는 안되더군...
    • 박정훈
      2003.08.05 23:05
      안녕하세요. 좀 오래된 글이지만 혹시 다음에 어느분이라도 필요하실지 몰라 답글 올립니다. 저 역시 ...
    • 이명석
      2007.04.11 06:30
      정리하자면... 1. mysql 설정 : max_allowed_packet 값 설정 2. bde 설정 : bde admin(blob size,cache) ...
    • KDDG_sonic0
    • 2003.01.11 01:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2003.01.11 03:28
      영민님 저 구창민입니다. 길드에 관련글들 올려두었어여.. 달려가보세여. 건투를 빌어여~~
    • 왕초보
    • 2003.01.11 01:06
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 장석윤
    • 2003.01.11 01:02
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2003.01.30 01:03
      일단 마우스 다운에서 컨트롤키를 인식시켜 멀티선택게함니다 또한 다른 컴포실행시엔 컨트롤 키를 해제...
    • 장석윤
      2003.02.04 21:46
      홍성락님 답변 감사드립니다. 더블클릭속도를 빠르게 설정해둔경우 문제가 되긴하지만.. ^^;; 작동 ...
    • 한원희
      2003.01.12 09:47
      안녕하세요. 한원희입니다. 도움이 될지는 모르겠지만, 윈도우즈 API 중에 키보드의 상태를 설정하는 Se...
    • 장석윤
      2003.01.13 21:30
      질문의 요지를 잘못이해하신듯하군요. pKeyboardState^[VK_Contro] := $80을 알고싶은게 아니라.. OnMo...