📄 arreportsform.pas
字号:
unit ARReportsForm;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
Buttons, ExtCtrls, Mask, Dialogs, DB, DBTables;
type
TfrmARReports = 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;
lblCustomer: TLabel;
cboCustomer: TComboBox;
lblAsOfDate: TLabel;
editAsOfDate: TMaskEdit;
btnAsOfDate: TSpeedButton;
editMinOwing: TEdit;
editMinDays: TEdit;
lblMinOwing: TLabel;
lblMinDays: 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 cboCustomerExit(Sender: TObject);
procedure btnAsOfDateClick(Sender: TObject);
procedure editAsOfDateEnter(Sender: TObject);
procedure editAsOfDateExit(Sender: TObject);
procedure editAsOfDateKeyPress(Sender: TObject; var Key: Char);
procedure editGLPeriodEnter(Sender: TObject);
procedure editGLPeriodExit(Sender: TObject);
procedure editGLYearEnter(Sender: TObject);
procedure editGLYearExit(Sender: TObject);
procedure editMinDaysExit(Sender: TObject);
procedure editMinDaysEnter(Sender: TObject);
procedure editMinOwingEnter(Sender: TObject);
procedure editMinOwingExit(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
private
procedure SetCurrencyID(CurrencyID: integer);
function GetCurrencyID: integer;
procedure SetCustomerID(CustomerID: integer);
function GetCustomerID: integer;
procedure SetGLPeriod(GLPeriod: integer);
function GetGLPeriod: integer;
procedure SetGLYear(GLYear: integer);
function GetGLYear: integer;
procedure SetAsOfDate1(AsOfDate1: TDateTime);
function GetAsOfDate1: TDateTime;
procedure SetMinOwing(MinOwing: currency);
function GetMinOwing: currency;
procedure SetMinDays(MinDays: integer);
function GetMinDays: integer;
public
property CurrencyID: integer read GetCurrencyID write SetCurrencyID;
property CustomerID: integer read GetCustomerID write SetCustomerID;
property GLPeriod: integer read GetGLPeriod write SetGLPeriod;
property GLYear: integer read GetGLYear write SetGLYear;
property AsOfDate1: TDateTime read GetAsOfDate1 write SetAsOfDate1;
property MinOwing: currency read GetMinOwing write SetMinOwing;
property MinDays: integer read GetMinDays write SetMinDays;
end;
var
frmARReports: TfrmARReports;
implementation
uses AgedTrialBalanceReport, LookUpsData, ARHistoryReport, BS1Form, CalendarForm,
ARStatementsReport;
{$R *.DFM}
var
cboCurrencyIDs, cboCustomerIDs: TStringList;
AsOfDate: TDateTime;
intGLPeriod, intGLYear, intMinDays: integer;
curMinOwing: currency;
procedure TfrmARReports.SetCurrencyID(CurrencyID: integer);
begin
CboCurrency.ItemIndex := cboCurrencyIDs.IndexOf(IntToStr(CurrencyID));
end;
function TfrmARReports.GetCurrencyID: integer;
begin
if cboCurrency.ItemIndex > 0 then Result := StrToInt(cboCurrencyIDs[cboCurrency.ItemIndex])
else Result := 0;
end;
procedure TfrmARReports.SetCustomerID(CustomerID: integer);
begin
cboCustomer.ItemIndex := cboCustomerIDs.IndexOf(IntToStr(CustomerID));
end;
function TfrmARReports.GetCustomerID: integer;
begin
if cboCustomer.ItemIndex > 0 then Result := StrToInt(cboCustomerIDs[cboCustomer.ItemIndex])
else Result := 0;
end;
procedure TfrmARReports.SetGLPeriod(GLPeriod: integer);
begin
intGLPeriod := GLPeriod;
end;
function TfrmARReports.GetGLPeriod: integer;
begin
Result := intGLPeriod;
end;
procedure TfrmARReports.SetGLYear(GLYear: integer);
begin
intGLYear := GLYear;
end;
function TfrmARReports.GetGLYear: integer;
begin
Result := intGLYear;
end;
procedure TfrmARReports.SetAsOfDate1(AsOfDate1: TDateTime);
begin
AsOfDate := AsOfDate1;
end;
function TfrmARReports.GetAsOfDate1: TDateTime;
begin
Result := AsOfDate;
end;
procedure TfrmARReports.SetMinOwing(MinOwing: currency);
begin
curMinOwing := MinOwing;
end;
function TfrmARReports.GetMinOwing: currency;
begin
Result := curMinOwing;
end;
procedure TfrmARReports.SetMinDays(MinDays: integer);
begin
intMinDays := MinDays;
end;
function TfrmARReports.GetMinDays: integer;
begin
Result := intMinDays;
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 cboCustomer_Load(const Tbl: TTable; const Cbo: TCombobox);
begin
Cbo.Items.Clear; //Populate "customer" combobox.
cboCustomerIDs.Clear;
Cbo.Items.Add('<All>');
cboCustomerIDs.Add('');
Tbl.First;
while not Tbl.EOF do begin
Cbo.Items.Add(Tbl['CustomerName']);
cboCustomerIDs.Add(Tbl['CustomerID']);
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 SetAsOfDate(var AsOfDate: TDateTime; var editAsOfDate: TMaskEdit);
var
Year, Month, Day: Word;
begin
try
AsOfDate := StrToDate(editAsOfDate.text);
DecodeDate(AsOfDate, Year, Month, Day);
if (Year < 1950) and (Year > 1899) then begin
Year := Year + 100;
AsOfDate := EncodeDate(Year,Month,Day);
end else if (Year > 2050) then begin
Year := Year - 100;
AsOfDate := EncodeDate(Year,Month,Day);
end;
except;
if (editAsOfDate.text = ' 2' + DateSeparator + '29' + DateSeparator + '00') or (editAsOfDate.text = '02' + DateSeparator + '29' + DateSeparator + '00') then AsOfDate := StrToDate('02' + DateSeparator + '29' + DateSeparator + '2000')
else if (editAsOfDate.text = '29' + DateSeparator + '02' + DateSeparator + '00') then AsOfDate := StrToDate('29' + DateSeparator + '02' + DateSeparator + '2000')
else begin
editAsOfDate.setfocus;
raise;
end;
end;
end;
procedure SetcurMinOwing(var curMinOwing: currency; var editMinOwing: TEdit);
var
curWork: currency;
begin
try curWork := StrToFloat(editMinOwing.text); except; editMinOwing.text := '0'; end; //Prevent error if can't convert text to integer.
if (StrToFloat(editMinOwing.text) >= 0) and (StrToFloat(editMinOwing.text) <= 100000) then curMinOwing := StrToFloat(editMinOwing.text)
else begin
editMinOwing.setfocus;
editMinOwing.SelectAll;
raise(exception.create('Min Owing must be between 0 and ' + FloatToStrF(100000,ffCurrency,18,2)));
end;
end;
procedure SetintMinDays(var intMinDays: integer; var editMinDays: TEdit);
var
intWork: integer;
begin
try intWork := StrToInt(editMinDays.text); except; editMinDays.text := '0'; end; //Prevent error if can't convert text to integer.
if (StrToInt(editMinDays.text) >= 0) and (StrToInt(editMinDays.text) <= 100) then intMinDays := StrToInt(editMinDays.text)
else begin
editMinDays.setfocus;
editMinDays.SelectAll;
raise(exception.create('Min Days Old must be between 0 and 100'));
end;
end;
procedure TfrmARReports.btnNextClick(Sender: TObject);
var
strWHERE: string;
begin
if panelReports.visible = true then begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -