Вы должны быть МНОГО более конкретным, но это должно привести вас в правильном направлении:
procedure DoMyDrawing(Canvas: TCanvas; L, T, R, B: Integer; Color: TColor);
var
Rec: TRect;
begin
Rec.Left:= L;
Rec.Top:= T;
Rec.Right:= R;
Rec.Bottom:= B;
//SAME AS Rec:= Rect(L, T, R, B);
Canvas.Brush.Color:= Color;
Canvas.Brush.Style:= bsSolid;
Canvas.Pen.Style:= psClear;
Canvas.FillRect(Rec);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DoMyDrawing(Self.Canvas, 10, 10, 50, 50, clNavy);
end;
EDIT:
Я бы рекомендовал использовать TRect вместо 4-х координат (Left, Top, Right и Bottom), потому что TRect включает в себя все 4 из них. Вы также можете прочитать TRect с помощью TopLeft TPoint и BottomRight TPoint.
(я также исправил опечатку выше - Canvas.FillRect(R);
должен был быть Canvas.FillRect(Rec);
)
Вот еще одна версия той же процедуры:
procedure DoMyDrawing(Canvas: TCanvas; const R: TRect; const Color: TColor);
begin
Canvas.Brush.Color:= Color;
Canvas.Brush.Style:= bsSolid;
Canvas.Pen.Style:= psClear;
Canvas.FillRect(R);
end;
Намного проще, не правда ли?
ДРУГОЕ РЕДАКТИРОВАНИЕ:
Также обратите внимание на функцию, которую я использую Rect(Left, Top, Right, Bottom)
- Это тоже упрощает задачу. К сожалению, я видел некоторые стандартные элементы управления VCL, которые имеют события с параметрами с именем Rect: TRect;
, что мешает использовать оригинальную функцию в модуле classes
. Поэтому также избегайте использования переменной с именем Rect
, поскольку она не позволит вам использовать функцию Rect
(которая превращает 4 строки кода в 1).