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

    {
    This program will create a record structure of two strings
    and initialize them with data then read them into a
    TInputLine.  The program will use the SetData and GetData
    procedures to load and store from the TInputLine Object.

    }
    {$X+}
    program Example;

    uses Objects, Drivers, Views, Menus, Dialogs, App;

    const
      cmNewDialog     = 100;
      hcMyDialog      = 300;

    type
      MyData = record
        Mystr1:String[10];                       { Create a Record Structure }
        MyStr2:String[10];
        end;

    var
     RMyData:MyData;                             { Declare it }

    type
      TMyApp = object(TApplication)
        constructor Init;
        procedure HandleEvent(var Event: TEvent); virtual;
        procedure InitMenuBar; virtual;
        procedure NewDialog;
      end;

      PDemoDialog = ^TDemoDialog;
      TDemoDialog = object(TDialog)
       Procedure HandleEvent(var Event:TEvent);virtual;
      end;

    constructor TMyApp.Init;
    var
      R : TRect;
    begin
      TApplication.Init;                              {Initialize it }
      RMydata.MYstr1:='What';
      RMydata.MYstr2:='Cheese';
      GetExtent(R);
      Dec(R.B.X);
      R.A.X := R.B.X - 9; R.A.Y := R.B.Y - 1;
    end;
    { TMyApp }

    Procedure TDemoDialog.HandleEvent(var Event:TEvent);
    begin
     TDialog.HandleEvent(Event);
      if Event.What = EvCommand then
        begin
         if event.what = EvCommand then
         case Event.Command of
           cmOK:begin
                  GetData(RMyData);    {Get The Data in Declaration Order}
                  TDialog.Done;
                end;
           cmCancel:Tdialog.done;
          end
           else
           Exit;
         end;
     clearEvent(Event);
    end;

    procedure TMyApp.HandleEvent(var Event: TEvent);
    begin
      TApplication.HandleEvent(Event);
      if Event.What = evCommand then
      begin
        case Event.Command of
          cmNewDialog: NewDialog;
        else
          Exit;
        end;
        ClearEvent(Event);
      end;
    end;

    procedure TMyApp.InitMenuBar;
    var
      R: TRect;
    begin
      GetExtent(R);
      R.B.Y := R.A.Y + 1;
      MenuBar := New(PMenuBar, Init(R, NewMenu(
        NewSubMenu('~F~ile', hcNoContext, NewMenu(
          NewItem('E~x~it', 'Alt-X', kbAltX, cmQuit, hcNoContext,
          nil)),
        NewSubMenu('~W~indow', hcNoContext, NewMenu(
           NewItem('~D~ialog','F2', kbF2, cmNewDialog, hcmyDialog,
          nil)),
        nil))
      )));
    end;

    procedure TMyApp.NewDialog;
    var
      Borland: PView;
      Dialog: PDemoDialog;
      R: TRect;
      C: Word;
    begin
      R.Assign(20, 6, 60, 19);
      Dialog := New(PDemoDialog, Init(R, 'Demo Dialog'));
      with Dialog^ do
      begin
        R.Assign(3, 3, 18, 4);
        Borland := New(PInputLine, Init(R,10));
        Insert(Borland);
        R.Assign(3, 4, 18, 5);
        Borland := New(PInputLine, Init(R,10));
        Insert(Borland);
        R.Assign(2, 2, 10, 3);
        Insert(New(PLabel, Init(R, 'Cheeses', Borland)));
        R.Assign(22, 3, 34, 5);
        Borland := New(PRadioButtons, Init(R,
          NewSItem('~R~unny',
          NewSItem('~M~elted',
          nil)))
        );
        Insert(Borland);
        R.Assign(21, 2, 33, 3);
        Insert(New(PLabel, Init(R, 'Consistency', Borland)));
        R.Assign(15, 8, 25, 10);
        Insert(New(PButton, Init(R, '~O~k', cmOk, bfDefault)));
        R.Assign(28, 8, 38, 10);
        Insert(New(PButton, Init(R, 'Cancel', cmCancel, bfNormal)));
      end;
      Dialog^.SetData(RMyData);        {Dialog Setdata with Record Structure}
      DeskTop^.Insert(Dialog);
    end;
    var
      MyApp: TMyApp;

    begin

      MyApp.Init;
      MyApp.Run;
      MyApp.Done;
    end.

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