(7) kriechen Sie die Form des Symbols (Symbol)
Erstellen Sie ein neues Formular3, speichern Sie als Capture3.pas. Setzen Sie die vier Eigenschaften der Attribut -Bordericons auf false.
BorderSyle ist auf bsnone eingestellt, FormStyle ist auf fSstayontop eingestellt.
Eine private Variable: FDRAGGing: Boolean;
Einheit capture3;
Schnittstelle
Verwendung
Fenster, Nachrichten, Systeme, Varianten, Klassen, Grafiken, Steuerelemente, Formulare,
Dialoge;
Typ
Tform3 = Klasse (tform)
Prozedur Formcreate (Absender: Tobject);
Verfahrensformmousedown (Absender: Tobject; Taste: TMouseButton;
Verschiebung: TShiftState; x, y: Ganzzahl);
Verfahrensformmousemove (Absender: Tobject; Verschiebung: TShiftState;
X, y: Ganzzahl);
Prozedur FormMouseUp (Absender: Tobject; Taste: TMouseButton;
Verschiebung: TShiftState; x, y: Ganzzahl);
Prozedur formActivate (Absender: Tobject);
VerfahrensformularDestroy (Absender: Tobject);
Verfahrensformung (Absender: Tobject);
Privat
FDRAGGING: Boolean;
öffentlich
FRECT: TRECT;
FBMP: tbitmap;
Ende;
var
Form3: tform3;
Durchführung
{$ R *.dfm}
// Erstellen Sie einen neuen benutzerdefinierten Cursor Cursor_2 und platzieren Sie ihn in Capture3.res -Ressource
// In der Datei gibt es einen weißen rechteckigen Rand von 32*32, um den Bereich der Erfassung anzuzeigen.
Prozedur tForm3.FormCreate (Absender: Tobject);
var adc: hdc;
const Crbox = -19;
Beginnen
Screen.cursors [crbox]: = loadCursor (Hinstance, 'Cursor_2');
Cursor: = Crbox;
FBMP: = tbitmap.create;
fbmp.width: = screen.width;
fbmp.height: = screen.height;
ADC: = getdc (0);
Bitblt (fbmp.canvas.handle, 0,0, screen.width, screen.height, adc, 0,0, srccopy);
RelectC (0, ADC);
Setbounds (0,0, screen.width, screen.height);
Ende;
Prozedur TForm3.FormmouseDown (Absender: Tobject; Taste: tmouseButton;
Verschiebung: TShiftState; x, y: Ganzzahl);
Beginnen
Wenn Mbleft = Button dann beginnen
fdagging: = wahr;
SetRect (FRECT, X, Y, X+32, Y+32);
Canvas.DrawfocusRect (FRECT);
Ende;
Ende;
Prozedur TForm3.FormMousemove (Absender: Tobject; Shift: TShiftState;
X, y: Ganzzahl);
Beginnen
Wenn FDRAGGing dann beginnen
Canvas.DrawfocusRect (FRECT);
frect.left: = x;
frect.top: = y;
frect.Right: = x+32;
frect.bottom: = y+32;
Canvas.DrawfocusRect (FRECT);
Ende;
Ende;
Prozedur TForm3.FormMouseUp (Absender: Tobject; Taste: tmouseButton;
Verschiebung: TShiftState; x, y: Ganzzahl);
Beginnen
ModalResult: = MROK;
Ende;
Prozedur tForm3.FormActivate (Absender: Tobject);
const crhand = -18;
Beginnen
Screen.cursors [crhand]: = loadCursor (Hinstance, pchar ('cursor_1'));
Cursor: = Crhand;
Ende;
Prozedur tForm3.FormDestroy (Absender: Tobject);
Beginnen
fbmp.free;
Screen.cursor: = crdefault;
Ende;
Prozedur tForm3.ForMPaint (Absender: Tobject);
Beginnen
Canvas.draw (0,0, fbmp);
Ende;
Ende.