Interactive drawing application using Delphi events to track mouse movement and position

unit draw;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ginolib, math, StdCtrls, Spin;
type
  TForm1 = class(TForm)
    SpinEdit1: TSpinEdit;
    SpinEdit2: TSpinEdit;
    ComboBox1: TComboBox;
    Label1: TLabel;
    ComboBox2: TComboBox;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
  private
  bitmap : Tbitmap;
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  myHdc,mynewHdc : Integer;
  mynewdc,mywinHdc : HDC;
  implementation
{$R *.dfm}
procedure TForm1.FormPaint(Sender: TObject);
begin
ControlStyle:=ControlStyle+ [csOpaque];
gFlushGraphics;
mynewHdc:=Integer(bitmap.canvas.Handle);
gMwinUpdateDC(mynewHdc);
canvas.draw(0,0,Bitmap);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Bitmap:=TBitmap.Create;
Bitmap.width:=600;
Bitmap.height:=400;
gOpenGino;
myHdc:=Integer(bitmap.canvas.handle);
gMwindc(GNULL,myHdc);
gDrawLineTo2D(50.0,50.0);
gDrawLineTo2D(20.0,30.0);
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  var
  newp : GPOINT;
  begin
gEnqPosofPixel(x,y,newp);
gDrawLineTo2D(newp.x,newp.y);
Invalidate;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
SpinEdit1.Value:=x;
SpinEdit2.Value:=y;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
gCloseGino;
Bitmap.Free;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
gSetLineColour(ComboBox1.ItemIndex+1);
Invalidate;
end;
procedure TForm1.ComboBox2Change(Sender: TObject);
begin
gSetBrokenLine(ComboBox2.ItemIndex);
Invalidate;
end;
end.