Declaration
TDRect = record
  case Integer of
    0: (Left, Top, Right, Bottom: Double);
    1: (TopLeft: TDPoint; BottomRight: TDPoint);
    property Width: Double;
    property Height: Double;
    procedure Fill(aLeft, aTop, aRight, aBottom: Double);
    function ToRect(): TRect;
    procedure Offset(XOffset, YOffset: Double);
    class function Empty(): TDRect; static;
end;
Description
A rect type that supports real values.
The following operations are supported:
if drect = drect then...
if drect <> drect then...
drect := TDRect( MyRect );
MyRect := drect.ToRect();