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

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


Category

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

// 아래 예제는 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.






411   [시스템] 디스크의 남은 용량 등등...  김영대 2003/03/05 5231 1426
410   [시스템] 디스플레이 어댑터 목록 구하기  김영대 2004/08/11 4636 1235
409   [시스템] 떠 있는 프로그램 죽이기...  김영대 2003/03/04 6309 1490
408   [윈도우즈 API] 떠다니는 윈도우  김영대 2003/03/05 4611 1234
407   [COM/OLE] 떠있는 모든 Internet Explorer 를 강제 Refresh 시키기  김영대 2004/09/20 5094 1313
406   [COM/OLE] 떠있는 모든 Microsoft Internet Explorer 의 html 불러오기  김영대 2003/03/30 5861 1444
405   [윈도우즈 API] 떠있는 모든 Microsoft Internet Explorer 죽이기  김영대 2003/03/29 4705 1324
404   [윈도우즈 API] 레지스트리 전체 검색하기  김영대 2003/03/07 4220 1141
403   [윈도우즈 API] 레지스트리(registry)를 바꾼후...  김영대 2003/03/05 4714 1301
402   [윈도우즈 API] 레지스트리가 변경된 사실을 알리려면...  김영대 2003/03/06 4526 1209
401   [일반/컴포넌트] 레지스트리를 사용하는 사용자 함수 만들어 보기  구창민 2003/03/14 4907 1127
400   [일반/컴포넌트] 레지스트리의 "(기본값)" 에 읽고/쓰기  김영대 2003/03/07 4005 1138
399   [일반/컴포넌트] 레지스트리의 기본 RootKey 바꾸기  김영대 2003/03/05 4223 1278
398   [윈도우즈 API] 레지스트리의 변경여부 알리는 2가지 방법  김영대 2003/03/06 4786 1286
397   [윈도우즈 API] 레지스트리의 특정키를 파일로 저장/복원하기  김영대 2003/03/07 6621 1495
396   [일반/컴포넌트] 레코드 구조를 배열요소로 갖는 정적인 배열  김영대 2003/03/05 4090 1099
395   [시스템] 로컬 가상 드라이버(substitution device) 만들고 제거하기  김영대 2004/07/25 6254 1337
394   [일반/컴포넌트] 루틴의 처리시간(경과시간) 구하기  김영대 2003/03/05 4301 1110
393   [일반/컴포넌트] 리스트뷰에서 동적으로 칼럼삭제하기  김영대 2003/03/05 6958 1412
392   [시스템] 마우스 두 번 누르기 속도 조정하기  김영대 2003/03/06 6048 1832
391   [시스템] 마우스 아래의 윈도우 핸들 구하기  김영대 2004/07/24 9669 4048
390   [윈도우즈 API] 마우스 위치(Desktop)의 색상값 구하기  김영대 2003/03/05 6332 1590
389   [윈도우즈 API] 마우스 위치의 콘트롤(콤포넌트)을 조사하기  김영대 2003/03/07 4662 1122
388   [시스템] 마우스 자취(trails)의 갯수 조정하기  김영대 2003/03/06 5977 1845
387   [일반/컴포넌트] 마우스 커서 보이기/감추기  김영대 2003/03/05 6344 1700
386   [시스템] 마우스 포인터 속도 구하기  김영대 2003/03/06 5598 1722
385   [시스템] 마우스 포인터 속도 바꾸기  김영대 2003/03/06 5075 1260
384   [시스템] 마우스가 설치되어 있는지 검사하기  김영대 2003/03/07 6908 1849
383   [일반/컴포넌트] 마우스가 폼위에 있는지 여부를 알아내려면...  김영대 2003/03/05 5312 1447
382   [일반/컴포넌트] 마우스로 ProgressBar의 Position 바꾸기  김영대 2006/02/28 5344 1372
381   [일반/컴포넌트] 마우스를 특정 콤포넌트 위로 위치시키기  김영대 2003/03/05 4360 1113
380   [일반/컴포넌트] 마우스영역 제어하기  김영대 2003/03/05 3710 985
  [윈도우즈 API] 마우스의 모양 바꾸고 이동범위 제한하기  김영대 2003/03/05 5145 1268
378   [윈도우즈 API] 마우스의 이동범위 제한하기  김영대 2003/03/05 6050 1496
377   [시스템] 마우스의 좌,우 버튼의 동작 바꾸기  김영대 2003/03/07 4310 1207
376   [시스템] 마우스의 좌/우 기능설정과 버튼갯수 알기  김영대 2003/03/06 7501 2033
375   [일반/컴포넌트] 마우스커서를 특정위치로 이동시키기  김영대 2003/03/05 5948 1216
374   [시스템] 마이크 볼륨 조절하기  김영대 2003/03/06 4679 1289
373   [일반/컴포넌트] 메뉴 아이템의 동적 추가와 그림넣기  김영대 2003/03/04 7982 1270
372   [일반/컴포넌트] 메뉴의 잘못된 accelerator 를 선택했을때  김영대 2003/03/05 6436 1829

[이전 10개] [1]..[11][12][13][14] 15 [16][17][18][19][20]..[25] [다음 10개]
 

Copyright 1999-2023 Zeroboard / skin by zero