📄 glhistoryform.pas
字号:
unit GLHistoryForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBCtrls, Grids, DBGrids, DB, DBTables, Menus, ExtCtrls, StdCtrls, Buttons;
type
TfrmGLHistory = class(TForm)
Panel1: TPanel;
MainMenu1: TMainMenu;
tblGLAccnt: TTable;
dsGLHist: TDataSource;
DBGrid1: TDBGrid;
cboFind: TComboBox;
Label1: TLabel;
mnuFile: TMenuItem;
mnuView: TMenuItem;
mnuHelp: TMenuItem;
mnuFilter: TMenuItem;
mnuSortBy: TMenuItem;
mnuRefresh: TMenuItem;
mnuGLAccountsHelp: TMenuItem;
mnuPrint: TMenuItem;
N2: TMenuItem;
mnuExit: TMenuItem;
Bevel1: TBevel;
mnuSortName: TMenuItem;
mnuSortAccountno: TMenuItem;
editFind: TEdit;
tblGLAccntGLAccount: TStringField;
tblGLAccntAccountName: TStringField;
qryGLHist: TQuery;
tblGLAccntSuspended: TBooleanField;
tblGLAccntAccountType: TSmallintField;
N3: TMenuItem;
qryGLHistGLAccount: TStringField;
qryGLHistGLYear: TSmallintField;
qryGLHistGLPeriod: TSmallintField;
qryGLHistSource: TStringField;
qryGLHistTransType: TStringField;
qryGLHistJVNumber: TIntegerField;
qryGLHistTransDate: TDateField;
qryGLHistAmount: TCurrencyField;
qryGLHistTransDescription: TStringField;
qryGLHistVendorID: TIntegerField;
qryGLHistAPInvoiceID: TIntegerField;
qryGLHistCustomerID: TIntegerField;
qryGLHistARInvoiceID: TIntegerField;
qryGLHistAccountName: TStringField;
qryGLHistAccountType: TSmallintField;
qryGLHistPeriodppyyyy: TStringField;
qryGLHistSourceType: TStringField;
mnuSortJVno: TMenuItem;
mnuSortAmount: TMenuItem;
mnuSortDate: TMenuItem;
mnuSortDateAscending: TMenuItem;
mnuSortDateDescending: TMenuItem;
mnuSource: TMenuItem;
N1: TMenuItem;
PopupMenu1: TPopupMenu;
Source1: TMenuItem;
qryGLHistChequeID: TIntegerField;
qryGLHistPaymentID: TIntegerField;
mnuJV: TMenuItem;
JV1: TMenuItem;
btnFilter: TSpeedButton;
procedure mnuRefreshClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Panel1DblClick(Sender: TObject);
procedure cboFindDropDown(Sender: TObject);
procedure cboFindKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure cboFindClick(Sender: TObject);
procedure cboFindKeyPress(Sender: TObject; var Key: Char);
procedure FormShow(Sender: TObject);
procedure editFindKeyPress(Sender: TObject; var Key: Char);
procedure mnuExitClick(Sender: TObject);
procedure mnuSortAccountnoClick(Sender: TObject);
procedure mnuSortNameClick(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure mnuPrintClick(Sender: TObject);
procedure mnuFilterClick(Sender: TObject);
procedure qryGLHistFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
procedure tblGLAccntFilterRecord(DataSet: TDataSet;
var Accept: Boolean);
procedure qryGLHistCalcFields(DataSet: TDataSet);
procedure mnuSortJVnoClick(Sender: TObject);
procedure mnuSortAmountClick(Sender: TObject);
procedure mnuSortDateAscendingClick(Sender: TObject);
procedure mnuSortDateDescendingClick(Sender: TObject);
procedure mnuSourceClick(Sender: TObject);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure mnuJVClick(Sender: TObject);
procedure mnuGLAccountsHelpClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmGLHistory: TfrmGLHistory;
implementation
uses BS1Form, GLHistoryFilterForm, APInvoiceForm, JVForm, APChequeForm,
ARInvoiceForm, GLHistoryReport, ARPaymentForm;
var
intClientHeight, intClientWidth: Integer;
cboFind_GLAccounts: TStringList;
OldWindowState: TWindowState;
{$R *.DFM}
procedure cboFind_Load(const Tbl: TTable; const Cbo: TCombobox);
begin
Cbo.Items.Clear; //Populate "find" combobox.
cboFind_GLAccounts.Clear;
Tbl.First;
while not Tbl.EOF do begin
Cbo.Items.Add(Tbl['AccountName']);
cboFind_GLAccounts.Add(Tbl['GLAccount']);
Tbl.Next;
end;
frmGLHistory_cboFind_RequeryRequired := false;
end;
procedure TfrmGLHistory.mnuRefreshClick(Sender: TObject);
var
Bookmark: TBookmark;
begin
screen.cursor := crHourglass;
Bookmark := qryGLHist.GetBookmark;
with qryGLHist do begin close; open; end; //Refresh.
try qryGLHist.GotoBookmark(Bookmark); except; end;
qryGLHist.FreeBookmark(BookMark);
screen.cursor := crDefault;
end;
procedure TfrmGLHistory.FormCreate(Sender: TObject);
var
x: integer;
begin
qryGLHist.DatabaseName := strDatabaseName;
tblGLAccnt.DatabaseName := strDatabaseName;
qryGLHist.Active := true;
tblGLAccnt.Active := true;
cboFind_GLAccounts := TStringList.create; //Create a TStringList to store Accounts for the "find" combobox.
cboFind_Load(tblGLAccnt, cboFind); //Populate "find" combobox.
if FontFactor <> 1 then begin //If using large fonts, resize grid columns.
intClientWidth := Trunc(20*FontFactor) + DBGrid1.Columns.Count - 1; //Scrollbar + grid lines.
for x := 0 to DBGrid1.Columns.Count - 1 do begin
DBGrid1.Columns[x].width := Trunc(DBGrid1.Columns[x].width*FontFactor);
intClientWidth := intClientWidth + DBGrid1.Columns[x].width;
end;
ClientWidth := intClientWidth;
end;
intClientHeight := ClientHeight; //Store form size.
intClientWidth := ClientWidth;
end;
procedure TfrmGLHistory.Panel1DblClick(Sender: TObject);
begin
ClientHeight := intClientHeight; //Resize form.
ClientWidth := intClientWidth;
end;
procedure TfrmGLHistory.cboFindDropDown(Sender: TObject);
begin
if frmGLHistory_cboFind_RequeryRequired = true then cboFind_Load(tblGLAccnt, cboFind); //Populate "find" combobox.
end;
procedure TfrmGLHistory.cboFindKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if frmGLHistory_cboFind_RequeryRequired = true then cboFind_Load(tblGLAccnt, cboFind); //Populate "find" combobox.
end;
procedure TfrmGLHistory.cboFindClick(Sender: TObject);
begin
if cboFind.Text = '' then exit;
editFind.text := '';
if cboFind.Items.IndexOf(cboFind.Text) < 0 then raise(Exception.Create('Choose an item from the list'));
if qryGLHist.Locate('GLAccount', cboFind_GLAccounts[cboFind.ItemIndex], []) <> true then raise(Exception.Create('''' + cboFind.Text + '''' + ' not found'));
end;
procedure TfrmGLHistory.cboFindKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then begin
Key := #0; //Cancel Enter key.
if (cboFind.Text = '') or (cboFind.Text = '<Account name>') then begin
Perform(WM_NEXTDLGCTL, 0, 0); //Advance to next control.
exit;
end;
cboFindClick(Sender); //Trigger click event (in case partial text was entered then combobox opened: item would show as selected, but Enter wouldn't process it).
Perform(WM_NEXTDLGCTL, 0, 0); //Advance to next control.
end;
end;
procedure TfrmGLHistory.FormShow(Sender: TObject);
begin
cboFind.ItemIndex := 0; //Reset selected item to 1st (so down arrow scrolls from start).
cboFind.text := '<Account name>'; //Clear selection.
editFind.text := '<Account no.>';
editFind.setfocus;
editFind.SelectAll;
qryGLHist.First; //Reset grid to start at 1st record.
if mnuFilter.checked = true then caption := 'GL History (Filtered)'
else caption := 'GL History';
end;
procedure TfrmGLHistory.editFindKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then begin
Key := #0; //Cancel Enter key.
if (editFind.Text = '') or (editFind.Text = '<Account no.>') then begin
Perform(WM_NEXTDLGCTL, 0, 0); //Advance to next control.
exit;
end;
cboFind.text := '';
if qryGLHist.Locate('GLAccount', editFind.Text, []) <> true then begin
editFind.SelectAll;
raise(Exception.Create('Account ' + '''' + editFind.Text + '''' + ' not found'));
end else DBGrid1.setfocus;
end;
end;
procedure TfrmGLHistory.mnuExitClick(Sender: TObject);
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -