📄 apreportsform.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 + -