In this example, the same rectangle is initialized in five ways to run: 
 
 
 
 
 
    
Unit unit1; interfaceuses windows, messages, sysutils, variants, classes, graphics, controls, forms, dialogs, stdctrls; Type tform1 = Class (tform) button1: tbutton; button2: tbutton; button3: tbutton; button4: tbutton; button5: tbutton; Procedure button1click (Sender: tobject); Procedure upload (Sender: tobject); Procedure button3click (Sender: tobject ); procedure button4click (Sender: tobject); Procedure button5click (Sender: tobject); end; var form1: tform1; implementation {$ R *. DFM} // use the API function: setrectprocedure tform1.button1click (Sender: tobject); var R: trect; begin setrect (R, 20, 20, 80, 80); canvas. pen. color: = clblue; canvas. rectangle (r); end; // use classes. rect Function Procedure tform1.button2click (Sender: tobject); var R: trect; Begin R: = rect (20, 20, 80, 80); canvas. pen. color: = clfuchsia; canvas. rectangle (r); end; // use classes. the rect function is used to synthesize procedure tform1.button3click (Sender: tobject); const pt1: tpoint = (X: 20; Y: 20); pt2: tpoint = (X: 80; y: 80); var R: trect; Begin R: = rect (pt1, pt2); canvas. pen. color: = clskyblue; canvas. rectangle (r); end; // rectangular constant procedure tform1.button4click (Sender: tobject); const R: trect = (left: 20; top: 20; Right: 80; bottom: 80); begin canvas. pen. color: = clteal; canvas. rectangle (r); end; // use classes. bounds function. I prefer this method procedure tform1.button5click (Sender: tobject); var R: trect; Begin R: = bounds (20, 20, 60, 60); canvas. pen. color: = clwhite; canvas. rectangle (r); end.