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

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


Category

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

// 아래 예제는 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 5365 1456
410   [시스템] 디스플레이 어댑터 목록 구하기  김영대 2004/08/11 4835 1265
409   [시스템] 떠 있는 프로그램 죽이기...  김영대 2003/03/04 6632 1560
408   [윈도우즈 API] 떠다니는 윈도우  김영대 2003/03/05 4802 1289
407   [COM/OLE] 떠있는 모든 Internet Explorer 를 강제 Refresh 시키기  김영대 2004/09/20 5224 1346
406   [COM/OLE] 떠있는 모든 Microsoft Internet Explorer 의 html 불러오기  김영대 2003/03/30 6019 1470
405   [윈도우즈 API] 떠있는 모든 Microsoft Internet Explorer 죽이기  김영대 2003/03/29 4896 1369
404   [윈도우즈 API] 레지스트리 전체 검색하기  김영대 2003/03/07 4396 1180
403   [윈도우즈 API] 레지스트리(registry)를 바꾼후...  김영대 2003/03/05 4884 1348
402   [윈도우즈 API] 레지스트리가 변경된 사실을 알리려면...  김영대 2003/03/06 4661 1248
401   [일반/컴포넌트] 레지스트리를 사용하는 사용자 함수 만들어 보기  구창민 2003/03/14 5153 1237
400   [일반/컴포넌트] 레지스트리의 "(기본값)" 에 읽고/쓰기  김영대 2003/03/07 4184 1192
399   [일반/컴포넌트] 레지스트리의 기본 RootKey 바꾸기  김영대 2003/03/05 4345 1299
398   [윈도우즈 API] 레지스트리의 변경여부 알리는 2가지 방법  김영대 2003/03/06 4979 1329
397   [윈도우즈 API] 레지스트리의 특정키를 파일로 저장/복원하기  김영대 2003/03/07 6850 1551
396   [일반/컴포넌트] 레코드 구조를 배열요소로 갖는 정적인 배열  김영대 2003/03/05 4229 1134
395   [시스템] 로컬 가상 드라이버(substitution device) 만들고 제거하기  김영대 2004/07/25 8358 1399
394   [일반/컴포넌트] 루틴의 처리시간(경과시간) 구하기  김영대 2003/03/05 4445 1145
393   [일반/컴포넌트] 리스트뷰에서 동적으로 칼럼삭제하기  김영대 2003/03/05 7125 1438
392   [시스템] 마우스 두 번 누르기 속도 조정하기  김영대 2003/03/06 6212 1863
391   [시스템] 마우스 아래의 윈도우 핸들 구하기  김영대 2004/07/24 13494 4155
390   [윈도우즈 API] 마우스 위치(Desktop)의 색상값 구하기  김영대 2003/03/05 6546 1621
389   [윈도우즈 API] 마우스 위치의 콘트롤(콤포넌트)을 조사하기  김영대 2003/03/07 4842 1159
388   [시스템] 마우스 자취(trails)의 갯수 조정하기  김영대 2003/03/06 6164 1896
387   [일반/컴포넌트] 마우스 커서 보이기/감추기  김영대 2003/03/05 6504 1724
386   [시스템] 마우스 포인터 속도 구하기  김영대 2003/03/06 5769 1758
385   [시스템] 마우스 포인터 속도 바꾸기  김영대 2003/03/06 5254 1295
384   [시스템] 마우스가 설치되어 있는지 검사하기  김영대 2003/03/07 7077 1890
383   [일반/컴포넌트] 마우스가 폼위에 있는지 여부를 알아내려면...  김영대 2003/03/05 5449 1476
382   [일반/컴포넌트] 마우스로 ProgressBar의 Position 바꾸기  김영대 2006/02/28 5517 1416
381   [일반/컴포넌트] 마우스를 특정 콤포넌트 위로 위치시키기  김영대 2003/03/05 4464 1136
380   [일반/컴포넌트] 마우스영역 제어하기  김영대 2003/03/05 3856 1025
  [윈도우즈 API] 마우스의 모양 바꾸고 이동범위 제한하기  김영대 2003/03/05 5318 1301
378   [윈도우즈 API] 마우스의 이동범위 제한하기  김영대 2003/03/05 6233 1531
377   [시스템] 마우스의 좌,우 버튼의 동작 바꾸기  김영대 2003/03/07 4459 1230
376   [시스템] 마우스의 좌/우 기능설정과 버튼갯수 알기  김영대 2003/03/06 7642 2071
375   [일반/컴포넌트] 마우스커서를 특정위치로 이동시키기  김영대 2003/03/05 6222 1247
374   [시스템] 마이크 볼륨 조절하기  김영대 2003/03/06 4871 1336
373   [일반/컴포넌트] 메뉴 아이템의 동적 추가와 그림넣기  김영대 2003/03/04 8130 1309
372   [일반/컴포넌트] 메뉴의 잘못된 accelerator 를 선택했을때  김영대 2003/03/05 6536 1857

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

Copyright 1999-2024 Zeroboard / skin by zero