?? sz_ndfpjhtjfx.pas
字號:
{*******************************************************}
{ }
{ 郵票年度分配計劃分析 }
{ }
{ 中軟金馬公司版權所有。2002.12前 }
{ }
{ 編制:中軟金馬郵資票品項目開發組 }
{ }
{ }
{*******************************************************}
(*
省級綜合查詢
*)
unit sz_NDFPJHTJFX;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
TeEngine, Series, ExtCtrls, TeeProcs, Chart, RXCtrls, StdCtrls, Spin,
Buttons, CheckComboBox, Grids, DBGrids, Db, DBTables, ComboBoxDB;
type
TFrmz_ndfpjhtjfx = class( TForm )
Panel1: TPanel;
GroupBox1: TGroupBox;
Label2: TLabel;
ND: TSpinEdit;
GroupBox2: TGroupBox;
Label3: TLabel;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
RB_Zhu: TRadioButton;
RB_Bing: TRadioButton;
RB_2D: TRadioButton;
RB_3D: TRadioButton;
BBt_Send: TBitBtn;
BBt_Quit: TBitBtn;
RB_Biao: TRadioButton;
ScrollBox1: TScrollBox;
DBGrid1: TDBGrid;
Panel_Tl: TPanel;
Panel3: TPanel;
Panel4: TPanel;
Panel7: TPanel;
Panel5: TPanel;
Chart1: TChart;
Query1: TQuery;
DataSource1: TDataSource;
RxLabel_Title: TRxLabel;
CB_Ppmc: TComboBoxDB;
procedure FormCreate( Sender: TObject );
procedure BBt_SendClick( Sender: TObject );
procedure FormDestroy(Sender: TObject);
procedure NDChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure DoOnGetMarkText( Sender: TChartSeries; ValueIndex: Longint; var MarkText: string );
public
{ Public declarations }
end;
var
Frmz_ndfpjhtjfx: TFrmz_ndfpjhtjfx;
implementation
uses
pub,sz_Main, DataList;
{$R *.DFM}
type
TFieldData = record
Title: string;
Color: TColor;
end;
const
FieldNum = 4;
Spacing = 2;
FieldInfo: array[0..FieldNum - 1] of TFieldData =
( ( Title: '預訂套數'; Color: clRed ),
( Title: '零售套數'; Color: clBlue ),
( Title: '年冊套數'; Color: clGreen ),
( Title: '開發郵品'; Color: clYellow )
);
procedure TFrmz_ndfpjhtjfx.FormCreate( Sender: TObject );
begin
ND.Value := VG_Year;
GetAllColWidth(Self);
end;
procedure TFrmz_ndfpjhtjfx.FormDestroy(Sender: TObject);
begin
// ClearDataList(CB_PPLB.Items);
end;
procedure TFrmz_ndfpjhtjfx.BBt_SendClick( Sender: TObject );
function GetCondND: string;
begin
Result := Format( ' and A.ND=''%d''', [ND.Value] );
end;
function GetCondPPLB: string;
var
i: integer;
begin
Result := ' and A.JHH=''' + CB_Ppmc.Values[CB_Ppmc.ItemIndex] + ''' ';
{ for i := 0 to CB_PPmc.Items.Count - 1 do
if CB_PPmc.Checked[i] then
//第0個表示全部,所以不用處理這個條件
if i > 0 then
if Result = '' then
Result := Result + Format( ' and (A.JHH=''%s''', [string( PItemData( CB_PPLB.Items.Objects[i] )^.Value )] )
else
Result := Result + Format( ' or A.JHH=''%s''', [string( PItemData( CB_PPLB.Items.Objects[i] )^.Value )] )
else
exit;
if Result <> '' then
Result := Result + ')'; }
end;
const
QuerySQL = 'select B.DWMC 單位名稱,A.YDTS 預訂套數,A.LSTS 零售套數,A.NCTS 年冊套數,A.YPTS 開發郵品 from TY_JJNFPJH A,TGS_GXDWSJB B where A.DWDM=B.DWDM(+)';
QuerySQLBing = 'select B.DWMC 單位名稱,A.JHFPZTS 計劃分配總套數 from TY_JJNFPJH A,TGS_GXDWSJB B where A.DWDM=B.DWDM(+)';
var
FChartSeries: TChartSeries;
CondND: string;
CondPPLB: string;
Cap: string;
i, X: integer;
begin
//建立統計圖類
FChartSeries := nil;
if RB_Zhu.Checked then
begin
FChartSeries := TBarSeries.Create( Self );
with TBarSeries( FChartSeries ) do
begin
BarWidthPercent := 100;
end;
end else if RB_Bing.Checked then
FChartSeries := TPieSeries.Create( Self )
else if RB_Biao.Checked then
begin
Chart1.Visible := false;
DBGrid1.Visible := true;
end;
Panel_Tl.Visible := RB_Zhu.Checked;
if FChartSeries <> nil then
begin
Chart1.Visible := true;
DBGrid1.Visible := false;
Chart1.SeriesList.Clear;
if not RB_Bing.Checked then
FChartSeries.OnGetMarkText := DoOnGetMarkText;
Chart1.AxisVisible := true;
Chart1.Title.Text.Clear;
Chart1.AllowZoom := true;
Chart1.AllowPanning := pmBoth;
Chart1.View3DOptions.Orthogonal := true;
Chart1.UndoZoom;
if RB_2D.Checked then
Chart1.View3D := false
else
Chart1.View3D := true;
FChartSeries.ParentChart := Chart1;
FChartSeries.Marks.Font.Name := '宋體';
FChartSeries.Marks.Font.Size := 9;
if RB_Bing.Checked then
FChartSeries.ColorEachPoint := true;
end;
CondND := GetCondND;
CondPPLB := GetCondPPLB;
Query1.Close;
Query1.SQL.Clear;
if not RB_Bing.Checked then
Query1.SQL.Add( QuerySQL )
else
Query1.SQL.Add( QuerySQLBing );
if CondND <> '' then
Query1.SQL.Add( CondND );
if CondPPLB <> '' then
Query1.SQL.Add( CondPPLB );
Query1.Open;
//畫統計圖
if FChartSeries <> nil then
begin
X := 0;
while not Query1.Eof do
begin
for i := 1 to Query1.FieldCount - 1 do
begin
if i > 1 then Cap := ''
else Cap := Query1.Fields[0].AsString;
if RB_Bing.Checked then
FChartSeries.AddXY( X, Query1.Fields[i].AsFloat, Cap )
else
FChartSeries.AddXY( X, Query1.Fields[i].AsFloat, Cap, FieldInfo[i - 1].Color );
X := X + 1;
end;
//以柱狀形勢統計時,在各單位或年度之間留空列
if RB_Zhu.Checked then
X := X + Spacing;
Query1.Next;
end;
end;
end;
procedure TFrmz_ndfpjhtjfx.DoOnGetMarkText( Sender: TChartSeries;
ValueIndex: Integer; var MarkText: string );
begin
MarkText := FormatFloat( '#,##0.###', Sender.YValue[ValueIndex] );
end;
procedure TFrmz_ndfpjhtjfx.NDChange(Sender: TObject);
begin
CB_Ppmc.SQL.Text := 'select A.TMC||''(''||B.MC||'')'' PPMC, A.JHH from TF_PFXJHTAO A, TG_YZPPTZDM B where A.TZDM=B.TZDM(+) and A.ND=''' + ND.Text + ''' order by A.ND,to_number(A.XH)';
CB_Ppmc.Open;
end;
procedure TFrmz_ndfpjhtjfx.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
SaveAllColWidth(Self);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -