home *** CD-ROM | disk | FTP | other *** search
/ Delphi 2.0 - Programmer's Utilities Power Pack / Delphi 2.0 Programmer's Utilities Power Pack.iso / a_to_d / dbplus2 / mainform.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-09-15  |  12.2 KB  |  388 lines

  1. unit Mainform;
  2.  
  3. interface
  4.  
  5. uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Menus,
  6.   SysUtils,
  7.   Dialogs, StdCtrls, Buttons, ExtCtrls, Mask, Dblup2, DB, DBTables, DBCtrls;
  8.  
  9. type
  10.   TAppMainForm = class(TForm)
  11.     MainMenu: TMainMenu;
  12.     FileMenu: TMenuItem;
  13.     ExitItem: TMenuItem;
  14.     N1: TMenuItem;
  15.     Help1: TMenuItem;
  16.     About1: TMenuItem;
  17.     StatusBar: TPanel;
  18.     SpeedPanel: TPanel;
  19.     ExitBtn: TSpeedButton;
  20.     Table1: TTable;
  21.     DataSource1: TDataSource;
  22.     Table2: TTable;
  23.     DataSource2: TDataSource;
  24.     Panel3: TPanel;
  25.     Shape1: TShape;
  26.     Label1: TLabel;
  27.     Label2: TLabel;
  28.     Shape2: TShape;
  29.     Shape3: TShape;
  30.     Shape4: TShape;
  31.     DBLookupComboPlus1: TDBLookupComboPlus;
  32.     MaskEditDate: TMaskEdit;
  33.     MaskEditDollars: TMaskEdit;
  34.     EditWordDollars: TEdit;
  35.     RadioGroupStyle: TRadioGroup;
  36.     RadioGroupSpeedButton: TRadioGroup;
  37.     RadioGroupBorderStyle: TRadioGroup;
  38.     RadioGroupAutoDropDown: TRadioGroup;
  39.     RadioGroupDropDownAlign: TRadioGroup;
  40.     RadioGroupDropDownTop: TRadioGroup;
  41.     Bevel1: TBevel;
  42.     Label3: TLabel;
  43.     RadioGroupPreSets: TRadioGroup;
  44.     Label4: TLabel;
  45.     Button1: TButton;
  46.     Button2: TButton;
  47.     ColorDialog1: TColorDialog;
  48.     Button3: TButton;
  49.     Label5: TLabel;
  50.     procedure ShowHint(Sender: TObject);
  51.     procedure ExitItemClick(Sender: TObject);
  52.     procedure About1Click(Sender: TObject);
  53.     procedure FormCreate(Sender: TObject);
  54.     procedure RadioGroupStyleClick(Sender: TObject);
  55.     procedure RadioGroupDropDownAlignClick(Sender: TObject);
  56.     procedure RadioGroupDropDownTopClick(Sender: TObject);
  57.     procedure RadioGroupBorderStyleClick(Sender: TObject);
  58.     procedure RadioGroupAutoDropDownClick(Sender: TObject);
  59.     procedure RadioGroupSpeedButtonClick(Sender: TObject);
  60.     procedure Button1Click(Sender: TObject);
  61.     procedure Button2Click(Sender: TObject);
  62.     procedure Button3Click(Sender: TObject);
  63.     procedure RadioGroupPreSetsClick(Sender: TObject);
  64.     procedure MaskEditDollarsExit(Sender: TObject);
  65.     procedure FormShow(Sender: TObject);
  66.   private
  67.     { Private declarations }
  68.     Procedure SetCheckColor(aColor : TColor);
  69.     Procedure SetBorderColor(aColor : TColor);
  70.     Procedure SetFieldColor(aColor : TColor);
  71.     Function RealToCheckString(Amount : Real) : String;
  72.   public
  73.     { Public declarations }
  74.   end;
  75.  
  76. var
  77.   AppMainForm: TAppMainForm;
  78.  
  79. implementation
  80.  
  81. uses About;
  82.  
  83. {$R *.DFM}
  84.  
  85. procedure TAppMainForm.ShowHint(Sender: TObject);
  86. begin
  87.   StatusBar.Caption := Application.Hint;
  88. end;
  89.  
  90. procedure TAppMainForm.ExitItemClick(Sender: TObject);
  91. begin
  92.   Close;
  93. end;
  94.  
  95. procedure TAppMainForm.About1Click(Sender: TObject);
  96. begin
  97.   AboutBox.ShowModal;
  98. end;
  99.  
  100. procedure TAppMainForm.FormCreate(Sender: TObject);
  101. begin
  102.   Application.OnHint := ShowHint;
  103.   MaskEditDate.edittext := DateTimeToStr(Date);
  104.   EditWordDollars.Text :=
  105.     RealToCheckString(StrToFloat(MaskEditDollars.text));
  106. end;
  107.  
  108. procedure TAppMainForm.RadioGroupStyleClick(Sender: TObject);
  109. begin
  110.   case  RadioGroupStyle.ItemIndex of
  111.     0 : DBLookupComboPlus1.Style := csDropDown;
  112.     1 : DBLookupComboPlus1.Style := csDropDownList;
  113.     2 : DBLookupComboPlus1.Style := csIncSearch;
  114.     3 : DBLookupComboPlus1.Style := csIncSrchEdit;
  115.   end; {Case}
  116.   DBLookupComboPlus1.SetFocus;
  117. end;
  118.  
  119. procedure TAppMainForm.RadioGroupDropDownAlignClick(Sender: TObject);
  120. begin
  121.   case  RadioGroupDropDownAlign.ItemIndex of
  122.     0 : DBLookupComboPlus1.DropDownAlign := Dblup2.Left;
  123.     1 : DBLookupComboPlus1.DropDownAlign := Dblup2.Right;
  124.   end; {Case}
  125.   DBLookupComboPlus1.SetFocus;
  126. end;
  127.  
  128. procedure TAppMainForm.RadioGroupDropDownTopClick(Sender: TObject);
  129. begin
  130.   case  RadioGroupDropDownTop.ItemIndex of
  131.     0 : DBLookupComboPlus1.DropDownTop := Dblup2.Above;
  132.     1 : DBLookupComboPlus1.DropDownTop := Dblup2.Below;
  133.   end; {Case}
  134.   DBLookupComboPlus1.SetFocus;
  135. end;
  136.  
  137. procedure TAppMainForm.RadioGroupBorderStyleClick(Sender: TObject);
  138. begin
  139.   case  RadioGroupBorderStyle.ItemIndex of
  140.     0 : begin
  141.           DBLookupComboPlus1.BorderStyle := bsNone;
  142.           MaskEditDate.BorderStyle := bsNone;
  143.           MaskEditDollars.BorderStyle := bsNone;
  144.           EditWordDollars.BorderStyle := bsNone;
  145.           DBLookupComboPlus1.Ctl3D := False;
  146.           MaskEditDate.Ctl3D := False;
  147.           MaskEditDollars.Ctl3D := False;
  148.           EditWordDollars.Ctl3D := False;
  149.           DBLookupComboPlus1.Height := 16;
  150.           MaskEditDate.Height := 16;
  151.           MaskEditDollars.Height := 16;
  152.           EditWordDollars.Height := 16;
  153.           Shape2.Visible := True;
  154.           Shape3.Visible := True;
  155.           Shape4.Visible := True;
  156.         end;
  157.     1 : Begin
  158.           DBLookupComboPlus1.BorderStyle := bsSingle;
  159.           MaskEditDate.BorderStyle := bsSingle;
  160.           MaskEditDollars.BorderStyle := bsSingle;
  161.           EditWordDollars.BorderStyle := bsSingle;
  162.           DBLookupComboPlus1.Ctl3D := True;
  163.           MaskEditDate.Ctl3D := True;
  164.           MaskEditDollars.Ctl3D := True;
  165.           EditWordDollars.Ctl3D := True;
  166.           DBLookupComboPlus1.Height := 24;
  167.           MaskEditDate.Height := 24;
  168.           MaskEditDollars.Height := 24;
  169.           EditWordDollars.Height := 24;
  170.           Shape2.Visible := False;
  171.           Shape3.Visible := False;
  172.           Shape4.Visible := False;
  173.         end;
  174.   end; {Case}
  175.   DBLookupComboPlus1.SetFocus;
  176. end;
  177.  
  178. procedure TAppMainForm.RadioGroupAutoDropDownClick(Sender: TObject);
  179. begin
  180.   case  RadioGroupAutoDropDown.ItemIndex of
  181.     0 : DBLookupComboPlus1.AutoDropDown := True;
  182.     1 : DBLookupComboPlus1.AutoDropDown := False;
  183.   end; {Case}
  184.   DBLookupComboPlus1.SetFocus;
  185. end;
  186.  
  187. procedure TAppMainForm.RadioGroupSpeedButtonClick(Sender: TObject);
  188. begin
  189.   case  RadioGroupSpeedButton.ItemIndex of
  190.     0 : DBLookupComboPlus1.ShowSpeedButton := True;
  191.     1 : DBLookupComboPlus1.ShowSpeedButton := False;
  192.   end; {Case}
  193.   DBLookupComboPlus1.SetFocus;
  194. end;
  195.  
  196. Procedure TAppMainForm.SetCheckColor(aColor : TColor);
  197. begin
  198.   Panel3.Color := aColor;
  199. end;
  200.  
  201. Procedure TAppMainForm.SetBorderColor(aColor : TColor);
  202. begin
  203.   Shape1.Pen.Color := aColor;
  204. end;
  205.  
  206. Procedure TAppMainForm.SetFieldColor(aColor : TColor);
  207. begin
  208.   DBLookupComboPlus1.Color := aColor;
  209.   MaskEditDate.Color := aColor;
  210.   MaskEditDollars.Color := aColor;
  211.   EditWordDollars.Color := aColor;
  212. end;
  213.  
  214. procedure TAppMainForm.Button1Click(Sender: TObject);
  215. begin
  216.     {initialise to current color}
  217.   ColorDialog1.Color := Panel3.Color;
  218.   If ColorDialog1.Execute then
  219.     SetCheckColor(ColorDialog1.Color);
  220.   DBLookupComboPlus1.SetFocus;
  221. end;
  222.  
  223. procedure TAppMainForm.Button2Click(Sender: TObject);
  224. begin
  225.   ColorDialog1.Color := Shape1.Pen.Color;
  226.   If ColorDialog1.Execute then
  227.      SetBorderColor(ColorDialog1.Color);
  228.   DBLookupComboPlus1.SetFocus;
  229. end;
  230.  
  231. procedure TAppMainForm.Button3Click(Sender: TObject);
  232. begin
  233.   ColorDialog1.Color := DBLookupComboPlus1.Color;
  234.   If ColorDialog1.Execute then
  235.      SetFieldColor(ColorDialog1.Color);
  236.   DBLookupComboPlus1.SetFocus;
  237. end;
  238.  
  239.  
  240. procedure TAppMainForm.RadioGroupPreSetsClick(Sender: TObject);
  241. begin
  242.   case  RadioGroupPreSets.ItemIndex of
  243.     0 : begin  {Borland}
  244.           DBLookupComboPlus1.AutoDropDown := False;
  245.             RadioGroupAutoDropDown.ItemIndex := 1;
  246.           DBLookupComboPlus1.ShowSpeedButton := True;
  247.             RadioGroupSpeedButton.ItemIndex := 0;
  248.           DBLookupComboPlus1.BorderStyle := bsSingle;
  249.             RadioGroupBorderStyle.ItemIndex := 1;
  250.           DBLookupComboPlus1.Style := csDropDown;
  251.             RadioGroupStyle.ItemIndex := 0;
  252.           SetCheckColor(clSilver);
  253.           SetBorderColor(clBlack);
  254.           SetFieldColor(clWindow);
  255.         end;
  256.     1 : Begin  {Quicken}
  257.           DBLookupComboPlus1.AutoDropDown := True;
  258.             RadioGroupAutoDropDown.ItemIndex := 0;
  259.           DBLookupComboPlus1.ShowSpeedButton := True;
  260.             RadioGroupSpeedButton.ItemIndex := 0;
  261.           DBLookupComboPlus1.BorderStyle := bsNone;
  262.             RadioGroupBorderStyle.ItemIndex := 0;
  263.           DBLookupComboPlus1.Style := csIncSrchEdit;
  264.             RadioGroupStyle.ItemIndex := 3;
  265.           SetCheckColor(clYellow);
  266.           SetBorderColor(clRed);
  267.           SetFieldColor(clYellow);
  268.         end;
  269.   end; {Case}
  270.   DBLookupComboPlus1.SetFocus;
  271. end;
  272.  
  273.  
  274. Function TAppMainForm.RealToCheckString(Amount : Real) : String;
  275. var
  276.   Dollars : LongInt;
  277.   cents : Integer;
  278.  
  279.   function Num2Str(Num: LongInt): String;
  280.   Const hundred = 100;
  281.         thousand = 1000;
  282.         million = 1000000;
  283.         billion = 1000000000;
  284.    begin
  285.      if Num >= billion then
  286.        if (Num mod billion) = 0 then
  287.          Num2Str := Num2Str(Num div billion) + ' Billion'
  288.        else
  289.          Num2Str := Num2Str(Num div billion) + ' Billion ' +
  290.                     Num2Str(Num mod billion)
  291.      else
  292.        if Num >= million then
  293.          if (Num mod million) = 0 then
  294.            Num2Str := Num2Str(Num div million) + ' Million'
  295.          else
  296.            Num2Str := Num2Str(Num div million) + ' Million ' +
  297.                       Num2Str(Num mod million)
  298.        else
  299.          if Num >= thousand then
  300.            if (Num mod thousand) = 0 then
  301.              Num2Str := Num2Str(Num div thousand) + ' Thousand'
  302.            else
  303.              Num2Str := Num2Str(Num div thousand) + ' Thousand ' +
  304.                         Num2Str(Num mod thousand)
  305.          else
  306.            if Num >= hundred then
  307.              if (Num mod hundred) = 0 then
  308.                Num2Str := Num2Str(Num div hundred) + ' Hundred'
  309.              else
  310.                Num2Str := Num2Str(Num div  hundred) + ' Hundred ' +
  311.                           Num2Str(Num mod hundred)
  312.            else
  313.            case (Num div 10) of
  314.           6,7,9: if (Num mod 10) = 0 then
  315.                     Num2Str := Num2Str(Num div 10) + 'ty'
  316.                   else
  317.                     Num2Str := Num2Str(Num div 10) + 'ty-' +
  318.                                Num2Str(Num mod 10);
  319.                8: if Num = 80 then
  320.                     Num2Str := 'Eighty'
  321.                   else
  322.                     Num2Str := 'Eighty-' + Num2Str(Num mod 10);
  323.                5: if Num = 50 then
  324.                     Num2Str := 'Fifty'
  325.                   else
  326.                     Num2Str := 'Fifty-' + Num2Str(Num mod 10);
  327.                4: if Num = 40 then
  328.                     Num2Str := 'Forty'
  329.                   else
  330.                     Num2Str := 'Forty-' + Num2Str(Num mod 10);
  331.                3: if Num = 30 then
  332.                     Num2Str := 'Thirty'
  333.                   else
  334.                     Num2Str := 'Thirty-' + Num2Str(Num mod 10);
  335.                2: if Num = 20 then
  336.                     Num2Str := 'Twenty'
  337.                   else
  338.                     Num2Str := 'Twenty-' + Num2Str(Num mod 10);
  339.              0,1: case Num of
  340.                      0: Num2Str := 'Zero';
  341.                      1: Num2Str := 'One';
  342.                      2: Num2Str := 'Two';
  343.                      3: Num2Str := 'Three';
  344.                      4: Num2Str := 'Four';
  345.                      5: Num2Str := 'Five';
  346.                      6: Num2Str := 'Six';
  347.                      7: Num2Str := 'Seven';
  348.                      8: Num2Str := 'Eight';
  349.                      9: Num2Str := 'Nine';
  350.                     10: Num2Str := 'Ten';
  351.                     11: Num2Str := 'Eleven';
  352.                     12: Num2Str := 'Twelve';
  353.                     13: Num2Str := 'Thirteen';
  354.                     14: Num2Str := 'Fourteen';
  355.                     15: Num2Str := 'Fifteen';
  356.                     16: Num2Str := 'Sixteen';
  357.                     17: Num2Str := 'Seventeen';
  358.                     18: Num2Str := 'Eightteen';
  359.                     19: Num2Str := 'Nineteen'
  360.                   end
  361.            end
  362.   end {Num2Str};
  363.  
  364. begin
  365.   Dollars := Trunc(Amount);
  366.   cents := Round(100*Frac(Amount));
  367.   if Dollars > 0 then
  368.     Result := Num2Str(Dollars) + ' and ';
  369.   if cents > 0 then
  370.     Result := Result + IntToStr(cents) + '/100'
  371.   else
  372.     Result := Result +  '00/100';
  373. end;
  374.  
  375. procedure TAppMainForm.MaskEditDollarsExit(Sender: TObject);
  376. begin
  377.   EditWordDollars.Text :=
  378.     RealToCheckString(StrToFloat(MaskEditDollars.text));
  379. end;
  380.  
  381. procedure TAppMainForm.FormShow(Sender: TObject);
  382. begin
  383.   DBLookupComboPlus1.SetFocus;
  384. end;
  385.  
  386. end.
  387.  
  388.