home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programming Unleashed / Delphi_Programming_Unleashed_SAMS_Publishing_1995.iso / chap28 / object4 / status.pas < prev    next >
Pascal/Delphi Source File  |  1995-03-20  |  3KB  |  114 lines

  1. unit Status;
  2.  
  3. { Program copyright (c) 1995 by Charles Calvert }
  4. { Project Name: OBJECT4 }
  5.  
  6. interface
  7.  
  8. uses
  9.   SysUtils, WinTypes, WinProcs,
  10.   Messages, Classes, Graphics,
  11.   Controls, Forms, Dialogs,
  12.   StdCtrls, Gauges, ExtCtrls,
  13.   Buttons, ClassDef;
  14.  
  15. const
  16.   MaxBlue = 10600;
  17.   MaxYellow = 120;
  18.   MaxGreen = 6000;
  19.   MaxViolet = 6000;
  20.  
  21. type
  22.   TStatusForm = class(TForm)
  23.     Panel1: TPanel;
  24.     gBlue: TGauge;
  25.     gYellow: TGauge;
  26.     gGreen: TGauge;
  27.     gViolet: TGauge;
  28.     Label1: TLabel;
  29.     Label2: TLabel;
  30.     Label3: TLabel;
  31.     Label4: TLabel;
  32.     BitBtn1: TBitBtn;
  33.     LBlue: TLabel;
  34.     LYellow: TLabel;
  35.     LGreen: TLabel;
  36.     LViolet: TLabel;
  37.     procedure FormCreate(Sender: TObject);
  38.   private
  39.     { Private declarations }
  40.     FBlueTotal: LongInt;
  41.     FYellowTotal: LongInt;
  42.     FGreenTotal: LongInt;
  43.     FVioletTotal: LongInt;
  44.     procedure ZeroTotals;
  45.     procedure TotalWidgets(Widget: TWidget);
  46.   public
  47.     { Public declarations }
  48.     procedure RunAll(Components: TList);
  49.     procedure CalcTotals(Components: TList);
  50.   end;
  51.  
  52. var
  53.   StatusForm: TStatusForm;
  54.  
  55. implementation
  56.  
  57. {$R *.DFM}
  58.  
  59. procedure TStatusForm.ZeroTotals;
  60. begin
  61.   FYellowTotal := 0;
  62.   FBlueTotal := 0;
  63.   FGreenTotal := 0;
  64.   FVioletTotal := 0;
  65. end;
  66.  
  67. procedure TStatusForm.TotalWidgets(Widget: TWidget);
  68. begin
  69.   if Widget is TYellow then
  70.     FYellowTotal := FYellowTotal + Widget.Quantity;
  71.   if Widget is TBlue then
  72.     FBlueTotal := FBlueTotal + Widget.Quantity;
  73.   if Widget is TGreen then
  74.     FGreenTotal := FGreenTotal + Widget.Quantity;
  75.   if Widget is TViolet then
  76.     FVioletTotal := FVioletTotal + Widget.Quantity;
  77. end;
  78.  
  79. procedure TStatusForm.CalcTotals(Components: TList);
  80. var
  81.   Widget: TWidget;
  82.   i: Integer;
  83. begin
  84.   ZeroTotals;
  85.   for i := 0 to Components.Count - 1 do begin
  86.     Widget := TWidget(Components[i]);
  87.     TotalWidgets(Widget);
  88.   end;
  89. end;
  90.  
  91. procedure TStatusForm.RunAll(Components: TList);
  92. begin
  93.   CalcTotals(Components);
  94.   LBlue.Caption := IntToStr(FBlueTotal) + '/' + IntToStr(GBlue.MaxValue);
  95.   LYellow.Caption := IntToStr(FYellowTotal) + '/' + IntToStr(GYellow.MaxValue);
  96.   LGreen.Caption := IntToStr(FGreenTotal) + '/' + IntToStr(GGreen.MaxValue);;
  97.   LViolet.Caption := IntToStr(FVioletTotal)+ '/' + IntToStr(GViolet.MaxValue);;
  98.   GBlue.Progress := FBlueTotal;
  99.   GYellow.Progress := FYellowTotal;
  100.   GGreen.Progress := FGreenTotal;
  101.   GViolet.Progress := FVioletTotal;
  102.   ShowModal;
  103. end;
  104.  
  105. procedure TStatusForm.FormCreate(Sender: TObject);
  106. begin
  107.   gBlue.MaxValue := MaxBlue;
  108.   gYellow.MaxValue := MaxYellow;
  109.   gGreen.MaxValue := MaxGreen;
  110.   gViolet.MaxValue := MaxViolet;
  111. end;
  112.  
  113. end.
  114.