::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-05 21:09:19, Hit : 5132, Vote : 1267
 마우스의 모양 바꾸고 이동범위 제한하기

// 아래 예제는 Image 영역에서 drawing을 시작할 경우 마우스 모양을
// crCross 로 바꾸고 마우스의 이동범위를 제한한다음 drawing이 끝나면
// 원래 마우스 모양으로 바꾸면서 이동범위도 해제합니다

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure RestrictCursorToDrawingArea(const Image: TImage);
var
  CursorClipArea: TRect;
begin
  CursorClipArea := Bounds(Image.ClientOrigin.X,
                           Image.ClientOrigin.Y,
                           Image.Width, Image.Height);
  // ClipCursor API는 주어진 화면영역(R)으로만 마우스의 이동을 제한합니다
  Windows.ClipCursor(@CursorClipArea);
end;


procedure RemoveCursorRestrictions;
begin
  // 마우스 이동영역의 제한을 해제
  Windows.ClipCursor(NIL);
end;

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Screen.Cursor := crCross;
  RestrictCursorToDrawingArea(Image1);
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Screen.Cursor := crDefault;
  RemoveCursorRestrictions;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Screen.Cursor = crCross then
  begin
    Image1.Canvas.Pen.Style := psDot;
    Image1.Canvas.Pixels[X, Y] := clBlack;
  end;
end;

end.






611   [일반/컴포넌트] 모서리가 둥근(rounded ends) TMemo 만들기  김영대 2004/07/25 4628 1191
610   [윈도우즈 API] 모서리가 둥근(rounded ends) TEdit 만들기  김영대 2003/03/07 4935 1288
609   [윈도우즈 API] 모든 창을 아이콘 표시/취소  김영대 2003/03/07 4319 1236
608   [일반/컴포넌트] 모든 드라이브,디렉토리 검색하여 파일 찾기  김영대 2003/03/07 4792 1189
607   [네트웍/인터넷] 모든 TCP/IP interfaces 의 IP/Netmask 구하기  김영대 2003/03/07 5712 1257
606   [데이터베이스] 몇가지 BDE 환경정보 구하기  김영대 2003/03/07 4448 1175
605   [일반/컴포넌트] 명령행 인자(command line argument) 사용하기  김영대 2003/03/05 4970 1332
604   [일반/컴포넌트] 명령행 인자 받아오기  김영대 2003/03/05 7285 1885
603   [일반/컴포넌트] 메인메뉴가 팝업될때 이벤트를 탈수있는방법  김영대 2003/03/07 6600 1724
602   [시스템] 메모리 부하(load)량 측정해 보기  김영대 2003/03/05 5331 1273
601   [윈도우즈 API] 메모(TMemo)의 커서(캐럿)모양 바꾸기  김영대 2003/03/05 5025 1925
600   [일반/컴포넌트] 메뉴의 잘못된 accelerator 를 선택했을때  김영대 2003/03/05 6428 1829
599   [일반/컴포넌트] 메뉴 아이템의 동적 추가와 그림넣기  김영대 2003/03/04 7969 1270
598   [시스템] 마이크 볼륨 조절하기  김영대 2003/03/06 4666 1288
597   [일반/컴포넌트] 마우스커서를 특정위치로 이동시키기  김영대 2003/03/05 5922 1214
596   [시스템] 마우스의 좌/우 기능설정과 버튼갯수 알기  김영대 2003/03/06 7493 2033
595   [시스템] 마우스의 좌,우 버튼의 동작 바꾸기  김영대 2003/03/07 4291 1204
594   [윈도우즈 API] 마우스의 이동범위 제한하기  김영대 2003/03/05 6032 1494
  [윈도우즈 API] 마우스의 모양 바꾸고 이동범위 제한하기  김영대 2003/03/05 5132 1267
592   [일반/컴포넌트] 마우스영역 제어하기  김영대 2003/03/05 3697 984
591   [일반/컴포넌트] 마우스를 특정 콤포넌트 위로 위치시키기  김영대 2003/03/05 4351 1113
590   [일반/컴포넌트] 마우스로 ProgressBar의 Position 바꾸기  김영대 2006/02/28 5327 1372
589   [일반/컴포넌트] 마우스가 폼위에 있는지 여부를 알아내려면...  김영대 2003/03/05 5295 1447
588   [시스템] 마우스가 설치되어 있는지 검사하기  김영대 2003/03/07 6894 1848
587   [시스템] 마우스 포인터 속도 바꾸기  김영대 2003/03/06 5060 1259
586   [시스템] 마우스 포인터 속도 구하기  김영대 2003/03/06 5583 1720
585   [일반/컴포넌트] 마우스 커서 보이기/감추기  김영대 2003/03/05 6315 1698
584   [시스템] 마우스 자취(trails)의 갯수 조정하기  김영대 2003/03/06 5957 1844
583   [윈도우즈 API] 마우스 위치의 콘트롤(콤포넌트)을 조사하기  김영대 2003/03/07 4642 1121
582   [윈도우즈 API] 마우스 위치(Desktop)의 색상값 구하기  김영대 2003/03/05 6305 1590
581   [시스템] 마우스 아래의 윈도우 핸들 구하기  김영대 2004/07/24 9451 1984
580   [시스템] 마우스 두 번 누르기 속도 조정하기  김영대 2003/03/06 6027 1832
579   [일반/컴포넌트] 리스트뷰에서 동적으로 칼럼삭제하기  김영대 2003/03/05 5370 1412
578   [일반/컴포넌트] 루틴의 처리시간(경과시간) 구하기  김영대 2003/03/05 4280 1110
577   [시스템] 로컬 가상 드라이버(substitution device) 만들고 제거하기  김영대 2004/07/25 6143 1335
576   [일반/컴포넌트] 레코드 구조를 배열요소로 갖는 정적인 배열  김영대 2003/03/05 4076 1099
575   [윈도우즈 API] 레지스트리의 특정키를 파일로 저장/복원하기  김영대 2003/03/07 6600 1490
574   [윈도우즈 API] 레지스트리의 변경여부 알리는 2가지 방법  김영대 2003/03/06 4775 1284
573   [일반/컴포넌트] 레지스트리의 기본 RootKey 바꾸기  김영대 2003/03/05 4222 1277
572   [일반/컴포넌트] 레지스트리의 "(기본값)" 에 읽고/쓰기  김영대 2003/03/07 3999 1132

[1][2][3][4][5][6][7][8][9] 10 ..[25] [다음 10개]
 

Copyright 1999-2022 Zeroboard / skin by zero