(7) คลานรูปของไอคอน (ไอคอน)
สร้าง Form3 ใหม่บันทึกเป็น Capture3.pas ตั้งค่าคุณสมบัติทั้งสี่ของแอตทริบิวต์ Bordericons เป็นเท็จ
Borderstyle ถูกตั้งค่าเป็น bsnone, formstyle ถูกตั้งค่าเป็น fsstayontop
ตัวแปรส่วนตัวหนึ่งตัว: fdragging: บูลีน;
การจับภาพหน่วย 3;
ส่วนต่อประสาน
ใช้
Windows, ข้อความ, sysutils, ตัวแปร, คลาส, กราฟิก, การควบคุม, รูปแบบ,
บทสนทนา;
พิมพ์
tform3 = คลาส (tform)
โพรซีเดอร์แบบฟอร์ม (ผู้ส่ง: tobject);
โพรซีเดอร์ Formmousedown (ผู้ส่ง: tobject; ปุ่ม: tmouseButton;
SHIFT: TSHIFTSTATE;
ขั้นตอนการจัดรูปแบบ (ผู้ส่ง: tobject; shift: tshiftstate;
x, y: จำนวนเต็ม);
Procedure FormMouseUp (ผู้ส่ง: tobject; ปุ่ม: tmouseButton;
SHIFT: TSHIFTSTATE;
ขั้นตอนการสร้างสรรค์ (ผู้ส่ง: tobject);
FORMDESTROY ขั้นตอน (ผู้ส่ง: TOBJECT);
รูปแบบขั้นตอน (ผู้ส่ง: tobject);
ส่วนตัว
fdragging: บูลีน;
สาธารณะ
Frect: Trect;
FBMP: TBITMAP;
จบ;
วาจา
Form3: TFORM3;
การดำเนินการ
{$ r *.dfm}
// สร้างเคอร์เซอร์เคอร์เซอร์แบบกำหนดเองใหม่และวางไว้ในทรัพยากร Capture3.res
// ในไฟล์มีเส้นขอบสี่เหลี่ยมสีขาว 32*32 เพื่อระบุช่วงของการจับภาพ
ขั้นตอน tform3.FormCreate (ผู้ส่ง: tobject);
VAR ADC: HDC;
const crox = -19;
เริ่ม
Screen.Cursors [CRBOX]: = LoadCursor (Hinstance, 'Cursor_2');
เคอร์เซอร์: = CRBOX;
fbmp: = tbitmap.create;
fbmp.width: = screen.width;
fbmp.height: = screen.height;
ADC: = getDC (0);
bitblt (fbmp.canvas.handle, 0,0, หน้าจอ, หน้าจอ, หน้าจอ, adc, 0,0, srccopy);
ปล่อย (0, ADC);
setBounds (0,0, screen.width, screen.height);
จบ;
ขั้นตอน tform3.FormMousedOwn (ผู้ส่ง: tobject; ปุ่ม: tmouseButton;
SHIFT: TSHIFTSTATE;
เริ่ม
ถ้าปุ่ม mbleft = เริ่มต้น
fdragging: = true;
setRect (frect, x, y, x+32, y+32);
Canvas.DrawFocusRect (FRECT);
จบ;
จบ;
ขั้นตอน TFORM3.FormMousemove (ผู้ส่ง: tobject; Shift: TSHIFTSTATE;
x, y: จำนวนเต็ม);
เริ่ม
ถ้า fdragging เริ่มต้น
Canvas.DrawFocusRect (FRECT);
FRECT.LEFT: = X;
frect.top: = y;
FRECT.RIGHT: = X+32;
FRECT.BOTTOM: = Y+32;
Canvas.DrawFocusRect (FRECT);
จบ;
จบ;
ขั้นตอน tform3.FormMouseUp (ผู้ส่ง: tobject; ปุ่ม: tmouseButton;
SHIFT: TSHIFTSTATE;
เริ่ม
modalresult: = mrok;
จบ;
ขั้นตอน tform3.formactivate (ผู้ส่ง: tobject);
const crhand = -18;
เริ่ม
Screen.cursors [Crhand]: = loadcursor (Hinstance, pchar ('Cursor_1'));
เคอร์เซอร์: = crhand;
จบ;
ขั้นตอน tform3.FormDestroy (ผู้ส่ง: tobject);
เริ่ม
fbmp.free;
Screen.cursor: = Crdefault;
จบ;
ขั้นตอน TFORM3.FormPaint (ผู้ส่ง: TOBJECT);
เริ่ม
Canvas.Draw (0,0, FBMP);
จบ;
จบ.