RAD Studio VCL Reference
|
Specifies the TCanvas object that presents a drawing surface for the control.
property Canvas: TCanvas;
__property TCanvas Canvas;
Use the properties of the TCanvas object to draw or paint on the surface of the control. Canvas encapsulates a Windows device context, providing all the tools and methods needed for drawing and painting.
Canvas is a protected property that is usually redeclared as public in descendants of TCustomControl.
C++ Examples:
/* The following code uses the bitmaps in an image list component to draw the contents of each cell in a draw grid. It draws a focus rectangle around the cell that has focus. goDrawFocusSelect in the DrawGrid Options parameter must be True to set focus on a cell. The ImageList Draw method must be called after DrawFocusRect. The OnSelectCell event handler must implemented to return true. */ void __fastcall TForm1::DrawGrid1DrawCell( TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { long index = ARow * DrawGrid1->ColCount + ACol; DrawGrid1->Canvas->Brush->Color = clBackground; DrawGrid1->Canvas->FillRect(Rect); if (State.Contains(gdFocused)) { DrawGrid1->Canvas->DrawFocusRect(Rect); Label1->Caption = "Cell " + IntToStr(int(index)) + " has the focus."; } ImageList1->Draw( DrawGrid1->Canvas, Rect.Left, Rect.Top, index, True); } void __fastcall TForm1::DrawGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect) { CanSelect= True; }
/* The following code uses ClientRect to find and draw a line from the top left to the bottom right of the current control. Select a TControl in the ListBox list. This example assumes that the current object is a descendent of TControl and has a public Canvas property. */ { TPoint APoint = Point(X, Y); int Index = ListBox1->ItemAtPos(APoint, True); TStringGrid *myStringGrid; TClass ClassRef = ListBox1->Items->Objects[Index]->ClassType(); if (String(ClassRef->ClassName()) == "TStringGrid") { myStringGrid = dynamic_cast<TStringGrid *>(ListBox1->Items->Objects[Index]); // make sure we are using the TControls canvas and not the from's! myStringGrid->Canvas->MoveTo(myStringGrid->ClientRect.Left, myStringGrid->ClientRect.Top); myStringGrid->Canvas->LineTo(myStringGrid->ClientRect.Right, myStringGrid->ClientRect.Bottom); myStringGrid = NULL; } }
Delphi Examples:
{ The following code uses the bitmaps in an image list component to draw the contents of each cell in a draw grid. It draws a focus rectangle around the cell that has focus. goDrawFocusSelect in the DrawGrid Options parameter must be True to set focus on a cell. The ImageList Draw method must be called after DrawFocusRect. The OnSelectCell event handler must implemented to return true. } procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var index: Integer; begin index := ARow * DrawGrid1.ColCount + ACol; DrawGrid1.Canvas.Brush.Color := clWhite; DrawGrid1.Canvas.FillRect(Rect); if (gdFocused in State) then begin DrawGrid1.Canvas.DrawFocusRect(Rect); Label1.Caption:= 'Cell ' + InttoStr(index) + ' has the focus.'; end; ImageList1.Draw(DrawGrid1.Canvas,Rect.Left,Rect.Top,index, True); end; procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin CanSelect:= True; end;
{ The following code uses ClientRect to find and draw a line from the top left to the bottom right of the current control. Select a TControl in the ListBox list. This example assumes that the current object is a descendent of TControl and has a public Canvas property. } if (ListBox1.Items.Objects[Index] is TStringGrid) then begin myStringGrid:= (ListBox1.Items.Objects[Index] as TStringGrid); with myStringGrid.ClientRect do begin // make sure we are using the TControl's canvas and not the form's! myStringGrid.Canvas.MoveTo(Left, Top); myStringGrid.Canvas.LineTo(Right, Bottom); end; myStringGrid:= nil; end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|