(7) زحف شكل أيقونة (رمز)
قم بإنشاء نموذج جديد 3 ، حفظ باسم capture3.pas. تعيين خصائص الأربعة للحدود السمة على خطأ.
تم تعيين BorderStyle على Bsnone ، يتم تعيين Formstyle على FSStayontop.
متغير خاص واحد: Fdragging: Boolean ؛
وحدة التقاط 3 ؛
واجهة
يستخدم
Windows ، الرسائل ، sysutils ، المتغيرات ، الفئات ، الرسومات ، عناصر التحكم ، النماذج ،
مربعات حوار
يكتب
tform3 = فئة (tform)
Formcreate الإجراء (المرسل: TOBJECT) ؛
Formmousedown الإجراء (المرسل: TOBJECT ؛ زر: TMOUSEBUTTON ؛
Shift: TshiftState ؛
FormMouseMove الإجراء (المرسل: TOBJECT ؛ Shift: TshiftState ؛
x ، y: عدد صحيح) ؛
FormMouseup الإجراء (المرسل: TOBJECT ؛ زر: TMOUSEBUTTON ؛
Shift: TshiftState ؛
تكوين الإجراء (المرسل: TOBJECT) ؛
الإجراء FormDestroy (المرسل: tobject) ؛
Formpaint الإجراء (المرسل: tooject) ؛
خاص
fdragging: منطقية ؛
عام
FRECT: TRECT ؛
FBMP: tbitmap ؛
نهاية؛
var
form3: tform3 ؛
تطبيق
{$ r *.dfm}
// قم بإنشاء مؤشر مخصص جديد مؤشر incursor_2 ووضعه في موارد capture3.res
// في الملف ، هناك حدود مستطيلة بيضاء تبلغ 32*32 للإشارة إلى نطاق الالتقاط.
الإجراء tform3.formcreate (المرسل: tobject) ؛
var ADC: HDC ؛
const crbox = -19 ؛
يبدأ
screen.cursors [crbox]: = loadcursor (hinstance ، 'cursor_2') ؛
المؤشر: = crbox ؛
fbmp: = tbitmap.create ؛
fbmp.width: = screen.width ؛
fbmp.hight: = screen.hight ؛
ADC: = getDC (0) ؛
bitblt (fbmp.canvas.handle ، 0،0 ، screen.width ، screen.height ، adc ، 0،0 ، srccopy) ؛
تم إصداره (0 ، ADC) ؛
setBounds (0،0 ، screen.width ، screen.hight) ؛
نهاية؛
الإجراء tform3.formmousedown (المرسل: TOBJECT ؛ زر: TMOUSEBUTTON ؛
Shift: TshiftState ؛
يبدأ
إذا mbleft = زر ثم ابدأ
fdragging: = صحيح ؛
SetRect (FRECT ، X ، Y ، X+32 ، Y+32) ؛
canvas.drawfocusrect (FRECT) ؛
نهاية؛
نهاية؛
الإجراء tform3.formmouseMove (المرسل: TOBJECT ؛ Shift: TshiftState ؛
x ، y: عدد صحيح) ؛
يبدأ
إذا كان fddragging ثم ابدأ
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) ؛
نهاية؛
نهاية.