CalcF.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:2k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit CalcF;
  2. interface
  3. uses
  4.   SysUtils, Windows, Messages, Classes, Graphics, Controls,
  5.   StdCtrls, Forms, DBCtrls, DB, DBGrids, DBTables, Grids, ExtCtrls;
  6. type
  7.   TCalcForm = class(TForm)
  8.     DBGrid1: TDBGrid;
  9.     DBNavigator: TDBNavigator;
  10.     Panel1: TPanel;
  11.     Panel2: TPanel;
  12.     DataSource1: TDataSource;
  13.     Table1: TTable;
  14.     Table1PopulationDensity: TFloatField;
  15.     Table1Area: TFloatField;
  16.     Table1Population: TFloatField;
  17.     Table1Name: TStringField;
  18.     Table1Capital: TStringField;
  19.     Table1Continent: TStringField;
  20.     procedure FormCreate(Sender: TObject);
  21.     procedure Table1CalcFields(DataSet: TDataset);
  22.     procedure DBGrid1EditButtonClick(Sender: TObject);
  23.   private
  24.     { private declarations }
  25.   public
  26.     { public declarations }
  27.   end;
  28. var
  29.   CalcForm: TCalcForm;
  30. implementation
  31. uses Dialogs;
  32. {$R *.DFM}
  33. procedure TCalcForm.FormCreate(Sender: TObject);
  34. begin
  35.   Table1.Open;
  36. end;
  37. procedure TCalcForm.Table1CalcFields(DataSet: TDataset);
  38. begin
  39.   // plain version (very dangerous)
  40. {  Table1PopulationDensity.Value :=
  41.     Table1Population.Value / Table1Area.Value;}
  42.   // version based on exceptions (ok)
  43. {  try
  44.     Table1PopulationDensity.Value :=
  45.       Table1Population.Value / Table1Area.Value;
  46.   except
  47.     on Exception do
  48.       Table1PopulationDensity.Value := 0;
  49.   end;}
  50.   // definitive version
  51.   if not Table1Area.IsNull and
  52.       (Table1Area.Value <> 0) then
  53.     Table1PopulationDensity.Value :=
  54.       Table1Population.Value / Table1Area.Value
  55.   else
  56.       Table1PopulationDensity.Value := 0;
  57. end;
  58. procedure TCalcForm.DBGrid1EditButtonClick(Sender: TObject);
  59. begin
  60.   MessageDlg (Format (
  61.     'The population density (%.2n)'#13 +
  62.     'is the Population (%.0n)'#13 +
  63.     'devided by the Area (%.0n).'#13#13 +
  64.     'Edit these two fields to change it.',
  65.     [Table1PopulationDensity.AsFloat,
  66.     Table1Population.AsFloat,
  67.     Table1Area.AsFloat]),
  68.     mtInformation, [mbOK], 0);
  69. end;
  70. end.