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

📄 glhistoryfilterform.pas

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

interface

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

type
  TfrmGLHistoryFilter = class(TForm)
    btnReset: TButton;
    btnOK: TButton;
    btnCancel: TButton;
    cboAccountType: TComboBox;
    Label1: TLabel;
    UpDownYear: TUpDown;
    editYear: TEdit;
    Label2: TLabel;
    chkYearAll: TCheckBox;
    cboGLAccount: TComboBox;
    EditGLAccount: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    UpDownPeriod: TUpDown;
    editPeriod: TEdit;
    chkPeriodAll: TCheckBox;
    procedure btnOKClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure btnResetClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure chkYearAllClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure UpDownYearClick(Sender: TObject; Button: TUDBtnType);
    procedure cboGLAccountExit(Sender: TObject);
    procedure EditGLAccountExit(Sender: TObject);
    procedure cboGLAccountClick(Sender: TObject);
    procedure EditGLAccountChange(Sender: TObject);
    procedure chkPeriodAllClick(Sender: TObject);
    procedure UpDownPeriodClick(Sender: TObject; Button: TUDBtnType);
  private
    procedure SetGLAccount(GLAccount: string);
    function GetGLAccount: string;
  public
    property GLAccount: string read GetGLAccount write SetGLAccount;
  end;

var
  frmGLHistoryFilter: TfrmGLHistoryFilter;

implementation

uses BS1Form, GLHistoryForm, LookUpsData;

{$R *.DFM}

var
  cboAccountTypeOld, GLAccountOld: string;
  chkYearAllCheckedOld, chkPeriodAllCheckedOld: Boolean;
  editYearOld, editPeriodOld: string;
  cboGLAccounts: TStringList;

procedure TfrmGLHistoryFilter.SetGLAccount(GLAccount: string);
begin
  cboGLAccount.ItemIndex := cboGLAccounts.IndexOf(GLAccount);
end;

function TfrmGLHistoryFilter.GetGLAccount: string;
begin
  if cboGLAccount.ItemIndex > 0 then Result := cboGLAccounts[cboGLAccount.ItemIndex]
  else Result := '';
end;

procedure cboGLAccount_Load(const Tbl: TTable; const Cbo: TCombobox);
begin
  Cbo.Items.Clear;   //Populate "GLAccount" combobox.
  cboGLAccounts.Clear;
  Cbo.Items.Add('<All>');
  cboGLAccounts.Add('');
  Tbl.First;
  while not Tbl.EOF do begin
    Cbo.Items.Add(Tbl['AccountName']);
    cboGLAccounts.Add(Tbl['GLAccount']);
    Tbl.Next;
  end;
  Cbo.ItemIndex := cboGLAccounts.IndexOf(GLAccountOld);
end;

procedure TfrmGLHistoryFilter.btnOKClick(Sender: TObject);
begin
  if cboGLAccount.Items.IndexOf(cboGLAccount.Text) < 0 then begin  //If Enter was pressed, this edit hasn't been done yet.
    cboGLAccount.setfocus;
    raise(Exception.Create('Choose an item from the list'));
  end;

  if (cboAccountType.text <> '<All>') or (chkYearAll.Checked <> true) or (chkPeriodAll.Checked <> true) or (cboGLAccount.ItemIndex > 0) then begin
    frmGLHistory.mnuFilter.Checked := true;
    frmGLHistory.qryGLHist.Filtered := true;
    frmGLHistory.tblGLAccnt.Filtered := true;
  end else begin
    frmGLHistory.mnuFilter.Checked := false;
    frmGLHistory.qryGLHist.Filtered := false;
    frmGLHistory.tblGLAccnt.Filtered := false;
  end;
  frmGLHistory.FormShow(Sender);
  frmGLHistory_cboFind_RequeryRequired := true;
  editGLAccount.setfocus;
  self.close;
end;

procedure TfrmGLHistoryFilter.btnCancelClick(Sender: TObject);
begin
  cboAccountType.text := cboAccountTypeOld;
  cboGLAccount.ItemIndex := cboGLAccounts.IndexOf(GLAccountOld);
  if GLAccountOld = '' then editGLAccount.text := '<All>'
  else editGLAccount.text := GLAccount;
  chkYearAll.checked := chkYearAllCheckedOld;
  editYear.text := editYearOld;
  chkPeriodAll.checked := chkPeriodAllCheckedOld;
  editPeriod.text := editPeriodOld;
  editGLAccount.setfocus;
  self.close;
