Poniższy program pozwala na rysowanie kursorem myszy dowolnych kształtów. Ja chciałbym rysować ramkę prostokąta - jego lewy górny róg ma się pojawić w miejscu gdzie wcisnę lewy klawisz myszy i ramka będzie rysowana ro momentu zwolnienia lewego klawisza myszy. Mówię tutaj o ramce, a nie prostokącie, ponieważ wnętrze tej ramki ma być przezroczyste.

 
TForm1 *Form1;

POINT pozycja;
bool rysuj;
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
        GetCursorPos(&pozycja);
        Label7->Caption = IntToStr(pozycja.x) + ":" + IntToStr(pozycja.y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
//obszar rysowania i pozycję początkową
Canvas->FrameRect(ClientRect);
Canvas->MoveTo(X,Y);
//znacznik rysowania, aby mysz zostawiła slad
rysuj = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
// zwolniono przycisk myszy - koniec rysowania
Canvas->MoveTo(X,Y);
rysuj = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
if (rysuj) // przesunięto mysz
Canvas->LineTo(X,Y);
}
//---------------------------------------------------------------------------