home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / Runimage / Delphi50 / Demos / Db / IbMastApp / MAIN.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-11  |  6.1 KB  |  247 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, Windows, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, Buttons, StdCtrls, Menus, ExtCtrls, DB;
  8.  
  9. type
  10.   TDateOrder = (doMDY, doDMY, doYMD);
  11.  
  12.   TMainForm = class(TForm)
  13.     MainPanel: TPanel;
  14.     PrinterSetup: TPrinterSetupDialog;
  15.     OrderBtn: TSpeedButton;
  16.     BrowseBtn: TSpeedButton;
  17.     PartsBtn: TSpeedButton;
  18.     CloseBtn: TSpeedButton;
  19.     ReportBtn: TSpeedButton;
  20.     HelpBtn: TSpeedButton;
  21.     MainMenu: TMainMenu;
  22.     FileMenu: TMenuItem;
  23.     FilePrinterSetup: TMenuItem;
  24.     FileExit: TMenuItem;
  25.     FileNewOrder: TMenuItem;
  26.     FilePrintReport: TMenuItem;
  27.     PrintCustList: TMenuItem;
  28.     PrintOrders: TMenuItem;
  29.     PrintInvoice: TMenuItem;
  30.     ViewMenu: TMenuItem;
  31.     ViewOrders: TMenuItem;
  32.     ViewPartsInventory: TMenuItem;
  33.     ViewStayOnTop: TMenuItem;
  34.     HelpMenu: TMenuItem;
  35.     HelpAbout: TMenuItem;
  36.     HelpContents: TMenuItem;
  37.     procedure BrowseCustOrd(Sender: TObject);
  38.     procedure CloseApp(Sender: TObject);
  39.     procedure FormCreate(Sender: TObject);
  40.     procedure BrowseParts(Sender: TObject);
  41.     procedure ToggleStayonTop(Sender: TObject);
  42.     procedure NewOrder(Sender: TObject);
  43.     procedure HelpBtnClick(Sender: TObject);
  44.     procedure PrinterSetupClick(Sender: TObject);
  45.     procedure AboutClick(Sender: TObject);
  46.     procedure FormDestroy(Sender: TObject);
  47.     procedure ReportBtnClick(Sender: TObject);
  48.     procedure OrderReport(Sender: TObject);
  49.     procedure CustomerReport(Sender: TObject);
  50.     procedure InvoiceReport(Sender: TObject);
  51.   private
  52.     procedure PrintOrderReport(Preview: Boolean);
  53.     procedure PrintInvoiceReport(Preview: Boolean);
  54.     procedure PrintCustomerReport(Preview: Boolean);
  55.   end;
  56.  
  57. var
  58.   MainForm: TMainForm;
  59.  
  60. implementation
  61.  
  62. uses
  63.    DataMod,  { Data Module }
  64.    BrCstOrd, { The Browse Orders by Customer form }
  65.    BrParts,  { The Browse Parts form }
  66.    EdOrders, { The Edit Orders form }
  67.    QryCust,  { The Specify Date Range form }
  68.    PickRep,  { The Report Selection form }
  69.    About,    { The About dialog box }
  70.    IniFiles, { Delphi Unit for INI file support }
  71.    CustRpt,  { The customer by invoice report }
  72.    OrderRpt, { The orders by ship date report }
  73.    InvcRpt,  { The invoice report }
  74.    PickInvc; { The invoice number selection dialog }
  75.  
  76. {$R *.DFM}
  77.  
  78. function GetDateOrder(const DateFormat: string): TDateOrder;
  79. var
  80.   I: Integer;
  81. begin
  82.   Result := doMDY;
  83.   I := 1;
  84.   while I <= Length(DateFormat) do
  85.   begin
  86.     case Chr(Ord(DateFormat[I]) and $DF) of
  87.       'Y': Result := doYMD;
  88.       'M': Result := doMDY;
  89.       'D': Result := doDMY;
  90.     else
  91.       Inc(I);
  92.       Continue;
  93.     end;
  94.     Exit;
  95.   end;
  96.   Result := doMDY;
  97. end;
  98.  
  99. procedure TMainForm.BrowseCustOrd(Sender: TObject);
  100. begin
  101.   case GetDateOrder(ShortDateFormat) of
  102.     doYMD: ShortDateFormat := 'yy/mm/dd';
  103.     doMDY: ShortDateFormat := 'mm/dd/yy';
  104.     doDMY: ShortDateFormat := 'dd/mm/yy';
  105.   end;
  106.   BrCustOrdForm.Show;
  107. end;
  108.  
  109. procedure TMainForm.CloseApp(Sender: TObject);
  110. begin
  111.   Close;
  112. end;
  113.  
  114. procedure TMainForm.FormCreate(Sender: TObject);
  115. begin
  116.   ClientWidth := CloseBtn.Left + CloseBtn.Width + 1;
  117.   ClientHeight := CloseBtn.Top + CloseBtn.Height;
  118.   MainPanel.Align := alClient;
  119.   { position the form at the top of display }
  120.   Left := 0;
  121.   Top := 0;
  122. end;
  123.  
  124. procedure TMainForm.BrowseParts(Sender: TObject);
  125. begin
  126.   BrPartsForm.Show;
  127. end;
  128.  
  129.  
  130. procedure TMainForm.ToggleStayonTop(Sender: TObject);
  131. begin
  132.   with Sender as TMenuItem do
  133.   begin
  134.     Checked := not Checked;
  135.     if Checked then MainForm.FormStyle := fsStayOnTop
  136.     else MainForm.FormStyle := fsNormal;
  137.   end;
  138. end;
  139.  
  140. procedure TMainForm.NewOrder(Sender: TObject);
  141. begin
  142.   EdOrderForm.Enter;
  143. end;
  144.  
  145. procedure TMainForm.HelpBtnClick(Sender: TObject);
  146. begin
  147.   Application.HelpCommand(HELP_CONTENTS, 0);
  148. end;
  149.  
  150. procedure TMainForm.PrinterSetupClick(Sender: TObject);
  151. begin
  152.   PrinterSetup.Execute;
  153. end;
  154.  
  155. procedure TMainForm.AboutClick(Sender: TObject);
  156. begin
  157.   AboutBox.ShowModal;
  158. end;
  159.  
  160. procedure TMainForm.FormDestroy(Sender: TObject);
  161. begin
  162.   Application.HelpCommand(HELP_QUIT,0);
  163. end;
  164.  
  165. procedure TMainForm.ReportBtnClick(Sender: TObject);
  166. begin
  167.   with PickRpt do
  168.   if ShowModal = mrOK then
  169.     Case ReportType.ItemIndex of
  170.       0: PrintCustomerReport( Preview );
  171.       1: PrintOrderReport( Preview );
  172.       2: PrintInvoiceReport( Preview );
  173.     end;
  174. end;
  175.  
  176. procedure TMainForm.PrintCustomerReport(Preview: Boolean);
  177. begin
  178.  
  179.   with MastData.CustByLastInvQuery do
  180.   begin
  181.     Open;
  182.     if Preview then
  183.        CustomerByInvoiceReport.Preview
  184.     else
  185.        CustomerByInvoiceReport.Print;
  186.     Close;
  187.   end;
  188. end;
  189.  
  190. procedure TMainForm.PrintOrderReport(Preview: Boolean);
  191. const
  192.   FromToHeading = 'From ''%s'' To ''%s''';
  193. begin
  194.   // Request the 'From' and 'To' dates from the user.
  195.   with QueryCustDlg do
  196.   begin
  197.     MsgLab.Caption := 'Print all orders ranging:';
  198.     if FromDate = 0 then FromDate := EncodeDate(95, 01, 01);
  199.     if ToDate = 0 then ToDate := Now;
  200.  
  201.     if ShowModal = mrOk then
  202.     with MastData.OrdersByDateQuery do
  203.     begin
  204.       Close;
  205.       PArams.ParamByName('FromDate').AsDateTime := FromDate;
  206.       PArams.ParamByName('ToDate').AsDateTime := ToDate;
  207.       Open;
  208.  
  209.       // Format the From To header with the user's dates entered
  210.       OrdersByDateReport.FromToHeading.Caption :=
  211.         Format(FromToHeading, [DateToStr(FromDate), DateToStr(ToDate)]);
  212.  
  213.       if Preview then
  214.          OrdersByDateReport.Preview
  215.       else
  216.          OrdersByDateReport.Print;
  217.       Close;
  218.      end;
  219.    end;
  220. end;
  221.  
  222. procedure TMainForm.PrintInvoiceReport(Preview: Boolean);
  223. begin
  224.   if PickOrderNoDlg.ShowModal = mrOk then
  225.      if Preview then
  226.         InvoiceByOrderNoReport.Preview
  227.      else
  228.         InvoiceByOrderNoReport.Print;
  229. end;
  230.  
  231. procedure TMainForm.OrderReport(Sender: TObject);
  232. begin
  233.   PrintOrderReport(False); // print-no preview
  234. end;
  235.  
  236. procedure TMainForm.CustomerReport(Sender: TObject);
  237. begin
  238.   PrintCustomerReport(False); // print-no preview
  239. end;
  240.  
  241. procedure TMainForm.InvoiceReport(Sender: TObject);
  242. begin
  243.   PrintInvoiceReport(False); // print-no preview
  244. end;
  245.  
  246. end.
  247.