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

     Program StatusDialogDemo;

     Uses
       Crt,Objects,Drivers,Views,Dialogs,App;

     Type
       PDemo = ^TDemo;
       TDemo = Object (TApplication)
         Constructor Init;
         end;

       PStatusDialog = ^TStatusDialog;
       TStatusDialog = Object (TDialog)
         Message,Value: PStaticText;
         Constructor Init;
         Procedure Update (Status: Word; AValue: Word); Virtual;
         end;

     Constructor TDemo.Init;

     Var
       D: PStatusDialog;
       I: Integer;
       E: TEvent;

     begin
     TApplication.Init;
     D := New (PStatusDialog,Init);
     Desktop^.Insert (D);
     For I := 1 to 10 do
       begin
       D^.Update (cmValid,I * 10);
       if CtrlBreakHit then
         begin
         CtrlBreakHit := False;
         GetEvent (E);  { eat the Ctrl-Break }
         D^.Update (cmCancel,I * 10);
         Repeat GetEvent (E) Until (E.What = evKeyDown)
           or (E.What = evMouseDown);
         Desktop^.Delete (D);
         Dispose (D,Done);
         Exit;
         end;
       Delay (1000);  { simulate processing }
       end;
     D^.Update (cmOK,100);
     Repeat GetEvent (E) Until (E.What = evKeyDown)
       or (E.What = evMouseDown);
     Desktop^.Delete (D);
     Dispose (D,Done);
     end;

     Constructor TStatusDialog.Init;

     Var
       R: TRect;

     begin
     R.Assign (20,6,60,12);
     TDialog.Init(R,'Processing...');
     Flags := Flags and not wfClose;
     R.Assign (10,2,30,3);
     Insert (New (PStaticText,Init (R,'Completed Record xxx')));
     R.Assign (27,2,30,3);
     Value := New (PStaticText,Init (R,'  0'));
     Insert (Value);
     R.Assign (2,4,38,5);
     Message := New (PStaticText,Init (R,
       '     Press Ctrl-Break to cancel     '));
     Insert (Message);
     end;

     Procedure TStatusDialog.Update (Status: Word; AValue: Word);

     Var
       ValStr: String[3];

     begin
     Case Status of
       cmCancel: begin
         DisposeStr (Message^.Text);
         Message^.Text := NewStr ('     Cancelled - press any key      ');
         Message^.DrawView;
         end;
       cmOK: begin
         DisposeStr (Message^.Text);
         Message^.Text := NewStr ('     Completed - press any key      ');
         Message^.DrawView;
         end;
       end;
     Str (AValue:3,ValStr);
     DisposeStr (Value^.Text);
     Value^.Text := NewStr (ValStr);
     Value^.DrawView;
     end;

     Var
       Demo: TDemo;

     begin
     Demo.Init;
     Demo.Run;
     Demo.Done;
     end.

     {
    GH>        Can someone explain how exactly to display a
    GH>parameterized Text field into a dialog Window?  This is what I

    Here is a dialog that I hope does what you want.  It comes from Shazam,
    a TV dialog editor and code generator.  Also a great learning tool.
    YOu can get it as SZ2.zip from Compuserve or from Jonathan Stein
    directly at PO Box 346, Perrysburg OH 43552 fax 419-874-4922.

     Function MakeDialog : PDialog ; Var Dlg                       :
       PDialog ; R                         : TRect ; Control , Labl , Histry
       : PView ; begin R.Assign ( 0 , 10 , 37 , 23 ) ; New ( Dlg , Init ( R
       , 'About #2' ) ) ;

       R.Assign ( 10 , 2 , 26 , 3 ) ;
       Control                   := New ( PStaticText , Init ( R ,
       'A Sample Program' ) ) ;
       Dlg^.Insert ( Control ) ;

       R.Assign ( 13 , 4 , 20 , 5 ) ;
       Control                   := New ( PStaticText , Init ( R ,
       'Version' ) ) ;
       Dlg^.Insert ( Control ) ;

       R.Assign ( 21 , 4 , 28 , 5 ) ;
       Control := New ( PParamText , Init ( R , '%-s    ' , 1 ) )
       Dlg^.Insert ( Control ) ;

       R.Assign ( 8 , 6 , 29 , 7 ) ;
       Control                   := New ( PStaticText , Init ( R ,
       '(C) Copyright 19xx by' ) ) ;
       Dlg^.Insert ( Control ) ;

       R.Assign ( 8 , 8 , 29 , 9 ) ;
       Control                   := New ( PStaticText , Init ( R ,
       'Anybody, Incorporated' ) ) ;
       Dlg^.Insert ( Control ) ;

       R.Assign ( 14 , 10 , 24 , 12 ) ;
       Control := New ( PButton , Init ( R , ' O~K~ ' , cmOK , bfDefault));
       Control^.HelpCtx          := hcAbout2 ;
       Dlg^.Insert ( Control ) ;

       Dlg^.SelectNext ( False ) ;
       MakeDialog                   := Dlg ;
    end ;

    Var
       DataRec                   : Record
       ParamField1               : PString ; { ParamText }
                                   end ;

      }

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