DelphiVCL.Canvas provides an abstract drawing space for objects that must render their own images.
Use DelphiVCL.Canvas as a drawing surface for objects that draw an image of themselves. Standard window controls such as edit controls or list boxes do not require a canvas, as they are drawn by the system.
DelphiVCL.Canvas provides properties, events, and methods that assist in creating an image by:
- Specifying the type of brush, pen, and font to use.
- Drawing and filling a variety of shapes and lines.
- Writing text.
- Rendering graphic images.
- Enabling a response to changes in the current image.
Let’s browse all the properties, methods, and built-in properties of the DelphiVCL.Canvas using dir() command:
1 2 3 |
import DelphiVCL dir(DelphiVCL.Canvas) |
See the responses in our Windows command prompt:
Here is the working example of the implementation of DelphiVCL.Canvas:
1 2 3 4 |
def grdTestDrawCell(Sender, Col, Row, Rect, State): if gdSelected in State: Sender.Canvas.Brush.Color = clBlue # 0x00ff0000 # blue Sender.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, "%d @ %d" % (Col, Row)) |
To see the result, let’s run the complete script:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
from DelphiVCL import * # Create a Class to build a basic Form class MainForm(Form): def __init__(self, Owner): self.Caption = "Introduction to VCL Components" self.Name = "BaseForm" self.SetBounds(10, 10, 500, 450) # Create a Main Panel component pnlMain = CreateComponent('TPanel',Owner) pnlMain.SetProps(Parent=self, Caption="",align = "alClient", Name = "MainPanel") # Page control creation pgConMain = PageControl(pnlMain) pgConMain.Name = "MyPageControl" pgConMain.Parent = pnlMain pgConMain.Align = "alClient" # Tabsheet one pgOne = TabSheet(pnlMain) pgOne.PageControl = pgConMain pgOne.Caption = "Tab 1" # Draw grid grdTest = DrawGrid(pgOne) grdTest.Parent = pgOne grdTest.SetBounds(20, 20, 420, 180) def grdTestDrawCell(Sender, Col, Row, Rect, State): if gdSelected in State: Sender.Canvas.Brush.Color = clBlue # 0x00ff0000 # blue Sender.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, "%d @ %d" % (Col, Row)) def grdTestSelectCell(Sender, Col, Row, CanSelect): if Col == 2 and Row == 2: CanSelect.Value = False grdTest.OnDrawCell = grdTestDrawCell grdTest.OnSelectCell = grdTestSelectCell # Initialize your application def main(): Application.Initialize() Application.Title = "MyDelphiApp" f = MainForm(Application) f.Show() FreeConsole() Application.Run() Application.Destroy() main() |
The result:
Check out DelphiVCL which easily allows you to build GUIs for Windows using Python.