unit Blotter2;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, ExtCtrls;
type
TmeiBlotter = class(TPanel)
private
{ Private declarations }
protected
{ Protected declarations }
procedure Paint; override;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
end;
procedure Register;
implementation
{
1. A way to get the component to know what events should
trigger it
2. A way to get it to paint at design time
3. A color property
4. A way to publish the PaintBlotter method.
}
constructor TmeiBlotter.Create(AOwner: TComponent);
Begin
Inherited Create(Aowner);
if (csDesigning in ComponentState) then
begin
BorderWidth := 8;
Color := clGreen;
Align := alClient;
end;
End;
procedure TmeiBlotter.Paint;
Begin
With Canvas Do
Begin
Brush.Color := Color; {BlotterColor;}
Rectangle(0,0,Width,Height);
{**************************************************}
{draw vertical lines on left side of form}
Pen.Color := clBlack;
Moveto(0,0); {column,row}
Lineto(0,Height);
Pen.Color := clSilver;
Moveto(0+1,0); {column,row}
Lineto(0+1,Height);
Pen.Color := clBlack;
Moveto(0+4,0); {column,row}
Lineto(0+4,Height);
{draw vertical line on right side of form}
Pen.Color := clSilver;
Moveto(Width-4,0);
Lineto(Width-4,Height);
Pen.Color := clBlack;
Moveto(Width-1,0);
Lineto(Width-1,Height);
{draw horizontal line on top side of form}
Pen.Color := clBlack;
Moveto(0,0);
Lineto(Width,0);
Pen.Color := clSilver;
Moveto(0,0+1);
Lineto(Width,0+1);
Pen.Color := clBlack;
Moveto(0,0+4);
Lineto(Width,0+4);
{draw horizontal line on bottom side of form}
Pen.Color := clSilver;
Moveto(0,Height-4);
Lineto(Width,Height-4);
Pen.Color := clBlack;
Moveto(0,Height-1);
Lineto(Width,Height-1);
{***************************************************}
{draw blotter outer corners}
Pen.Color := clYellow;
{Upper Left vertical and horizontal}
MoveTo(0+1,0+1);
LineTo(0+1,15);
Moveto(0+1,0+1);
LineTo(15,0+1);
{Lower Left vertical only }
MoveTo(0+1,Height-1);
LineTo(0+1,Height-16);
{Lower Right}
Pen.Color := clBlack;
MoveTo(Width-2,Height-1);
LineTo(Width-15,Height-1);
MoveTo(Width-1,Height-1);
LineTo(Width-1,Height-15);
Pen.Color := clYellow;
MoveTo(Width-15,Height-1);
LineTo(Width-16,Height-1);
MoveTo(Width-1,Height-15);
LineTo(Width-1,Height-16);
{Upper Right, horizontal only}
MoveTo(Width-15, 1);
LineTo(Width-1, 1);
{************************************************}
{draw blotter inner corners}
Pen.Color := clBlack;
Brush.Color := clBlack;
{Upper Left}
MoveTo(0+5,0+5);
LineTo(0+5,6+6);
Moveto(0+5,0+5);
LineTo(6+6,0+5);
{Lower Left}
MoveTo(0+5,Height-5);
LineTo(0+5,(Height-5)-7); {draw vert}
Moveto(0+5,Height-5);
LineTo(12,Height-5); {draw horiz}
Pen.Color := clYellow;
MoveTo(0+6,Height-5);
LineTo(11,Height-5);
Pen.Color := clBlack;
{lower right}
Pen.Color := clYellow;
MoveTo(Width-5,Height-5);
LineTo(Width-5,Height-12);
MoveTo(Width-5,Height-5);
LineTo(Width-12,Height-5);
{Upper Right}
Pen.Color := clBlack;
MoveTo(Width-11,5);
LineTo(Width-5,5);
Pen.Color := clYellow;
MoveTo(Width-5,5);
LineTo(Width-5,13);
{************************************************}
{draw the staircase pixels}
Pen.Color := clBlack;
{upper left}
{lower pixels}
MoveTo(0+1,15);
LineTo(0+4,12);
Moveto(2,Height-13);
LineTo(3,Height-12);
Moveto(4,Height-11);
LineTo(4,Height-11);
{upper pixels}
MoveTo(15,0+1);
LineTo(12,0+4);
{lower left}
{upper pixels}
Pen.Color := clYellow;
Moveto(2,Height-14);
LineTo(5,Height-11);
Pen.Color := clBlack;
MoveTo(11,Height-5);
LineTo(15,Height-1);
{lower right}
Pen.Color := clYellow;
MoveTo(Width-15,Height-1);
LineTo(Width-10,Height-6);
MoveTo(Width-1,Height-15);
LineTo(Width-6,Height-10);
{ Upper Right}
Pen.Color := clBlack;
MoveTo(Width-1,16);
LineTo(Width-5,12);
MoveTo(Width-14,2);
LineTo(Width-12,4);
{****************************************************}
{fill in "brass" areas for corners}
Brush.Color := clOlive;
Pen.Color := clOlive;
{upper left}
{fill in large areas}
Rectangle(2,2,5,12);
Rectangle(2,2,12,5);
{fill in upper pixels}
Moveto(12,2);
LineTo(14,2);
Moveto(12,3);
LineTo(13,3);
{fill in lower pixels}
MoveTo(2,12);
LineTo(2,14);
MoveTo(3,12);
LineTo(3,13);
{------------------------}
{lower left}
{fill in large areas}
Rectangle(2,Height-1,12,Height-4);
Rectangle(2,Height-2,5,Height-11);
{fill in upper pixels}
Moveto(2,Height-13);
LineTo(3,Height-12);
Moveto(2,Height-12);
LineTo(4,Height-12);
Moveto(4,Height-11);
LineTo(4,Height-11);
{fill in lower pixels}
MoveTo(12,Height-3);
LineTo(13,Height-2);
MoveTo(14,Height-1);
LineTo(14,Height-1);
MoveTo(12,Height-2);
LineTo(14,Height-2);
{-----------------------}
{lower right}
{fill in large areas}
Rectangle(Width-1,Height-1,Width-11,
Height-4);
Rectangle(Width-1,Height-1,Width-4,Height-11);
{fill in upper pixels}
MoveTo(Width-3,Height-12);
LineTo(Width-1,Height-12);
MoveTo(Width-2,Height-13);
LineTo(Width-1,Height-13);
{fill in lower pixels}
MoveTo(Width-12,Height-3);
LineTo(Width-12,Height-1);
MoveTo(Width-13,Height-2);
LineTo(Width-13,Height-1);
{-----------------------}
{upper right}
{fill in large areas}
Rectangle(Width-11,2,Width-1,5);
Rectangle(Width-1,13,Width-4,2);
{fill in upper pixels}
MoveTo(Width-12,2);
LineTo(Width-12,4);
MoveTo(Width-13,2);
LineTo(Width-13,1);
{fill in lower pixels}
MoveTo(Width-2,13);
LineTo(Width-4,13);
MoveTo(Width-2,14);
LineTo(Width-1,14);
{***************************************************}
{cleanup corner pixels}
Pen.Color := clBlack;
Moveto(0,0);
LineTo(0,10);
{Lower Left}
MoveTo(0,Height-1);
LineTo(13,Height-1);
MoveTo(0,Height-1);
LineTo(0,Height-14);
{Upper Right}
Moveto(Width-1,0);
LineTo(Width-14,0);
Moveto(Width-1,0);
LineTo(Width-1,13);
{Lower Right}
MoveTo(Width-1,Height-1);
LineTo(Width-14,Height-1);
MoveTo(Width-1,Height-1);
LineTo(Width-1,Height-14);
end;
end;
procedure Register;
begin
RegisterComponents('PRIME', [TmeiBlotter]);
end;
end.