end;

procedure TfrmGLHistoryFilter.btnResetClick(Sender: TObject);
begin
  cboAccountType.text := '<All>';
  cboGLAccount.ItemIndex := 0;
  editGLAccount.text := '<All>';
  chkYearAll.checked := true;
  chkPeriodAll.checked := true;
  editGLAccount.setfocus;
end;

procedure TfrmGLHistoryFilter.FormShow(Sender: TObject);
begin
  if editYearOld = '' then editYear.text := '<All>';
  if editPeriodOld = '' then editPeriod.text := '<All>';
  
  if cboGLAccount.ItemIndex > 0 then GLAccountOld := cboGLAccounts[cboGLAccount.ItemIndex]
  else GLAccountOld := '';
  cboAccountTypeOld := cboAccountType.text;
  chkYearAllCheckedOld := chkYearAll.checked;
  editYearOld := editYear.text;
  chkPeriodAllCheckedOld := chkPeriodAll.checked;
  editPeriodOld := editPeriod.text;

  cboGLAccount_Load(dmLookUps.tblGLAccnt, cboGLAccount);   //Populate "GLAccount" combobox.
  editGLAccount.SelectAll;
end;

procedure TfrmGLHistoryFilter.chkYearAllClick(Sender: TObject);
begin
  if chkYearAll.checked = true then editYear.text := '<All>'
  else begin
    if frmBS1.tblCompanyFiscalYear.value > 0 then editYear.text := frmBS1.tblCompanyFiscalYear.AsString
    else editYear.text := '1997';
  end;
end;

procedure TfrmGLHistoryFilter.FormCreate(Sender: TObject);
begin
  dmLookUps.tblGLAccnt.DatabaseName := strDatabaseName;
  dmLookUps.tblGLAccnt.Active := true;
  cboGLAccounts := TStringList.create;   //Create a TStringList to store GLAccounts for the combobox.

  //editYear.text := '<All>';   //Doesn't work in Delphi 3: UpDown control resets text after this. Now done in FormShow.
  //editPeriod.text := '<All>';
end;

procedure TfrmGLHistoryFilter.UpDownYearClick(Sender: TObject;
  Button: TUDBtnType);
begin
  chkYearAll.checked := false;
  if (editYear.text = '<All>') and (frmBS1.tblCompanyFiscalYear.value > 0) then UpDownYear.position := frmBS1.tblCompanyFiscalYear.value;
end;

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

procedure TfrmGLHistoryFilter.EditGLAccountExit(Sender: TObject);
begin
  if editGLAccount.text = '' then editGLAccount.text := '<All>';
  if editGLAccount.text = '<All>' then cboGLAccount.ItemIndex := 0
  else begin
    if cboGLAccounts.IndexOf(editGLAccount.text) > -1 then cboGLAccount.ItemIndex := cboGLAccounts.IndexOf(editGLAccount.text)
    else begin
      editGLAccount.setfocus;
      raise(Exception.Create('Account ' + '''' + editGLAccount.text + '''' + ' not found'));
    end;
  end;
end;

procedure TfrmGLHistoryFilter.cboGLAccountClick(Sender: TObject);
begin
  if cboGLAccount.Items.IndexOf(cboGLAccount.text) > 0 then editGLAccount.text := GLAccount
  else editGLAccount.text := '<All>';
end;

procedure TfrmGLHistoryFilter.EditGLAccountChange(Sender: TObject);
begin
  if cboGLAccounts.IndexOf(editGLAccount.text) > -1 then cboGLAccount.ItemIndex := cboGLAccounts.IndexOf(editGLAccount.text);
end;

procedure TfrmGLHistoryFilter.chkPeriodAllClick(Sender: TObject);
begin
  if chkPeriodAll.checked = true then editPeriod.text := '<All>'
  else editPeriod.text := '1';
end;

procedure TfrmGLHistoryFilter.UpDownPeriodClick(Sender: TObject;
  Button: TUDBtnType);
begin
  chkPeriodAll.checked := false;
  if editPeriod.text = '<All>' then UpDownPeriod.position := 1;
end;

end.

⌨️ 快捷键说明

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