⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apreportsform.pas

📁 功能全面的商业财会系统源码,清晰,很有参考价值.扩展性强.
💻 PAS
字号:
unit APReportsForm;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, 
  Buttons, ExtCtrls, Mask, Dialogs, DB, DBTables;

type
  TfrmAPReports = class(TForm)
    panelBottom: TPanel;
    btnBack: TButton;
    btnNext: TButton;
    btnCancel: TButton;
    PanelReports: TPanel;
    PanelOptions: TPanel;
    lboReports: TListBox;
    lblPeriod: TLabel;
    lblHeading: TLabel;
    Image1: TImage;
    lblReportTitle: TLabel;
    cboCurrency: TComboBox;
    lblCurrency: TLabel;
    cboVendor: TComboBox;
    lblVendor: TLabel;
    editGLPeriod: TEdit;
    editGLYear: TEdit;
    procedure btnNextClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnBackClick(Sender: TObject);
    procedure lboReportsDblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure cboCurrencyExit(Sender: TObject);
    procedure cboVendorExit(Sender: TObject);
    procedure editGLPeriodEnter(Sender: TObject);
    procedure editGLPeriodExit(Sender: TObject);
    procedure editGLYearEnter(Sender: TObject);
    procedure editGLYearExit(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
  private
    procedure SetCurrencyID(CurrencyID: integer);
    function GetCurrencyID: integer;
    procedure SetVendorID(VendorID: integer);
    function GetVendorID: integer;
    procedure SetGLPeriod(GLPeriod: integer);
    function GetGLPeriod: integer;
    procedure SetGLYear(GLYear: integer);
    function GetGLYear: integer;
  public
    property CurrencyID: integer read GetCurrencyID write SetCurrencyID;
    property VendorID: integer read GetVendorID write SetVendorID;
    property GLPeriod: integer read GetGLPeriod write SetGLPeriod;
    property GLYear: integer read GetGLYear write SetGLYear;
  end;

var
  frmAPReports: TfrmAPReports;

implementation

uses OpenPayablesReport, LookUpsData, APHistoryReport, BS1Form;

{$R *.DFM}

var
  cboCurrencyIDs, cboVendorIDs: TStringList;
  intGLPeriod, intGLYear: integer;

procedure TfrmAPReports.SetCurrencyID(CurrencyID: integer);
begin
  CboCurrency.ItemIndex := cboCurrencyIDs.IndexOf(IntToStr(CurrencyID));
end;

function TfrmAPReports.GetCurrencyID: integer;
begin
  if cboCurrency.ItemIndex > 0 then Result := StrToInt(cboCurrencyIDs[cboCurrency.ItemIndex])
  else Result := 0;
end;

procedure TfrmAPReports.SetVendorID(VendorID: integer);
begin
  CboVendor.ItemIndex := cboVendorIDs.IndexOf(IntToStr(VendorID));
end;

function TfrmAPReports.GetVendorID: integer;
begin
  if cboVendor.ItemIndex > 0 then Result := StrToInt(cboVendorIDs[cboVendor.ItemIndex])
  else Result := 0;
end;

procedure TfrmAPReports.SetGLPeriod(GLPeriod: integer);
begin
  intGLPeriod := GLPeriod;
end;

function TfrmAPReports.GetGLPeriod: integer;
begin
  Result := intGLPeriod;
end;

procedure TfrmAPReports.SetGLYear(GLYear: integer);
begin
  intGLYear := GLYear;
end;

function TfrmAPReports.GetGLYear: integer;
begin
  Result := intGLYear;
end;

procedure cboCurrency_Load(const Tbl: TTable; const Cbo: TCombobox);
begin
  Cbo.Items.Clear;   //Populate "currency" combobox.
  cboCurrencyIDs.Clear;
  Cbo.Items.Add('<All>');
  cboCurrencyIDs.Add('');
  Tbl.First;
  while not Tbl.EOF do begin
    Cbo.Items.Add(Tbl['CurrencyName']);
    cboCurrencyIDs.Add(Tbl['CurrencyID']);
    Tbl.Next;
  end;
  Cbo.ItemIndex := 0;
end;

procedure cboVendor_Load(const Tbl: TTable; const Cbo: TCombobox);
begin
  Cbo.Items.Clear;   //Populate "vendor" combobox.
  cboVendorIDs.Clear;
  Cbo.Items.Add('<All>');
  cboVendorIDs.Add('');
  Tbl.First;
  while not Tbl.EOF do begin
    Cbo.Items.Add(Tbl['VendorName']);
    cboVendorIDs.Add(Tbl['VendorID']);
    Tbl.Next;
  end;
  Cbo.ItemIndex := 0;
end;

procedure SetintGLPeriod(var intGLPeriod: integer; var editGLPeriod: TEdit);
var
  intWork: integer;
begin
  try intWork := StrToInt(editGLPeriod.text); except; editGLPeriod.text := '0'; end;   //Prevent error if can't convert text to integer.
  if (StrToInt(editGLPeriod.text) > 0) and (StrToInt(editGLPeriod.text) <= 12) then intGLPeriod := StrToInt(editGLPeriod.text)
  else begin
    editGLPeriod.setfocus;
    editGLPeriod.SelectAll;
    raise(exception.create('Period must be between 1 and 12'));
  end;
end;

procedure SetintGLYear(var intGLYear: integer; var editGLYear: TEdit);
var
  intWork: integer;
begin
  try intWork := StrToInt(editGLYear.text); except; editGLYear.text := '0'; end;   //Prevent error if can't convert text to integer.
  if (StrToInt(editGLYear.text) < 0) or (StrToInt(editGLYear.text) > 99) then begin
    editGLYear.setfocus;
    editGLYear.SelectAll;
    raise(exception.create('Period invalid...' + #13 + 'Enter year as 2 digits'));
  end else if StrToInt(editGLYear.text) < 50 then intGLYear := StrToInt(editGLYear.text) + 2000   //Convert 2 digit year to 4.
  else intGLYear := StrToInt(editGLYear.text) + 1900;
end;

procedure TfrmAPReports.btnNextClick(Sender: TObject);
var
  strWHERE: string;
begin
  if panelReports.visible = true then begin
    panelReports.visible := false;
    btnBack.enabled := true;
    panelOptions.visible := true;
    if lboReports.ItemIndex = 0 then begin
      cboCurrency.setfocus; editGLPeriod.enabled := false; editGLYear.enabled := false; editGLPeriod.visible := false; editGLYear.visible := false; lblPeriod.visible := false;
      lblCurrency.top := Trunc(74*FontFactor); cboCurrency.top := Trunc(70*FontFactor);
      lblVendor.top := Trunc(102*FontFactor); cboVendor.top := Trunc(98*FontFactor);
    end else begin
      editGLPeriod.enabled := true; editGLYear.enabled := true; editGLPeriod.visible := true; editGLYear.visible := true; lblPeriod.visible := true; editGLPeriod.setfocus;
      lblCurrency.top := Trunc(88*FontFactor); cboCurrency.top := Trunc(84*FontFactor);
      lblVendor.top := Trunc(116*FontFactor); cboVendor.top := Trunc(112*FontFactor);
    end;
    btnNext.caption := '&Preview';
    lblReportTitle.caption := lboReports.Items[lboReports.ItemIndex];
  end else if panelOptions.visible = true then begin
    if screen.ActiveControl.name = 'editGLPeriod' then SetintGLPeriod(intGLPeriod, editGLPeriod);   //If Enter was pressed, this hasn't been done yet.
    if screen.ActiveControl.name = 'editGLYear' then SetintGLYear(intGLYear, editGLYear);   //If Enter was pressed, this hasn't been done yet.
    if cboVendor.Items.IndexOf(cboVendor.Text) < 0 then begin  //If Enter was pressed, this edit hasn't been done yet.
      cboVendor.setfocus;
      raise(Exception.Create('Choose an item from the list'));
    end;
    if cboCurrency.Items.IndexOf(cboCurrency.Text) < 0 then begin  //If Enter was pressed, this edit hasn't been done yet.
      cboCurrency.setfocus;
      raise(Exception.Create('Choose an item from the list'));
    end;
    modalResult := mrOK;
    //if license = '' then begin frmBS1.FreewareMessage; exit; end;
    if lboReports.ItemIndex = 0 then begin
      screen.cursor := crHourglass;
      application.createform (TrptOpenPayables,rptOpenPayables);
      if (frmAPReports.CurrencyID > 0) or (frmAPReports.VendorID > 0) then begin
        //strWHERE := ' WHERE (1 = 1)';
        strWHERE := '';   //SQL already has a WHERE clause.
        rptOpenPayables.lblSelection.caption := '';
        if (frmAPReports.CurrencyID > 0) then begin
          strWHERE := strWHERE + ' AND (CurrencyID = ' + IntToStr(frmAPReports.CurrencyID) + ')';
          rptOpenPayables.lblSelection.caption := rptOpenPayables.lblSelection.caption + '     Currency: ' + cboCurrency.Text;
        end;
        if (frmAPReports.VendorID > 0) then begin
          strWHERE := strWHERE + ' AND (VendorID = ' + IntToStr(frmAPReports.VendorID) + ')';
          rptOpenPayables.lblSelection.caption := rptOpenPayables.lblSelection.caption + '     Vendor: ' + cboVendor.Text;
        end;
        rptOpenPayables.qryAPInv.SQL[0] := rptOpenPayables.qryAPInv.SQL[0] + strWHERE;
      end else rptOpenPayables.lblSelection.caption := '';
      rptOpenPayables.qryAPInv.Active := true;
      self.hide;
      screen.cursor := crDefault;
      rptOpenPayables.QuickReport.Preview;
    end else if lboReports.ItemIndex = 1 then begin
      screen.cursor := crHourglass;
      application.createform (TrptAPHistory,rptAPHistory);
      rptAPHistory.lblSelection.caption := '';
      if (frmAPReports.CurrencyID > 0) then rptAPHistory.lblSelection.caption := rptAPHistory.lblSelection.caption + '     Currency: ' + cboCurrency.Text;
      if (frmAPReports.VendorID > 0) then rptAPHistory.lblSelection.caption := rptAPHistory.lblSelection.caption + '     Vendor: ' + cboVendor.Text;
      self.hide;
      screen.cursor := crDefault;
      rptAPHistory.QuickReport.Preview;
    end;
  end;
end;

procedure TfrmAPReports.FormShow(Sender: TObject);
var
  Year, Month, Day: word;
begin
  panelReports.visible := true;
  panelOptions.visible := false;
  btnBack.enabled := false;
  btnNext.caption := '&Next >';
  lboReports.setfocus;
  lboReports.ItemIndex := 0;

  cboCurrency_Load(dmLookUps.tblCurrency, cboCurrency);   //Populate "currency" combobox.
  cboVendor_Load(dmLookUps.tblVendor, cboVendor);   //Populate "vendor" combobox.

  DecodeDate(Date, Year, Month, Day);
  if frmBS1.tblCompanyDefaultPeriodPP.value > 0 then GLPeriod := frmBS1.tblCompanyDefaultPeriodPP.value
  else GLPeriod := Month;
  if frmBS1.tblCompanyDefaultPeriodYYYY.value > 0 then GLYear := frmBS1.tblCompanyDefaultPeriodYYYY.value
  //else if frmBS1.tblCompanyFiscalYear.value > 0 then GLYear := frmBS1.tblCompanyFiscalYear.value
  else GLYear := Year;
  editGLPeriod.text := IntToStr(GLPeriod);
  editGLYear.text := IntToStr(GLYear);
end;

procedure TfrmAPReports.btnBackClick(Sender: TObject);
begin
  if panelOptions.visible = true then begin
    panelOptions.visible := false;
    panelReports.visible := true;
    btnNext.caption := '&Next >';
    lboReports.setfocus;
    btnBack.enabled := false;
  end;
end;

procedure TfrmAPReports.lboReportsDblClick(Sender: TObject);
begin
  btnNextClick(sender);
end;

procedure TfrmAPReports.FormCreate(Sender: TObject);
begin
  cboCurrencyIDs := TStringList.create;   //Create a TStringList to store CurrencyIDs for the combobox.
  cboVendorIDs := TStringList.create;   //Create a TStringList to store VendorIDs for the combobox.
end;

procedure TfrmAPReports.cboCurrencyExit(Sender: TObject);
begin
  if cboCurrency.Items.IndexOf(cboCurrency.Text) < 0 then begin
    cboCurrency.setfocus;
    raise(Exception.Create('Choose an item from the list'));
  end;
end;

procedure TfrmAPReports.cboVendorExit(Sender: TObject);
begin
  if cboVendor.Items.IndexOf(cboVendor.Text) < 0 then begin
    cboVendor.setfocus;
    raise(Exception.Create('Choose an item from the list'));
  end;
end;

procedure TfrmAPReports.editGLPeriodEnter(Sender: TObject);
begin
  editGLPeriod.text := IntToStr(GLPeriod);
  editGLPeriod.SelectAll;
end;

procedure TfrmAPReports.editGLPeriodExit(Sender: TObject);
begin
  SetintGLPeriod(intGLPeriod, editGLPeriod);
end;

procedure TfrmAPReports.editGLYearEnter(Sender: TObject);
begin
  editGLYear.text := Copy(IntToStr(GLYear),3,2);   //If editing, show last 2 digits of year.
  editGLYear.SelectAll;
end;

procedure TfrmAPReports.editGLYearExit(Sender: TObject);
begin
  SetintGLYear(intGLYear, editGLYear);
  editGLYear.text := IntToStr(GLYear);
end;

procedure TfrmAPReports.btnCancelClick(Sender: TObject);
begin
  Close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -