{************************************************************************* Unit Name: MarkerForm Purpose : Totally transparent form for making notes over other application Author : Vesa Lappalainen Date : 8.2.2001 Changed : Usage : Todo : Make it working *************************************************************************} unit sMarkerForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TFormMarker = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormActivate(Sender: TObject); procedure FormContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); procedure FormDeactivate(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); private public procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; procedure Paint; override; procedure WMEraseBackground(var Msg:TMessage); message WM_ERASEBKGND; end; var FormMarker: TFormMarker; implementation {$R *.DFM} { TForm1 } procedure TFormMarker.Paint; begin // inherited; end; procedure TFormMarker.WMEraseBackground(var Msg: TMessage); begin // end; procedure TFormMarker.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Canvas.Pen.Color := clRed; Canvas.Pen.Width := 3; Canvas.MoveTo(x,y); OnMouseMove := FormMouseMove; end; procedure TFormMarker.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Canvas.LineTo(x,y); end; procedure TFormMarker.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin OnMouseMove := nil; end; procedure TFormMarker.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); begin inherited; Invalidate; end; procedure TFormMarker.FormActivate(Sender: TObject); begin SendToBack; BringToFront; end; procedure TFormMarker.FormContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); begin SendToBack; BringToFront; end; procedure TFormMarker.FormDeactivate(Sender: TObject); begin SendToBack; end; procedure TFormMarker.FormCreate(Sender: TObject); begin SetWindowLong(Handle,GWL_EXSTYLE,GetWindowLong(Handle,GWL_EXSTYLE) or WS_EX_TRANSPARENT); Application.OnActivate := FormActivate; end; procedure TFormMarker.FormKeyPress(Sender: TObject; var Key: Char); begin Application.Minimize; end; end.