[Back to OOP SWAG index] [Back to Main SWAG index] [Original]

    {
    Buttons are best done in TurboVision or ObjectWindows.  Re-read the
    sections dealing with the above in your manual and/or references.

    If you want to use TurboVision (for the DOS environment), this is a unit
    for a derived object type I created to ease creation of dialog boxes.
    You might want to use it in addition to the TurboVision units:
    }

    Unit XBoxes;

    Interface

    Uses Dialogs, Objects, Menus, Views;

    Type
      XDialog = Object(TDialog)
         Procedure TxtEntry(x,y : Byte; txt : string; max : Byte);
         Procedure MakeButton(x,y,w: Byte; Txt: string; cmd,mode: Word)
         Procedure OKButton(x,y : Byte);
         Procedure CancelButton(x,y : Byte);
         Procedure Static(x,y : Byte; txt : string);
         Procedure CheckBoxes(x,y,w,z : Byte; Items : PSItem);
      End;
      PXDialog = ^XDialog;

    Implementation

    Procedure XDialog.MakeButton(x,y,w: Byte; Txt: string; cmd, mode: Word)
    { Insert a button with the specified text, command, width, and mode at
      the x,y coordinates in the dialog box }
       R : TRect;
       Temp : PButton;
    Begin;
       R.Assign(x,y,x+w,y+2);
       Temp := New(PButton,Init(R,Txt,cmd,mode));
       Insert(Temp);
    End;

    Procedure XDialog.OKButton(x,y : Byte);
    { Create and insert an 'OK' Button at x,y coordinates }
    Begin;
       MakeButton(x,y,10,'~O~K',cmOK,bfDefault);
    End;

    Procedure XDialog.CancelButton(x,y : Byte);
    { Create and insert a 'Cancel' button }
    Begin;
       MakeButton(x,y,10,'Cancel',cmCancel,bfNormal);
    End;

    Procedure XDialog.TxtEntry(x,y : Byte; txt : string; max : Byte);
    { Create a text entry line and label starting at x,y and expanding to
      fill the rest of the line in the box. }
    Var
       w : Byte;
       ID : PView;
       R : TRect;
    Begin;
       GetExtent(R);
       R.Assign(x+Length(txt)+2,y,R.B.X-2,y+1);
       ID := New(PInputLine,Init(R,max));
       Insert(ID);
       R.Assign(x,y,x+Length(txt)+1,y+1);
       Insert(New(PLabel,Init(R,txt,ID)));
    End;

    Procedure XDialog.Static(x,y : Byte; txt : string);
    { Static text at x,y }
    Var
       R : TRect;
    Begin;
       R.Assign(x,y,x+Length(txt)+1,y+1);
       Insert(New(PStaticText,Init(R,txt)));
    End;

    Procedure XDialog.CheckBoxes(x,y,w,z : Byte; Items : PSItem);
    { Insert check boxes for cluster 'Items' at x,y with a maximum width of
      w and a total of z items. }
    Var
       R : TRect;
    Begin;
       R.Assign(x,y,x+(w+3)+1,y+z+1);
       Insert(New(PCheckBoxes,Init(R,Items)));
    End;

    End.

[Back to OOP SWAG index] [Back to Main SWAG index] [Original]