📄 chartsalescunit.~pas
字号:
unit ChartSaleSCUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CheckLst, ComCtrls, Buttons, TeEngine, Series,
TeeProcs, Chart, DbChart, ExtCtrls, DB, DBTables;
type
TChartSaleSCForm = class(TForm)
Query_data: TQuery;
PanelBkGnd: TPanel;
DBC_data: TDBChart;
Series_two: TBarSeries;
Series_one: TBarSeries;
Panel_top: TPanel;
SB_query: TSpeedButton;
Label4: TLabel;
Panel_printbutton: TPanel;
SB_print: TSpeedButton;
DTP_begin: TDateTimePicker;
DTP_end: TDateTimePicker;
Panel_bottom: TPanel;
Panel_closebutton: TPanel;
DFB_CLOSE: TButton;
CB_3DCHART: TCheckBox;
TrackBar_3dview: TTrackBar;
Panel_field: TPanel;
CLB_name: TCheckListBox;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure DTP_beginChange(Sender: TObject);
procedure DTP_endChange(Sender: TObject);
procedure CLB_nameClick(Sender: TObject);
procedure SB_queryClick(Sender: TObject);
procedure DFB_CLOSEClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ChartSaleSCForm: TChartSaleSCForm;
implementation
uses MainUnit, FunctionUnit, PrograssUnit;
{$R *.dfm}
procedure TChartSaleSCForm.FormCreate(Sender: TObject);
begin
self.Caption := application.Title + ' - 商场销售分析';
DBC_data.Title.Font.Color := clNavy;
DBC_data.Title.Text.Clear;
DBC_data.Title.Text.Add('商场销售对比图');
DBC_data.LeftAxis.Title.Font.Color := clNavy;
DBC_data.LeftAxis.Title.Caption := '金额(人民币)';
series_one.Title := '销售量';
series_two.Title := '退货量';
with query_data do
begin
close;
sql.Clear;
sql.Text := 'select name from depot where type="外部"';
open;
clb_name.Clear;
clb_name.Items.Append('所有');
while not eof do
begin
clb_name.Items.Append(fieldbyname('name').asstring);
next;
end;
clb_name.Checked[0] := true;
// CLB_nameClick(sender);
close;
end;
end;
procedure TChartSaleSCForm.FormShow(Sender: TObject);
begin
SB_query.Click;
end;
procedure TChartSaleSCForm.DTP_beginChange(Sender: TObject);
begin
series_one.Clear;
Series_two.Clear;
end;
procedure TChartSaleSCForm.DTP_endChange(Sender: TObject);
begin
series_one.Clear;
Series_two.Clear;
end;
procedure TChartSaleSCForm.CLB_nameClick(Sender: TObject);
var
I_index: integer;
begin
inherited;
series_one.Clear;
Series_two.Clear;
if clb_name.Checked[0] then
begin
for I_index := 1 to clb_name.Items.Count - 1 do
begin
clb_name.Checked[I_index] := true;
end;
end
else
for I_index := 1 to clb_name.Items.Count - 1 do
begin
if not clb_name.Checked[I_index] then
begin
clb_name.Checked[0] := false;
break;
end;
end;
sb_query.Enabled := true;
end;
procedure TChartSaleSCForm.SB_queryClick(Sender: TObject);
var
D_number: double;
S_DEPOTname, S_begindate, S_enddate: string;
I_index: integer;
begin
inherited;
S_begindate := formatdatetime('yyyy-mm-dd', dtp_begin.Date);
S_enddate := formatdatetime('yyyy-mm-dd', dtp_end.Date);
if S_begindate > S_enddate then //开始日期大于结束日期
begin
messagedlg(Errormsg0012 + '0026', mtError, [mbok], 0);
dtp_begin.SetFocus;
exit;
end;
series_one.Clear;
Series_two.Clear;
application.CreateForm(TPrograssForm, PrograssForm);
PrograssForm.P_message.Caption := '系统正在读取数据,请稍候……';
PrograssForm.FormStyle := fsStayOnTop;
PrograssForm.show;
PrograssForm.Update;
application.ProcessMessages;
for I_index := 1 to clb_name.Items.Count - 1 do
begin
if clb_name.Checked[I_index] then
begin
S_DEPOTname := clb_name.Items.Strings[I_index];
with query_data do
begin
close;
sql.Text := 'SELECT SUM( Sellrecord.NUMBER * Sellrecord.PRICE ) COUNTNUMBER'
+ ' FROM Sellrecord INNER JOIN DEPOT ON (Sellrecord.DEPOTID = DEPOT.Id)'
+ ' WHERE DEPOT.Name = "' + S_DEPOTname + '"'
+ ' AND Sellrecord.MYDATE>="' + S_begindate + '" AND Sellrecord.MYDATE<="' + S_enddate + '"';
open;
D_number := query_data.fieldbyname('COUNTNUMBER').AsFloat;
series_one.AddBar(D_number, S_DEPOTname, CLBLUE);
close;
sql.Text := 'SELECT SUM( xsthrecord.NUMBER * xsthrecord.PRICE ) COUNTNUMBER'
+ ' FROM xsthrecord INNER JOIN DEPOT ON (xsthrecord.DEPOTID = DEPOT.Id)'
+ ' WHERE DEPOT.Name = "' + S_DEPOTname + '"'
+ ' AND xsthrecord.MYDATE>="' + S_begindate + '" AND xsthrecord.MYDATE<="' + S_enddate + '"';
open;
D_number := query_data.fieldbyname('COUNTNUMBER').AsFloat;
series_two.AddBar(D_number, S_DEPOTname, CLRED);
end;
end;
end;
PrograssForm.free;
end;
procedure TChartSaleSCForm.DFB_CLOSEClick(Sender: TObject);
begin
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -