5.2 ͼ±í¾ö²ß·ÖÎö·½°¸
ͼ±í¾ö²ß·ÖÎöÊǽ«Êý¾ÝÐÅÏ¢ÒÔͼ±íµÄÐÎʽ½øÐÐÏÔʾ£¬Í¨¹ýͼ±íÖеÄͼÐΣ¬Ö±¹ÛµÄ¶ÔÊý¾ÝÐÅÏ¢½øÐÐÈ«Ãæ·ÖÎö¡£
ÔÚÓÃͼ±íÏÔʾÊý¾Ý¿âÖеÄÊý¾Ýʱ£¬Ò»°ã¶¼Ê¹ÓÃTDBChart×é¼þ£¬ÒòΪËü¿ÉÒÔÖ±½ÓÓëÊý¾Ý¿âÏàÁ¬½Ó£¬TChart×é¼þÒ²¿ÉÒÔ»ñÈ¡Êý¾Ý¿âÖеÄÐÅÏ¢£¬²¢½øÐÐÏÔʾ£¬Ö»ÊÇÆä²Ù×÷¹ý³ÌÏà¶ÔÓÚTDBChart×é¼þÒªÂé·³µÄ¶à¡£ÏÂÃæ½«Ö÷ÒªÒÔTDBChart×é¼þΪÀý£¬Ïêϸ½²½âͼ±íµÄÓ¦Óá£
5.2.1 µ¥Í¼±í·ÖÎö·½°¸
µ¥Í¼±íÊǽ«Í¼±íÓëÊý¾Ý¿âÏàÁ¬½Ó£¬²¢ÒÔµ¥Ò»µÄͼ±íÀàÐÍÀ´ÏÔʾÊý¾ÝÄÚÈÝ¡£±¾·½°¸ÊÇͨ¹ýµ¥Í¼±í¶ÔÊý¾Ý¿âÖеÄÊý¾Ý½øÐÐͳ¼Æ·ÖÎö¡£
1£®·½°¸·ÖÎö
ÔÚÖÆ×÷¹ÜÀíϵͳʱ£¬ÓÐʱÐèÒª¶ÔÊý¾Ý±íÖеÄÊý¾Ý½øÐÐͳ¼Æ£¬ÎªÁËÄÜÈþö²ßÕ߸üÖ±¹ÛµÄÁ˽âÊý¾ÝµÄ±ä¶¯Çé¿ö£¬¿ÉÒÔÓõ¥Í¼±íÀ´ÏÔʾÊý¾ÝµÄͳ¼Æ½á¹û¡£
µ¥Í¼±í¿ª·¢Éè¼Æ²½Ö裺
£¨1£©È·¶¨ÒÔͼ±íÏÔʾµÄÊý¾Ý£»
£¨2£©¶ÔÊý¾Ý±íÖеÄÐÅÏ¢½øÐзÖ×é¡¢»ã×ܵȲÙ×÷£¬ÒÔ±ãͼ±í½øÐÐÏÔʾ£»
£¨3£©Í¨¹ýÊý¾ÝÑ¡ÔñÊʺϵÄͼ±íÀàÐÍ£»
£¨4£©¶Ôͼ±í½øÐÐÏàÓ¦µÄ¿ØÖÆ¡£
ÔÚÖÆ×÷µ¥Í¼±íʱ£¬Ê×ÏÈҪȷ¶¨¶Ô³ÌÐòÖеÄÄÇÒ»·½Ãæ½øÐÐͼ±í·ÖÎö£¬È»ºó¶ÔÏàÓ¦µÄÊý¾Ý±í½øÐзÖÎö£¬Ê¹Æä¿ÉÒÔ¸ù¾ÝÐèÒªÉú³Éͼ±í£¬×îºó¸ù¾ÝÊý¾Ý±íÖеÄÐÅÏ¢¶Ôͼ±íµÄÏÔʾÇé¿ö½øÐÐÏàÓ¦µÄµ÷Õû¡£ÏÂÃæ¸ø³öµ¥Í¼±íµÄÖÆ×÷Á÷³Ìͼ£¬Èçͼ5.11Ëùʾ¡£

ͼ5.11 µ¥Í¼±íÖÆ×÷Á÷³Ìͼ
ÔÚÖ±½ÓÉú³Éͼ±íʱ£¬Ö÷ÒªÓÐÒÔϼ¸¸öÄѵ㣺
£¨1£©ÈçºÎʹÊý¾Ý±íÖеÄÊý¾Ý·ûºÏͼ±íµÄÒªÇó¡£
£¨2£©µ±Êý¾Ý¹ý¶àʱ£¬ÈçºÎÏÔʾͼ±í¡£
ÔÚÉè¼ÆÍ¼±íʱ£¬Òª¸ù¾Ý¿Í»§µÄÐèÒª½«Êý¾Ý±íÖеÄÊý¾Ý½øÐзÖ×é¡¢»ã×ܵȲÙ×÷£¬Åжϵ±Ç°Êý¾ÝÊʺÏÓÚÄÇÒ»ÀàÐ͵Äͼ±í£¬ÀýÈ磬Ҫͳ¼ÆÄ³Äê¸÷ÔµÄÏúÊÛÁ¿£¬¿ÉÒÔʹÓÃÌõÐÍͼ£»ÒªÍ³¼Æ¸÷µØÏúÊÛÁ¿Õ¼×ÜÏúÊÛÁ¿µÄ°Ù·Ö±È£¬¿ÉÒÔʹÓñýÐÍͼ¡£
ÖÆ×÷ͼ±íʱ£¬ÒªÁ˽âͼ±íËù¶ÔÓ¦Êý¾Ý±íµÄÐÅÏ¢£¬ÅжÏÐÅÏ¢ÊDz»ÊÇ¿ÉÒÔÓëͼ±íÖ±½ÓÏà¹ØÁª£¬´ó¶àÊýµÄÊý¾Ý±í¶¼²»ÄÜÖ±½ÓÓëͼ±íÏàÁ¬½Ó£¬±ØÐè¶ÔÊý¾Ý±íµÄÊý¾Ý½øÐлã×Ü¡¢Í³¼Æ¡¢·Ö×éµÈ²Ù×÷ºó²ÅÄÜÔÚͼ±íÖÐÏÔʾËùÐèÒªµÄÊý¾Ý¡£
2£®ÊµÊ©¹ý³Ì
ÔÚ¿ª·¢ÏúÊÛ¹ÜÀíϵͳʱ£¬¾³£ÐèÒª¶ÔÉÌÆ·µÄÈÕÏúÊÛÁ¿¡¢ÔÂÏúÊÛÁ¿¼°ÄêÏúÊÛÁ¿µÈÏúÊÛÇé¿ö½øÐÐϵͳµÄ·ÖÎö£¬ÕâÑù£¬¿ÉÒԺܿìµÄ·ÖÎö³öÄĸöÉÌÆ·µÄÏúÊÛÁ¿×îºÃ£¬»òÊÇÄÄÖÖÉÌÆ·ÔÚij¸öʱ¼ä¶ÎÄÚµÄÏúÊÛÁ¿×î¸ß¡£ÏÂÃæÒÔͳ¼ÆÄ³ÔµÄÈÕÏúÊÛÁ¿ÎªÀý½éÉܵ¥Í¼±íµÄÖÆ×÷¹ý³Ì¡£
l ·½·¨Ò» ÓÃÌõÐÍͼÏÔʾÈÕÏúÊÛÁ¿
ʵÀýλÖ㺹âÅÌ\mr\5\5.2\5.2.1\01
ÔÚÖÆ×÷ÈÕÏúÊÛͼ±íǰ£¬Ê×ÏÈÒª¶ÔÈÕÏúÊÛÐÅÏ¢½øÐвéѯ£¬Èçͼ5.12Ëùʾ£¬È»ºóµ¥»÷¡°Í¼±í¡±°´Å¥Ê±£¬½«µ¯³ö¡°ÈÕÏúÊÛ¶îͼ±í¡±´°Ì壬Èçͼ5.13Ëùʾ¡£

ͼ5.12 ²úÆ·ÏúÊÛ±í

ͼ5.13 ÔÂÏúÊÛͼ±í
³ÌÐò¸÷´°ÌåÖÐÏà¹Ø×é¼þ˵Ã÷£¬Èç±í5.3Ëùʾ¡£
±í5.3 ¸÷´°ÌåµÄÏà¹Ø×é¼þ
|
¶ÔÏóÃû |
¶ÔÏóÀàÐÍ |
ÊôÐÔ |
Öµ |
|
Module |
TDataModule |
Name |
Module |
|
ADOConnection1 |
TADOConnection |
ConnectionString |
Á¬½ÓÊý¾Ý¿â |
|
ADOQuery1 |
TADOQuery |
Connection |
ADOConnection1 |
|
ADOQuery2 |
ADOConnection1 |
||
|
DataSource1 |
TDataSource |
DataSet |
ADOQuery1 |
|
DataSource2 |
ADOQuery2 |
||
|
Form1 |
TForm |
Caption |
²úÆ·ÏúÊÛ±í |
|
Edit1 |
TEdit |
Text |
2006 |
|
Edit2 |
1 |
||
|
Button1 |
TButton |
Caption |
ͼ±í |
|
Button2 |
²éѯ |
||
|
Form3 |
TForm |
Caption |
ÈÕÏúÊÛͼ±í |
|
DBChart1 |
TDBChart1 |
½«Í¼±íÉèÖÃΪÌõÐÍͼ |
ʹÓÃTDataModule´°ÌåÀ´´æ·ÅADO×é¼þ£¬ÊÇΪÁË·½±ãµ÷ÓÃTADOQuery×é¼þ£¬Ò²¿ÉÒÔÖØ¸´µ÷ÓÃͬһ¸öTADOQuery×é¼þ¡£
ÒªÖÆ×÷ijÔµÄÈÕÏúÊÛ¶îͼ±í£¬Ê×ÏÈÒª¶ÔÊý¾Ý¿âÖеÄÏàÓ¦±í¸ñ½øÐзÖÎö¡£Mr_DistributionÊý¾Ý¿âÖеÄtb_DistÊý¾Ý±í£¬Èçͼ5.14Ëùʾ¡£

ͼ5.14 tb_DistÊý¾Ý±íÖеÄÐÅÏ¢
ÔÚͼ5.14ËùʾµÄÊý¾Ý±íÖпÉÒÔ¿´³öͬһÈÕÆÚÓжà¸ö¼Ç¼£¬ÕâÑù¾Í²»ÄÜÒÔͼ±íµÄÐÎʽÀ´ÏÔʾÿÔµÄÈÕÏúÊÛÁ¿£¬ËùÒÔÔÚ¡°²úÆ·ÏúÊÛ±í¡±´°ÌåÖе¥»÷¡°Í¼±í¡±°´Å¥Ê±£¬Ó¦µ±ÔÚOnClickʼþÖжÔÊý¾Ý±ítb_DistÖеÄTradeDate×ֶνøÐзÖ×é»ã×Ü£¬Ê¹TradeDate×Ö¶ÎÖеÄÖØ¸´¼Ç¼µ¥Ò»ÏÔʾ£¬²¢½«TradeMoney×ֶνøÐÐÇóºÍ¡£ÎªÁËÄܹ»¶ÔÖ¸¶¨ÄêÖ¸¶¨Ô·ݵÄÈÕÏúÊÛÁ¿½øÐÐÏÔʾ£¬±ØÐ뽫Êý¾Ý±íÖеÄÐÅÏ¢»ã×Üǰ£¬¶ÔÄê·ÝºÍÔ·ݽøÐÐÉèÖá£Ïà¹Ø´úÂëÈçÏ£º
VYear := Trim(Edit1.Text); //Äê·Ý
VMonth := Trim(Edit2.Text); //Ô·Ý
if ((StrToInt(VYear)>1949) and ((StrToInt(VMonth)>0) and (StrToInt(VMonth)<13))) then
begin
with Module.ADOQuery2 do //ÓÃADOQuery2½«Êý¾Ý±íÖеÄÊý¾Ý½øÐлã×Ü
begin
Close;
SQL.Clear;
SQL.Add('Select Day(TradeDate) as TDay,Sum(TradeMoney) TMoney');
SQL.Add('From tb_Dist Where (Month(TradeDate)='+VMonth+') And (Year(TradeDate)
='+VYear+')');
SQL.Add('Group BY TradeDate');
Open;
end;
//µ÷ÓÃͼ±íÏÔʾ´°Ìå
Application.CreateForm(TForm3,Form3);
Form3.ShowModal;
Form3.Free;
end;
ÓÃADOQuery2×é¼þ¶Ôtb_Dist±íÖеÄTradeDate×ֶνøÐзÖ×飬²¢½«TradeMoney×ֶνøÐÐÇóºÍ£¬Èçͼ5.15Ëùʾ¡£È»ºó¶¯Ì¬µ÷Óá°ÈÕÏúÊÛ¶îͼ±í¡±´°Ìå¡£

ͼ5.15 ½«tb_Dist±íÖеÄÊý¾Ý»ã×ܳÉÈÕÏúÊÛÁ¿
Ôڸô°ÌåµÄOnCreateʼþÖжÔͼ±íµÄÏÔʾÑùʽ½øÐÐÉèÖá£
ÔÚÏÔʾͼ±íʱ£¬Ó¦ÔÚͼ±íµÄ¶¥²¿±êÌâÉ϶Ôͼ±í½øÐй¦ÄÜ˵Ã÷£¬ÔÚÉèÖö¥²¿±êÌâʱ£¬Ê×ÏÈÒª½«ÔÓеıêÌâ½øÐÐÇå³ý£¬È»ºóÔÚ¶¥²¿±êÌâÉÏÉèÖÃͼ±íµÄÏà¹Ø¹¦ÄÜ˵Ã÷£¬´úÂëÈçÏ£º
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('ÉÌÆ·'+Form1.VYear+'Äê'+Form1.VMonth+'Ô·ÝÏúÊÛ½ð¶îͼ±í');
È»ºó½«ADOQuery2×é¼þÖÐÒÑ»ã×ܵÄÊý¾ÝÐÅÏ¢Óëͼ±íÏàÁ¬½Ó£¬TDBChart×é¼þµÄXLabelsSourceÊôÐÔÖ»ÄÜ»ñÈ¡×Ö·ûÐ͵Ä×ֶΣ¬TDBChart×é¼þµÄYValuesµÄValueSourceÊôÐÔÖ»ÄÜ»ñÈ¡ÕûÐÍ¡¢¸¡µãÐÍ£¬»õ±ÒÐ͵Ä×ֶΡ£´úÂëÈçÏ£º
DBChart1.Series[0].DataSource := Module.ADOQuery2;
DBChart1.Series[0].XLabelsSource := 'TDay';
DBChart1.Series[0].YValues.ValueSource := 'TMoney';
²»Í¬µÄ¹«Ë¾ËùÊÕÈ¡µÄ»õ±ÒÀàÐÍ¿ÉÄܲ»Í¬£¬µ±YÖáΪ»õ±Ò½ð¶îʱ£¬¿ÉÒÔÓÃͼ±íµÄ×ó±êÌâÔÚͼ±íÉÏÏÔʾ»õ±ÒÀàÐÍ¡£´úÂëÈçÏ£º
DBChart1.LeftAxis.Title.Caption := '»õ±ÒÀàÐÍ£ºÈËÃñ±Ò';
DBChart1.LeftAxis.Title.Font.Color := clRed;
µ±Ö¸¶¨µÄÊý¾Ý¼ÓÔØµ½Í¼±íʱ£¬Ó¦¸Ã¶ÔÊý¾ÝµÄ¶àÉÙ½øÐпØÖÆ£¬ÌرðÊÇÌõÐÍͼ£¬Èç¹ûÊý¾Ý¹ý¶àʱ£¬ÎÞ·¨½«Êý¾ÝÒÔÌõÐÍͼµÄ·½Ê½Çå³þµÄÏÔʾÔÚͼ±íÉÏ£¬Õâʱ£¬¾ÍÐèÒª¶Ôͼ±í½øÐзÖÒ³ÏÔʾ£¬¿ÉÒÔÓÃTDBChart×é¼þµÄMaxPointsPerPageÊôÐÔÀ´ÉèÖÃͼ±íÿҳÏÔʾÊý¾ÝµÄ×î´ó¸öÊý¡£Í¼±íÖеÄͼÀý½«ÏÔʾ¼ÓÔØºóµÄËùÓмǼ£¬µ«ÊÇ£¬ÒòΪͼ±íµÄ¸ß¶ÈÓÐÏÞ£¬²»ÄÜÔÚͼÀýÖÐÏÔʾȫ²¿£¬Ó¦ÓÃLegendµÄVisibleÊôÐÔ½«ÆäÒþ²Ø£¬ÎªÁËÄÜÈòÙ×÷Õß¿´µ½Ã¿¸öÊý¾Ý¿éÖеÄʵ¼ÊÊýÖµ£¬Ó¦ÔÚÊý¾Ý¿éµÄ±êÇ©ÖÐÏÔʾÏàÓ¦µÄÖµ¡£´úÂëÈçÏ£º
DBChart1.MaxPointsPerPage := 7; //ÉèÖÃÿҳÏÔʾµÄ×î´óÊý¾Ý¸öÊý
DBChart1.LeftAxis.Automatic := False; //ʹYÖáµÄ×î´óÖµ²»×Ô¶¯ÉèÖÃ
DBChart1.LeftAxis.Maximum := DBChart1.Series[0].MaxYValue+2000; //ÉèÖÃYÖáµÄ×î´óÖµ
DBChart1.Series[0].Marks.Style := smsValue; //ÉèÖñêÇ©µÄÏÔʾÑùʽ
if Module.ADOQuery2.recordcount>7 then //µ±Êý¾Ý³¬¹ýһҳʱ£¬ÔÚͼ±íµÄÏÂÃæÏÔʾÈçºÎ½øÐзҳ
begin
DBChart1.BottomAxis.Title.Caption := 'ÓÃÊó±ê×ó¼ü»òÓÒ¼ü½øÐÐÉÏÒ»Ò³»òÏÂÒ»Ò³²Ù×÷';
DBChart1.BottomAxis.Title.Font.Size := 8;
DBChart1.BottomAxis.Title.Font.Color := clBlue;
DBChart1.Legend.Visible := False; //Òþ²ØÍ¼Àý
end
µ±Í¼±í·ÖÒ³ºó£¬Ó¦¸Ã¶Ôͼ±í½øÐзҳ²Ù×÷£¬¿ÉÒÔÔÚTDBChart×é¼þµÄOnClickBackgroundÖÐÓøÃ×é¼þµÄNextPageºÍPreviousPageÊôÐÔ½øÐÐͼ±í·Ò³²Ù×÷¡£´úÂëÈçÏ£º
procedure TForm3.DBChart1ClickBackground(Sender: TCustomChart;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
//ÓÃÊó±ê¶Ôͼ±í½øÐзҳ
if Button = mbLeft then
DBChart1.NextPage
else if Button = mbRight then
DBChart1.PreviousPage;
end;
ÔÚͼ±í·Ò³µÄͬʱ£¬Ó¦¸ÃÔÚͼ±íÉÏÏÔʾµ±Ç°Ò³Êǵڼ¸Ò³£¬¿ÉÒÔÔÚOnAfterDrawʼþÖÐÓÃDBChart1×é¼þµÄTextOut·½·¨½«PageÊôÐÔËù»ñÈ¡µÄµ±Ç°Ò³µÄÊýÁ¿ÖØ»µ½Í¼±íµÄÖ¸¶¨Î»ÖÃÉÏ¡£´úÂëÈçÏ£º
procedure TForm3.DBChart1AfterDraw(Sender: TObject);
var
SPage : String;
begin
if Module.ADOQuery2.recordcount>7 then //ÔÚͼ±íÖÐÏÔʾµ±Ç°Êǵڼ¸Ò³
begin
DBChart1.Canvas.Font.Color := clBlue;
DBChart1.Canvas.Font.Size := 8;
DBChart1.Canvas.Brush.Style := bsclear;
SPage := 'µÚ'+IntToStr(DBChart1.Page)+'Ò³';
DBChart1.Canvas.TextOut(10,10,SPage);
end;
end;
ÔÚ¶ÔÈÕÏúÊÛÁ¿½øÐÐͳ¼ÆÊ±£¬¿ÉÒÔÔÚͼ±íµÄºá×ø±êÉÏ£¬½«ÖÜÁùÖÜÈÕµÄÈÕÆÚ¸Ä³ÉºìÉ«£¬ÒÔ±ã²Ù×÷ÕߺÜÈÝÒ׵ľÍÄÜ¿´³öË«ÐÝÈÕµÄÏúÊÛÇé¿ö¡£¿ÉÒÔÔÚTDBChart×é¼þµÄOnGetAxisLabelʼþÖнøÐÐÉèÖᣴúÂëÈçÏ£º
procedure TForm3.DBChart1GetAxisLabel(Sender: TChartAxis;
Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
var
L_Date : TDateTime;
S : String;
begin
if (Sender = DBChart1.BottomAxis) then
begin
S := Form1.VYear+'-'+form1.VMonth+'-'+labelText;
if Pos('.',S)=0 then
begin
L_Date:=StrToDate(S);
if (DayOfWeek(L_Date)=1) or (DayOfWeek(L_Date)=7) then
DBChart1.BottomAxis.LabelsFont.Color:=clRed
else
DBChart1.BottomAxis.LabelsFont.Color:=clBlack;
end;
end;
end;
l ·½·¨¶þ ÓÃÕÛÏßͼÏÔʾÈÕÏúÊÛµÄÇ÷ÊÆÍ¼
ʵÀýλÖ㺹âÅÌ\mr\5\5.2\5.2.1\02
ÓÃÌõÐÍͼÏÔʾÈÕÏúÊÛ¶îʱ£¬Ö»ÄܶÔijÔµÄÈÕÏúÁ¿½øÐÐÏÔʾ£¬ÎÞ·¨ÏÔʾijÔµÄÏúÊÛÇ÷ÊÆ£¬Õâʱ£¬¿ÉÒÔÓÃÕÛÏßͼÀ´ÏÔʾijÔµÄÈÕÏúÊÛÇ÷ÊÆ£¬Ö»ÐèÒª½«¡°ÈÕÏúÊÛ¶îͼ±í¡±´°ÌåÖÐTDBChart×é¼þµÄÌõÐÍͼɾ³ý£¬ÔÙÌí¼ÓÒ»¸öÕÛÏßͼ¼´¿É£¨½«Í¼ÐÎÉèÖÃÎªÆ½ÃæÐ§¹û£©£¬È»ºóÔÚ¡°ÈÕÏúÊÛ¶îͼ±í¡±´°ÌåµÄOnCreateʼþÖÐÌí¼ÓÈçÏ´úÂ룬±ã¿ÉÒÔÖÆ×÷Ò»¸öÈÕÏúÊÛÇ÷ÊÆÍ¼¡£
procedure TForm3.FormCreate(Sender: TObject);
begin
if Module.ADOQuery2.recordcount>0 then //ͼ±íÓëÊý¾Ý¿âÏàÁ¬½Ó
begin
DBChart1.Title.Text.Clear;
DBChart1.Title.Text.Add('ÉÌÆ·'+Form1.VYear+'Äê'+Form1.VMonth+'Ô·ÝÏúÊÛÇ÷ÊÆÍ¼');
DBChart1.LeftAxis.Title.Caption := '»õ±ÒÀàÐÍ£ºÈËÃñ±Ò';
DBChart1.LeftAxis.Title.Font.Color := clRed;
DBChart1.Series[0].DataSource := Module.ADOQuery2;
DBChart1.Series[0].XLabelsSource := 'TDay';
DBChart1.Series[0].YValues.ValueSource := 'TMoney';
DBChart1.Series[0].Marks.Style := smsValue; //ÉèÖñêÇ©µÄÏÔʾÑùʽ
DBChart1.LeftAxis.Automatic := False; //ʹYÖáµÄ×î´óÖµ²»×Ô¶¯ÉèÖÃ
DBChart1.LeftAxis.Maximum := DBChart1.Series[0].MaxYValue+1000; //ÉèÖÃYÖáµÄ×î´óÖµ
DBChart1.Legend.Visible := False;
end;
end;
ÔËÐнá¹ûÈçͼ5.16Ëùʾ¡£

ͼ5.16 ÈÕÏúÊÛ¶îͼ±í
3£®²¹³ä˵Ã÷
Óõ¥Í¼±íÏÔʾÊý¾Ýʱ£¬Ò²¿ÉÒÔÓñýÐÍͼÀ´ÏÔʾÊý¾ÝÖ®¼äµÄ±ÈÀý¹ØÏµ£¬ÎªÁËÄÜʹ±ýÐÍͼ¾ßÓж¯Ì¬Ð§¹û£¬¿ÉÒÔͨ¹ýÊó±êµ¥»÷ʵÏÖ±ýÐÍͼµÄÐýתЧ¹û¡£
µ±Êó±êÔÚ±ýÐÍͼÉϵ¥»÷ʱ£¬¿ÉÒÔͨ¹ýDBChart1×é¼þµÄOnClickSeriesʼþÀ´»ñÈ¡µ±Ç°Êó±êµÄYÖá×øÖµºÍ±ýÐÍͼ±íµÄÐýתֵ¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm3.DBChart1ClickSeries(Sender: TCustomChart;
Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button = mbLeft then
begin
CSVal := y; //±£´æÊó±êµ¥»÷ʱµÄYÖá×ø±êÖµ
CSer := True; //±êʶ
CSRot := Series1.RotationAngle; //±£´æµ±Ç°±ýÐÍͼµÄÐýת¶È
end;
end;
±ýÐÍͼµÄÐýת¶ÈÊýÔÚ0~360Ö®¼ä£¬Í¨¹ýÒÆ¶¯ºóµÄYÖá×ø±êÓëµ¥»÷ʱYÖá×ø±êµÄ²î£¬ÔÙ¼ÓÉϱýÐÍͼ±íµÄÐýת¶ÈÊý£¬±ã¿ÉÒÔʹͼ±í½øÐÐÐýת£¬¸Ã²Ù×÷¿ÉÒÔÔÚͼ±íµÄOn MouseMoveʼþÖвÙ×÷£¨Êó±êÒÆ¶¯Ê¼þ£©¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm3.DBChart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if CSer=True then //µ±ÎªTrueʱ£¬Í¼±í½«ËæÊó±êµÄÒÆ¶¯¶øÐýת
begin
if Series1.RotationAngle>359 then
begin
CSRot := 1;
end;
if Series1.RotationAngle<1 then
begin
CSRot := 359;
end;
Series1.RotationAngle := abs(CSRot+(CSVal-y));
end;
end;
µ±Êó±êËÉ¿ªÊ±£¬Ê¹Í¼±í²»ÔÙÐýת¡£´úÂëÈçÏ£º
procedure TForm3.DBChart1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
CSer := False;
end;
5.2.2 ¸¸×Ó¼¶¹ØÁªÍ¼±í·ÖÎö·½°¸
¸¸×Ó¼¶¹ØÁªÍ¼±íÊǽ«´ó·¶Î§µÄÊý¾ÝÏÔʾÔÚ¸¸¼¶Í¼±íÖУ¬È»ºóÔÚ×Ó¼¶Í¼±íÖÐÏÔʾ¸¸¼¶Í¼±íÖÐijһ²¿·Ö·¶Î§µÄÏêϸÐÅÏ¢¡£±¾½Ú½«Óø¸×Ó¼¶¹ØÁªÍ¼±íÖð²ãÉîÈëµÄ¶ÔÊý¾Ý½øÐзÖÎö¡£
1£®·½°¸·ÖÎö
ÔÚ¶ÔÊÂÎïµÄ·¢Õ¹Ç÷ÊÆ½øÐзÖÎöʱ£¬ÎªÁ˸üÏêϸµÄ¶ÔÊÂÎï½øÐзÖÎö£¬¿ÉÒÔÓø¸×Ó¹ØÏµ¶ÔÊÂÎï½øÐзּ¶ËµÃ÷£¬Ò²¾ÍÊǽ«ÊÂÎï·Ö³É¼¸¿é£¬ÏȶÔÊÂÎïµÄ´ó·¶Î§½øÐзÖÎö£¬È»ºó£¬ÔÙ¶Ô¸÷·¶Î§µÄ·¢Õ¹Çé¿ö½øÐÐÏêϸ·ÖÎö¡£
¸¸×Ó¼¶¹ØÁªÍ¼±í¿ª·¢Éè¼Æ²½ÖèÈçÏ£º
£¨1£©Á¬½ÓÊý¾Ý¿â£¬ÔÚ¸¸¼¶Í¼±íÖÐÏÔʾÊý¾Ý£»
£¨2£©Í¨¹ý¶Ô¸¸¼¶Í¼±íµÄ²Ù×÷£¬Éú³É×Ó¼¶Í¼±í£»
£¨3£©ÔÚÉú³É×Ó¼¶Í¼±íʱ£¬¶Ô¸¸¼¶Í¼±íµÄÏà¹ØÊý¾Ý¿é½øÐвÙ×÷£¬ÒÔ±ã˵Ã÷¡£
ÔÚÉèÖø¸×Ó¼¶¹ØÁªÍ¼±íʱ£¬Ê×ÏÈҪȷ¶¨¶ÔÄÄЩÊý¾Ý¿ÉÒÔ½øÐйØÁªÍ¼±íµÄ²Ù×÷£¬È»ºó¸ù¾ÝÊý¾Ý¿âÖеÄÏàÓ¦Êý¾ÝÉú³É¸¸¼¶Í¼±í£¬×îºó¸ù¾Ý¸¸¼¶Í¼±íÉú³É¶à¸ö×Ó¼¶Í¼±í¡£ÏÂÃæ¸ø³ö¸¸×Ó¼¶¹ØÁªÍ¼±íµÄÖÆ×÷Á÷³Ìͼ£¬Èçͼ5.17Ëùʾ¡£

ͼ5.17 ¸¸×Ó¼¶¹ØÁªÍ¼±íÁ÷³Ìͼ
ÔÚÖÆ×÷¸¸×Ó¼¶¹ØÁªÍ¼±íʱ£¬Ö÷ÒªÓÐÒÔϼ¸¸öÄѵ㣺
£¨1£©ÈçºÎÔÚ´°Ìå×î´ó»¯Ê±£¬°´±ÈÀýÏÔʾ¸¸×Óͼ±í£»
£¨2£©ÈçºÎÔÚÖ÷±íÖж¯Ì¬ÏÔʾµ±Ç°×Ó±íÏÔʾµÄÊÇÄÄÒ»·½ÃæµÄÊý¾Ý£»
£¨3£©ÈçºÎÔÚÖ÷±íÖÐÒÔÑÕÉ«±æ±ð¶Ô×Ó±íµÄ²Ù×÷£»
£¨4£©ÈçºÎÓÃÒ»¸öͼ±í¶¯Ì¬ÏÔʾ¶à¸ö×Ó±íÊý¾Ý¡£
ÔÚÉè¼Æ¸¸×Ó¼¶¹ØÁªÍ¼±íʱ£¬Ò»¶¨Òª¶ÔʵÏÖÄ¿µÄÒÔ¼°Êý¾Ý¿âÖеÄÏà¹ØÊý¾Ý½øÐÐϵͳµÄ·ÖÎö£¬È·¶¨¸¸¼¶Í¼±íÓë×Ó¼¶Í¼±íµÄÏÔʾÄÚÈÝ¡£ÔÚÉè¼Æ¸¸¼¶Í¼±íÓë×Ó¼¶Í¼±íµÄÏÔʾλÖÃʱ£¬×îºÃÊÇ×ó²à·ÅÖø¸¼¶Í¼±í£¬ÓÒ²à·ÅÖÃ×Ó¼¶Í¼±í£¬µ±È»£¬Ò²¿ÉÒÔ¸ù¾Ý¾ßÌåµÄÐèÒªÀ´ÈÎÒâÉèÖø¸×Ó¼¶Í¼±íµÄλÖá£
ÔÚÖÆ×÷¸¸×Ó¼¶¹ØÁªÍ¼±íʱ£¬µ±¶ÔÊý¾Ý¿âÖеÄÊý¾Ý±í½øÐÐÏàÓ¦µÄ´¦Àíʱ£¬¿ÉÒÔ¸ù¾ÝÐèÒª£¬½«¶à¸öÊý¾Ý±íͨ¹ýÏàÓ¦µÄÌõ¼þÉú³ÉÒ»¸öÁÙʱÊý¾Ý±í£¬ÏÔʾÔÚͼ±íÖС£µ±Êý¾Ý¹ý¶àʱ£¬Í¼±íµÄX×øºáÖá¾ÍÎÞ·¨ÏÔʾXÖáµÄËùÓкá×ø±êÃû³Æ£¬Õâʱ£¬¿ÉÒÔÓ÷ÖÒ³µÄ·½ÊÔÀ´ÏÔʾÊý¾Ý£¬µ«ÓÐʱ£¬ÎªÁËÄܹ»Ò»´Î¹Û²ìËùÓÐÊý¾Ý£¬¿ÉÒÔ½«´°Ìå×î´ó»¯ÏÔʾ£¬µ«Òª×¢Ò⸸¼¶Í¼±íÓë×Ó¼¶Í¼±íµÄÏÔʾ±ÈÀý¡£»¹Ðè×¢ÒâµÄÊÇ£¬µ±×Ó¼¶Í¼ÊÇͨ¹ý¸¸¼¶Í¼±íµÄÏà¹Ø²Ù×÷¶øÉú³Éʱ£¬ÈçºÎ¶Ô¸¸¼¶Í¼±íµÄÏà¹Ø²Ù×÷½øÐпØÖÆ£¬²¢ÇÒÔÚ²Ù×÷Ö®ºó£¬ÈçºÎÔÚ¸¸¼¶Í¼±íÖÐÏÔʾ£¬ÄĸöÊǵ±Ç°²Ù×÷µÄ£¬ÄĸöÊÇÒѲÙ×÷ÍêµÄ£¬ÄĸöÊÇ»¹Î´²Ù×÷µÄ¡£
2£®ÊµÊ©¹ý³Ì
ʵÀýλÖ㺹âÅÌ\mr\5\5.2\5.2.2\01
ÔÚ¿ª·¢ÏúÊÛ¹ÜÀíϵͳʱ£¬¿ÉÒÔ¸ù¾ÝÉÌÆ·µÄÏúÊÛµØÇø£¬¶Ô¸÷¸öµØÇøµÄÉÌÆ·ÏúÊÛÇé¿ö×÷Ò»¸ö¾ßÌåµÄ·ÖÎö£¬ÔÚÕâÀÏúÊÛµØÇøÎª¸¸¼¶Í¼±í£¬ÉÌÆ·ÏúÊÛÇé¿öΪ×Ó¼¶Í¼±í¡£Ò²¿ÉÒÔ¶ÔÉÌÆ·µÄÏúÊÛÁìÓò½øÐоßÌåµÄ·ÖÎö£¬ÏÂÃæÒÔÉÌÆ·ÏúÊÛÁìÓòΪÀý¶Ô¸¸×Ó¹ØÁªÍ¼±í½øÐÐÏêϸµÄ½éÉÜ¡£
Ê×ÏÈҪȷ¶¨ÖÆ×÷¡°ÉÌÆ·ÏúÊÛÁìÓò×ۺϷÖÎöͼ¡±µÄÄ¿µÄ£¬Ò»ÊÇҪͨ¹ý¸¸¼¶Í¼±íÀ´ÏÔʾijÄê¸÷ÁìÓòµÄÏúÊÛÇé¿ö£¬¶þÊÇҪͨ¹ý×Ó¼¶Í¼±íÀ´ÏÔʾ¸¸¼¶Í¼±íÖÐij¸öÏúÊÛÁìÓòµÄÔÂÏúÊÛÁ¿¡£È»ºó¸ù¾ÝÒÔÉÏÄ¿µÄÀ´ÖÆ×÷´°ÌåµÄģʽ£¬ÔÚ´°ÌåÖÐÐèÒªÓÐÁ½¸öͼ±í£¬ºÍÒ»¸öÓÃÓÚÑ¡ÔñÄê·ÝµÄÏÂÀÁбí¿ò£¬¾ßÌåЧ¹ûÈçͼ5.18Ëùʾ¡£

ͼ5.18 ÏúÊÛÁìÓò×ۺϷÖÎöͼ
³ÌÐò¸÷´°ÌåÖÐÏà¹Ø×é¼þ˵Ã÷£¬Èç±í5.4Ëùʾ¡£
±í5.4 ¸÷´°ÌåµÄÏà¹Ø×é¼þ
|
¶ÔÏóÃû |
¶ÔÏóÀàÐÍ |
ÊôÐÔ |
Öµ |
|
DataModule1 |
TDataModule |
Name |
DataModule1 |
|
ADOConnection1 |
TADOConnection |
ConnectionString |
Á¬½ÓÊý¾Ý¿â |
|
ADOQuery1 |
TADOQuery |
Connection |
ADOConnection1 |
|
ADOQuery2 |
ADOConnection1 |
||
|
DataSource1 |
TDataSource |
DataSet |
ADOQuery1 |
|
DataSource2 |
ADOQuery2 |
||
|
Form1 |
TForm |
Caption |
ÏúÊÛÁìÓò×ۺϷÖÎöͼ |
|
Panel1 |
TPanel |
Align |
alClient |
|
Panel2 |
alClient |
||
|
Panel4 |
alTop |
||
|
Panel5 |
alClient |
||
|
DBChart1£¨¸¸¼¶Í¼±í£© |
TDBChart |
alClient |
|
|
Panel3 |
TPanel |
alRight |
|
|
DBChart2£¨×Ó¼¶Í¼±í£© |
TDBChart |
alClient |
ÔÚͳ¼ÆÄêÏúÊÛÇé¿öʱ¿ÉÄÜ»á³öÏÖÒ»Ìõ¼Ç¼£¬¶øDBChart2×é¼þµÄÏßÐÍͼ²»ÄÜÏÔʾµ¥Ìõ¼Ç¼£¬ËùÒÔÔÚDBChart2×é¼þÖÐÌí¼ÓÏßÐÍͼºÍÌõÐÍͼÁ½ÖÖÀàÐÍ£¬²¢½«ÏßÐÍͼѡΪ¿ÉÓÃ״̬¡£
ΪÁËÄܹ»¸üºÃµÄÁ˽ⴰÌåµÄÉèÖÃÇé¿ö£¬ÏÂÃæ¸ø³ö¡°¶ÔÏóä¯ÀÀÆ÷¡±£¨Object TreeView£©Öжԡ°ÏúÊÛÁìÓò×ۺϷÖÎöͼ¡±´°ÌåµÄÉèÖã¬Èçͼ5.19Ëùʾ¡£

ͼ5.19 Form1´°ÌåµÄ¶ÔÏóä¯ÀÀÆ÷
¶ÔÉÌÆ·ÏúÊÛÁìÓò½øÐÐ×ۺϷÖÎöʱ£¬Ê×ÏÈÒª¶ÔÊý¾Ý¿â½øÐзÖÎö£¬È»ºóÕÒ³öÏà¹ØÁªµÄÊý¾Ý±í£¬½øÐвÙ×÷¡£Í¨¹ý¶ÔÊý¾Ý¿âµÄ·ÖÎö¿ÉÒÔÈ·¶¨£¬²»ÂÛÊǸ¸¼¶Í¼±í¡°ÏúÊÛÁìÓò·ÖÎöͼ¡±£¬»¹ÊÇ×Ó¼¶Í¼±í¡°Ä³ÁìÓòµÄÔÂÏúÊÛÇé¿ö¡±£¬¶¼ÊÇÓÉÊý¾Ý¿âMR_DistributionÖеÄtb_ClientDistºÍtb_ClientInfoÊý¾Ý±í¹²Í¬×éºÏ¶ø³ÉµÄ¡£tb_ClientInfoºÍtb_ClientDistÊý¾Ý±íÈçͼ5.20¡¢Í¼5.21Ëùʾ¡£

ͼ5.20 tb_ClientInfoÊý¾Ý±í

ͼ5.21 tb_ClientDistÊý¾Ý±í
ÏÂÃæ¶Ô¡°ÏúÊÛÁìÓò×ۺϷÖÎöͼ¡±´°ÌåµÄÖÆ×÷½øÐÐÈ«ÃæµÄ½²½â¡£
¸¸¼¶Í¼±íÊÇÏÔʾijÄê¸÷ÁìÓòµÄÏúÊÛÇé¿ö£¬ÄÇô£¬¾ÍÓ¦¸ÃÔÚ´°Ìå´´½¨Ê±£¬½«ÏúÊÛÈÕÆÚÖеÄÄê·ÝÏÔʾÔÚÒ»¸öÏÂÀÁбíÖУ¬¸Ã²Ù×÷Ö÷ÒªÊÇÔÚ´°ÌåµÄOnCreateʼþÖÐÓÃSQLÓï¾ä½«tb_ClientDistÊý¾Ý±íÖеÄÏúÊÛÈÕÆÚÖеÄÄê·ÝÌáÈ¡³öÀ´£¬²¢½«Öظ´µÄÄê·ÝÈ¥³ý¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm1.FormCreate(Sender: TObject);
begin
with DataModule1.ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select distinct year(Dist_Date) as D_Year from tb_ClientDist');
Open;
ComboBox1.Clear;
if RecordCount>0 then
while Not Eof do
begin
ComboBox1.Items.Add(FieldByName('D_Year').AsString);
Next;
end;
end;
end;
½ÓÏÂÀ´¾ÍÊÇÒªÀûÓÃÏÂÀÁбíÖеÄÄê·ÝÀ´ÖÆ×÷ijÄêµÄÏúÊÛÁìÓò·ÖÎöͼ¡£Ê×ÏÈ£¬ÒªÍ¨¹ýÄê·Ý½«tb_ClientDistÊý¾Ý±íÖеÄÖ¸¶¨Äê·ÝµÄËùÓÐÊý¾ÝÉú³ÉÒ»¸öÁÙʱ±í##ppe£¬ÀûÓÃÁÙʱ±í##ppeÖеÄClient_ID×ֶκÍtb_ClientInfoÊý¾Ý±íÖеÄClient_ID×Ö¶Î×éºÏ³ÉÒ»¸öÐÂ±í£¬È»ºó£¬½«¸Ã±íµÄÒÔClient_Calling×ֶΣ¨ÏúÊÛÁìÓò£©½øÐзÖ×飬²¢½«Dist_Money×ֶΣ¨ÏúÊÛ½ð¶î£©½øÐÐÇóºÍ¡£Èçͼ5.22Ëùʾ¡£

ͼ5.22 ÏúÊÛÁìÓò·ÖÎö±í
×îºó¾ÍÊÇÒª½«ÏúÊÛÁìÓò·ÖÎö±íÓ븸¼¶Í¼±íÏàÁ¬½Ó£¬½«Êý¾Ý±íÒÔͼ±íµÄÐÎʽ½øÐÐÏÔʾ¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if ComboBox1.Text<>'' then
begin
DS := ComboBox1.Text;
Str := '';
Str := Str+'select * into ##ppe from tb_ClientDist';
Str := Str+' where year(Dist_Date)='+DS;
Str := Str+#13+'select sum(a.Dist_Money) as ''ÏúÊÛ½ð¶î'',b.Client_Calling as ''
ÏúÊÛÁìÓò'' from ##ppe as a,tb_ClientInfo as b where a.Client_ID=b.Client_ID Group
BY b.Client_Calling';
Str := Str+#13+'drop table ##ppe';
XAxis := 'ÏúÊÛÁìÓò';
YAxis := 'ÏúÊÛ½ð¶î';
Title := ComboBox1.Text+'ÄêÈ«ÄêÏúÊÛÁìÓò·ÖÎöͼ';
//Ö¸¶¨Êý¾Ý¿â×é¼þÓëͼ±í×é¼þÏàÁ¬½Ó
ChartSetup(Str, XAxis, YAxis, Title, DBChart1, DataModule1.ADOQuery1, 1);
end;
end;
ÔÚÒÔÉÏ´úÂëÖУ¬ÓÃ×Ô¶¨Òå¹ý³ÌChartSetup()½«Êý¾Ý±íÓëͼ±íÏàÁ¬½Ó£¬Óøú¯Êý¿ÉÒÔ½«²»Í¬µÄÊý¾Ý±íÓ벻ͬµÄͼ±íÏàÁ¬½Ó£¬µ±Í¼±í²»·ûºÏÊý¾ÝÏÔʾʱ£¬½«¸ü»»Í¼±íµÄÀàÐÍ¡£¸Ã¹ý³ÌµÄÏà¹Ø´úÂëÈçÏ£º
procedure TForm1.ChartSetup(S, Xval, Yval, Tit: String; DChart: TDBChart;
ADOChart: TADOQuery; p : Integer);
var
i,n:integer;
begin
n := 0;
with ADOChart do
begin
close;
SQL.Clear;
SQL.Add(S);
Open;
end;
if p=1 then
begin
SetLength(A_Color,ADOChart.RecordCount); //¶¯Ì¬´´½¨Êý×é
for i:=0 to ADOChart.RecordCount-1 do //ΪÊý×éÉèÖóõʼֵ
begin
A_Color[i] := 'clred';
end;
DChart.Series[0].Marks.Style := smsValue;
end;
//ÔÚ×Ó¼¶Í¼±íÖУ¬µ±Êý¾Ý¼Ç¼Ϊ1ʱ£¬ÓÃÌõÐÍͼÏÔʾ
if ((ADOChart.RecordCount=1) and (P=0)) then
begin
DChart.Series[0].Active := False;
DChart.Series[1].Active := True;
n := 1;
end
else
//µ±×Ó¼¶Í¼±íµÄ¼Ç¼Êý´óÓÚ1ʱ£¬ÓÃÏßÐÍͼ±íÏÔʾÊý¾Ý
if ((ADOChart.RecordCount>1) and (P=0)) then
begin
DChart.Series[1].Active := False;
DChart.Series[0].Active := True;
n := 0;
end;
DChart.Series[n].DataSource := ADOChart;
DChart.Series[n].XLabelsSource := Xval;
DChart.Series[n].YValues.ValueSource := Yval;
DChart.Title.Text.Clear;
DChart.Title.Text.Add(Tit);
end;
ChartSetup()¹ý³ÌµÄ²ÎÊý˵Ã÷Èç±í5.5Ëùʾ¡£
±í5.5 ChartSetup()¹ý³ÌµÄ²ÎÊý˵Ã÷
|
²ÎÊý |
˵Ã÷ |
|
S |
SQLÓï¾ä |
|
Xval |
Á¬½Óͼ±íµÄXÖá×Ö¶Î |
|
Yval |
Á¬½Óͼ±íµÄYÖá×Ö¶Î |
|
Tit |
ͼ±íµÄ±êÌâ |
|
DChart |
Êý¾Ý±íÁ¬½ÓµÄͼ±íÃû³Æ |
|
ADOChart |
Éú³Éͼ±íµÄADO×é¼þ |
|
p |
ÓÃÓÚÅжϵ±Ç°ÊǸ¸¼¶Í¼±í£¬»¹ÊÇ×Ó¼¶Í¼±í£¬1±íʾ¸¸¼¶Í¼±í |
¶¯Ì¬Êý×éA_ColorÊÇÓÃÀ´¼Ç¼ͼ±íÖÐÊý¾Ý¿éµÄÑÕÉ«£¬Í¨¹ý¸ÃÊý×飬¿ÉÒÔʹÓûÆÉ«¡¢ÂÌÉ«¡¢ºìÉ«À´±ê¼Ç¸¸¼¶Í¼±íÖеÄÊý¾Ý¿éÄĸöÒѱ»²Ù×÷£¬ÄĸöÕýÔÚ²Ù×÷£¬Äĸö»¹Î´²Ù×÷¡£
ͨ¹ýÒÔÉϵIJÙ×÷£¬ÔÚ¸¸¼¶Í¼±íÖоͻáÉú³ÉijÄêµÄÏúÊÛÁìÓò·ÖÎöͼ¡£½ÓÏÂÀ´¾ÍÒª¿¼ÂÇ£¬ÈçºÎͨ¹ý¶Ô¸¸¼¶Í¼±íµÄ²Ù×÷£¬Éú³É×Ó¼¶Í¼±í£¿ÔÚTDBChartͼ±íÖÐÓÐÒ»¸öOnClickSeriesʼþ£¬¸ÃʼþÔÚÓÃÊó±êµ¥»÷»òÓÒ»÷ͼ±íÖеÄÊý¾Ý¿éʱ´¥·¢¡£¿ÉÒÔÀûÓøÃʼþ£¬ÔÚÊó±êµ¥»÷Êý¾Ý¿éʱ£¬ÔÚ×Ó¼¶Í¼±íÖÐÉú³ÉÏàÓ¦µÄijÁìÓòÔÂÏúÊÛͼ±í¡£²¢ÇÒÔÚµ¥»÷Êý¾Ý¿éʱ£¬ÏÈÀûÓÃ×Ô¶¨Ò庯ÊýSelectToColor()½«Éϴε¥»÷µÄÊý¾Ý¿éÑÕÉ«£¨ÂÌÉ«£©¸ÄΪÒÔ²Ù×÷ÍêµÄÊý¾Ý¿éÑÕÉ«£¨»ÆÉ«£©£¬ÔÙͨ¹ýSeries¶ÔÏóµÄValueColor[ValueIndex]ÊôÐÔ½«µ±Ç°²Ù×÷µÄÊý¾Ý¿éÑÕÉ«¸ÄΪÂÌÉ«£¬ValueIndex±íʾµ±Ç°Êý¾Ý¿éµÄË÷ÒýÖµ¡£×Ô¶¨Òå¹ý³ÌSelectToColor()µÄÏà¹Ø´úÂëÈçÏ£º
procedure TForm1.SelectToColor(n : Integer;SColor : String;Col : TColor;Series : TChartSeries);
var
i : Integer;
begin
for i:=0 to n do
begin
if A_Color[i]=SColor then //A_ColorÊǶ¯Ì¬È«¾ÖÊý×é
Series.ValueColor[i]:= Col;
end;
end;
SelectToColor()¹ý³ÌµÄ²ÎÊý˵Ã÷Èç±í5.6Ëùʾ¡£
±í5.6 SelectToColor()º¯ÊýµÄ²ÎÊý˵Ã÷
|
²ÎÊý |
˵Ã÷ |
|
n |
Êý¾Ý±íÖеļǼ¸öÊý |
|
SColor |
ÔÓеÄÑÕÉ« |
|
Col |
Òª¸ü»»µÄÑÕÉ« |
|
Series |
ͼ±í¶ÔÏó |
È»ºóÓÃÊý×éA_Color¼Ç¼ÒԸıäµÄÊý¾Ý¿éÑÕÉ«¡£ÔÙ¸ù¾Ýtb_ClientInfoÊý¾Ý±íÖеÄClient_ID×ֶκÍtb_ClientDistÊý¾Ý±íµÄClient_ID×ֶΣ¬Á¬½ÓÁ½¸öÊý¾Ý±í£¬²¢ÒÔ¸¸¼¶Í¼±íµÄÄê·ÝºÍµ±Ç°Êý¾Ý¿éµÄXÖáÃû³ÆÎªÌõ¼þ£¨Ò²¾ÍÊÇÏúÊÛÁìÓòµÄÃû³Æ£©£¬Éú³ÉÒ»¸öÁÙʱ±í##ppe¡£¿ÉÒÔÓÃÈçÏ´úÂëÀ´»ñÈ¡»òÐ޸ĵ±Ç°Êý¾Ý¿éµÄXÖáÃû³Æ¡£
Series.XLabel[ValueIndex]
ÔÙ½«ÁÙʱ±í##ppeÒÔÈÕÆÚµÄÔ·ݽøÐзÖ×飬²¢¶ÔDist_Money£¨ÏúÊÛ½ð¶î£©×ֶνøÐÐÇóºÍ£¬Éú³ÉijÏúÊÛÁìÓòµÄÔÂÏúÊÛ±í£¬ÒÔµçÆ÷ҵΪÀý£¬Èçͼ5.23Ëùʾ¡£

ͼ5.23 µçÆ÷ÒµÔÂÏúÊÛ±í
×îºó¾ÍÊÇÀûÓÃ×Ô¶¨Òå¹ý³ÌChartSetup()½«Ä³ÁìÓòµÄÔÂÏúÊÛ±íÓë×Ó¼¶Í¼±íÏàÁ¬½Ó£¬½«Êý¾Ý±íÒÔͼ±íµÄÐÎʽ½øÐÐÏÔʾ¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm1.DBChart1ClickSeries(Sender: TCustomChart;
Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button = mbLeft then
begin
//ÓÃÊó±êµ¥»÷ͼ±íÖеÄÊý¾Ý¿éʱ£¬¸Ä±äÆäÊý¾Ý¿éµÄÑÕÉ«
SelectToColor(DataModule1.ADOQuery1.RecordCount-1,'clLime',clYellow,Series);
Series.ValueColor[ValueIndex]:= clLime;
A_Color[ValueIndex] := 'clLime';
Str := '';
Str := Str+'Select b.Dist_Money as Dist_Money,b.Dist_Date as Dist_Date,
a.Client_Calling as Client_Calling';
Str := Str+' into ##ppe';
Str := Str+' from tb_ClientInfo as a,tb_ClientDist as b';
Str := Str+' where b.Client_ID=a.Client_ID and year(b.Dist_Date)='+DS+' and
a.Client_Calling='+''''+Trim(Series.XLabel[ValueIndex])+'''';
Str := Str+#13+'select sum(Dist_Money) as ''ÔÂÏúÊÛ½ð¶î'',Month(Dist_Date) as
''Ô·Ý''';
Str := Str+' from ##ppe';
Str := Str+' Group BY Month(Dist_Date)';
Str := Str+#13+'drop table ##ppe';
XAxis := 'Ô·Ý';
YAxis := 'ÔÂÏúÊÛ½ð¶î';
Title := DS+'Äê'+Series.XLabel[ValueIndex]+'ÏúÊÛÇé¿ö';
ChartSetup(Str, XAxis, YAxis, Title, DBChart2, DataModule1.ADOQuery2, 0);
End
//µ±µ¥»÷Êó±êÓÒ¼üʱ£¬Ê¹Êý¾Ý¿éµÄÑÕÉ«»Ö¸´ÎªºìÉ«
else if button = mbRight then
begin
Series.ValueColor[ValueIndex]:= clred;
A_Color[ValueIndex] := 'clred';
end;
CheckBox1.Checked := False;
end;
µ±¸¸×Ó¼¶Í¼±íµÄÊý¾ÝÁ¿¹ý¶àʱ£¬¿ÉÒÔ½«´°Ìå½øÐÐ×î´ó»¯ÏÔʾ£¬²»¹ý£¬ÔÚ×î´ó»¯ÏÔʾµÄʱºò£¬Ó¦¸Ã¿ØÖƸ¸¼¶Í¼±íºÍ×Ó¼¶Í¼±íµÄÏÔʾ±ÈÀý£¬¿ÉÒÔÔÚ´°ÌåµÄOnResizeʼþÖжÔͼ±íµÄ´óС½øÐпØÖÆ¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm1.FormResize(Sender: TObject);
begin
Form1.Panel3.Width := round(self.Width*0.4)
end;
3£®²¹³ä˵Ã÷
¸¸¼¶Í¼±íÖеÄÊý¾Ý²»µ«¿ÉÒÔÓÃÌõÐÎͼÏÔʾ£¬Ò²¿ÉÒÔÓÃÖùÐÎͼ»ò×¶ÐÎͼ½øÐÐÏÔʾ£¬Ð޸ĵķ½·¨ºÜ¼òµ¥£¬Ö»ÊǸıäͼ±íµÄÏà¹ØÊôÐÔ¼´¿É¡£´úÂëÈçÏ£º
TBarSeries(chart1.Series[0]).BarStyle := bsCilinder;
BarStyleÊôÐÔÖµÓУºbsArrow£¨¼ýÍ·ÐΣ©¡¢bsCilinder£¨Ô²ÖùÐΣ©¡¢bsEllipse£¨ÍÖÔ²ÐΣ©¡¢bsInvPyramid£¨µ¹×¶ÐΣ©¡¢bsPyramid£¨×¶ÐΣ©¡¢bsRectangle£¨¾ØÐΣ©¡¢bsRectGradient£¨½¥±äÉ«¾ØÐΣ©¡£
5.2.3 ²¢¼¶¹ØÁªÍ¼±í·ÖÎö·½°¸
²¢¼¶¹ØÁªÍ¼±íÊǶÔijһÊÂÎïÒÔ¶àÖÖ״̬½øÐзÖÎö£¬²¢ÒÔÏàӦͼ±íÀàÐÍ·Ö±ð½øÐÐÏÔʾ¡£±¾½Ú¾ÍÊÇÀûÓò¢¼¶¹ØÁªÍ¼±í¶ÔijһÊÂÎïËù¹ØÁªµÄËùÓÐÇé¿ö½øÐÐÈ«Ãæ·ÖÎö¡£
1£®·½°¸·ÖÎö
Ôڴ󲿷ֵĹÜÀíϵͳÖУ¬¶ÔÊÂÎïµÄ·¢Õ¹Çé¿ö¶¼Êǵ¥Ò»·ÖÎöµÄ£¬Èç½øÏú´æ¹ÜÀíϵͳ£¬Ò»°ãÖ»¶ÔÉÌÆ·µÄÏúÊÛÇé¿ö½øÐзÖÎö£¬²¢Ã»ÓжÔÉÌÆ·¹©Ó¦É̵ÄÍùÀ´ÕËÄ¿½øÐзÖÎö¡£
²¢¼¶¹ØÁªÍ¼±íµÄ¿ª·¢Éè¼Æ²½ÖèÈçÏ£º
£¨1£©Ã÷È·¿ÉÒÔÏÔʾ¶à¸öͼ±íµÄ¹Ø¼üÖµ£¨Ò²¾ÍÊÇÕë¶ÔµÄijһÊÂÎ£»
£¨2£©Í¨¹ý¹Ø¼üÖµÔÚÊý¾Ý¿âÖвéÕÒ¶à¸öÏà¹ØÁªµÄÊý¾Ý½á¹û£»
£¨3£©½«Êý¾Ý½á¹ûÓëÖ¸¶¨µÄͼ±íÏàÁ¬½Ó¡£
ÏÂÃæ¸ø³ö²¢¼¶¹ØÁªÍ¼±íµÄÖÆ×÷Á÷³Ìͼ£¬Èçͼ5.24Ëùʾ¡£

5.24 ²¢¼¶¹ØÁªÍ¼±íÖÆ×÷Á÷³Ìͼ
ÔÚÉú³É²¢¼¶¹ØÁªÍ¼±íʱ£¬Ö÷ÒªÓÐÒÔϼ¸¸öÄѵ㣺
£¨1£©ÈçºÎÓÃÕýÈ·µÄÊý¾Ý·ÖÎöijһÊÂÎ
£¨2£©ÈçºÎÓÃÒ»¸ö×Ô¶¨Òå¹ý³Ì½«¶à¸öÊý¾ÝÓëͼ±íÏàÁ¬½Ó£»
ÔÚÉèÖò¢¼¶¹ØÁªÍ¼±íʱ£¬Ê×ÏÈÒªÃ÷È·¶ÔÄÄÒ»ÊÂÎï×÷ÉîÈë¡¢È«ÃæµÄ·ÖÎö£¬È»ºóͨ¹ýÊý¾Ý¿âÐÅÏ¢ÕÒ³öÏà¹ØÁªµÄÊý¾Ý±í£¬Í¨¹ýÕâЩÊý¾ÝÐÅÏ¢£¬¶Ô²¢¼¶¹ØÁªÍ¼±í½øÐÐÉèÖá£
ÖÆ×÷²¢¼¶¹ØÁªÍ¼±í£¬Êµ¼ÊÉϾÍÊǽ«Ä³Ò»·½ÃæµÄÊý¾ÝÒÔͼ±íµÄÐÎʽ½øÐÐÏÔʾ£¬µ«ÕâЩÊý¾Ý¶¼ÊDz¢Áм¶µÄ¹ØÏµ£¬ËüÃÇËÒ²²»°üº¬Ë£¬Ö»ÊǶ¼ÓëijһÊÂÎïÓÐÒ»¶¨µÄÁªÏµ£¬Í¨¹ýÕâЩÊý¾Ý£¬¿ÉÒÔ¶Ô¸ÃÊÂÎïÓÐÒ»¸öÈ«ÃæµÄ·ÖÎö¡£
2£®ÊµÊ©¹ý³Ì
ÔÚ¿ª·¢ÏúÊÛ¹ÜÀíϵͳʱ£¬Ã¿¸öÔ¶¼»á¶ÔijһÉÌÆ·µÄÏúÊÛÇé¿ö½øÐзÖÎö£¬Í¨¹ýÆä·ÖÎö½á¹û£¬ÅжϸÃÉÌÆ·ÔÚϸöÔµĽø»õÇé¿ö£¬»òÊÇͨ¹ý¸ÃÉÌÆ·ÔÚ¸÷µØµÄÏúÊÛÇé¿ö£¬À´ÅжϷ¢»õµÄ¶àÉÙ¡£ÏÂÃæÒÔijÉÌÆ·µÄÈÕÏúÊÛÇé¿ö·ÖÎöΪÀý¶Ô²¢¼¶¹ØÁªÍ¼±í½øÐÐÏêϸµÄ½éÉÜ¡£
ʵÀýλÖ㺹âÅÌ\mr\5\5.2\5.2.3\01
ÔÚÖÆ×÷ijÉÌÆ·µÄÈÕÏúÊÛÇé¿ö·ÖÎöͼʱ£¬Ê×ÏÈÒªÔÚÏúÊÛ±í£¨tb_ClientDist£©ºÍÐÅÏ¢±í£¨tb_ClientInfo£©ÖжÔijÄêijÔµÄÉÌÆ·ÏúÊÛÇé¿ö½øÐвéѯ£¬È»ºóͨ¹ý²éѯµÄ½á¹û£¬ÔÙÉú³ÉÏà¹ØµÄͼ±í¡£ÕâÑù¾ÍÐèÒªÖÆ×÷Á½¸ö´°Ì壬һ¸öÓÃÓÚ²éѯ£¬Ò»¸öÓÃÓÚÏÔʾͼ±í£¬²¢ÔÚͼ±íÖзֱðÏÔʾijÉÌÆ·µÄÔÂÏúÊÛ½ð¶î¡¢¸÷¹«Ë¾ÏúÊÛ½ð¶î¡¢ÔÂÏúÊÛµÄ×î´ó½ð¶î/×îС½ð¶î¡¢¸÷¹«Ë¾ÏúÊÛµÄ×î´ó/×îС½ð¶îµÈÇé¿ö¡£Ä³µ¥¸öÉÌÆ·µÄÔÂÏúÊÛÇé¿ö·ÖÎö±íÈçͼ5.25Ëùʾ£¬Ä³¸öÉÌÆ·µÄ×ۺϷÖÎöͼÈçͼ5.26Ëùʾ¡£

ͼ5.25 µ¥¸öÉÌÆ·ÈÕ·ÖÎö±í

ͼ5.26 ijÉÌÆ·µÄ×ۺϷÖÎöͼ
³ÌÐòÖи÷´°ÌåÖÐÏà¹Ø×é¼þµÄ˵Ã÷£¬Èç±í5.7Ëùʾ¡£
±í5.7 ¸÷´°ÌåµÄÏà¹Ø×é¼þ
|
¶ÔÏóÃû |
¶ÔÏóÀàÐÍ |
ÊôÐÔ |
Öµ |
|
DataModule1 |
TDataModule |
Name |
DataModule1 |
|
ADOConnection1 |
TADOConnection |
ConnectionString |
Á¬½ÓÊý¾Ý¿â |
|
ADOQuery1 |
TADOQuery |
Connection |
ADOConnection1 |
|
ADOQuery2 |
|||
|
ADOQuery3 |
|||
|
ADOQuery4 |
|||
|
ADOQuery5 |
|||
|
DataSource1 |
TDataSource |
DataSet |
ADOQuery1 |
|
Form1 |
TForm |
Caption |
µ¥¸öÉÌÆ·Ô·ÖÎö±í |
|
DBGrid1 |
TDBGrid |
Option.dgRowSelect |
True |
|
Form3 |
TForm |
Position |
poProportional |
|
Panel2 |
TPanel |
Align |
alTop |
|
DBChart1 |
TDBChart |
alClient |
|
|
DBChart2 |
TDBChart |
alRight |
|
|
Panel3 |
TPanel |
alClient |
|
|
DBChart3 |
TDBChart |
alRight |
|
|
DBChart4 |
TDBChart |
alClient |
ÔÚ¶Ôµ¥¸öÉÌÆ·½øÐзÖÎöµÄʱºò£¬Ê×ÏÈÒª¶ÔÊý¾Ý¿âµÄÊý¾Ý±í½øÐзÖÎö£¬ÔÚÊý¾Ý¿âÖÐtb_ClientDistÊý¾Ý±í¶ÔÉÌÆ·µÄÏúÊÛ½ð¶î¼°ÏúÊÛÊýÁ¿½øÐÐÁ˼Ǽ¡£¿ÉÒÔͨ¹ý¸Ã±í¶ÔÉÌÆ·µÄÏúÊÛÇé¿ö½øÐÐÈ«ÃæµÄ·ÖÎö¡£
ÏÂÃæ¶Ô¡°Ä³ÉÌÆ·µÄÔÂÏúÊÛ·ÖÎöͼ¡±µÄÖÆ×÷¹ý³Ì½øÐÐÈ«ÃæµÄ½²½â¡£
Ê×ÏÈÒªÔÚ¡°µ¥¸öÉÌÆ·ÈÕ·ÖÎö±í¡±´°ÌåÖУ¬¶ÔÉÌÆ·Ä³ÄꡢijÔµÄÏúÊÛÐÅÏ¢½øÐвéѯ£¬È»ºó¸ù¾Ý²éѯµÄ½á¹û£¬ÔÙÉú³ÉÏà¹ØµÄͼ±í¡£ÔÚ´°Ìå´´½¨Ê±£¬Ê×ÏÈÒª½«tb_ClientDistÊý¾Ý±íÖеÄÄê·ÝºÍÉÌÆ·Ãû³ÆÔڸô°Ìå´´½¨Ê±·Ö±ð´æÈëµ½Ö¸¶¨µÄÏÂÀÁбíÖУ¬ÔÚtb_ClientDistÊý¾Ý±íÖÐÄê·Ý»òÉÌÆ·Ãû³Æ¿ÉÄÜ»áÖØ¸´£¬¿ÉÒÔÓÃSQLÓï¾ä½øÐвéѯµÄʱºò£¬ÓÃdistinct¹Ø¼ü×Ö½«Öظ´µÄ×Ö¶Îɾ³ý£¬Ê¹ÏÂÀÁбíÖÐÖ»ÏÔʾΨһµÄ×ֶΡ£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
begin
ComboBox3.Clear;
//ÏúÊÛµÄÔ·Ý
for i:=1 to 12 do
ComboBox3.Items.Add(IntToStr(i));
//»ñÈ¡ÏúÊÛµÄÄê·Ý
with DataModule1.ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select distinct year(Dist_Date) as D_Year from tb_ClientDist');
Open;
ComboBox2.Clear;
if RecordCount>0 then
while Not Eof do
begin
ComboBox2.Items.Add(FieldByName('D_Year').AsString);
Next;
end;
end;
//»ñÈ¡ÒÔÏúÊÛµÄÉÌÆ·Ãû³Æ
with DataModule1.ADOQuery1 do
begin
close;
SQL.Clear;
SQL.Add('select distinct Dist_Name from tb_ClientDist');
Open;
ComboBox1.Clear;
if RecordCount>0 then
while Not Eof do
begin
ComboBox1.Items.Add(FieldByName('Dist_Name').AsString);
Next;
end;
end;
ComboBox1.OnChange(Sender);
end;
½«ÐÅÏ¢´æÈëµ½ÏÂÀÁбíÖ®ºó£¬¾ÍÐèҪͨ¹ýÏÂÁбíÖеÄ×ֶζÔÊý¾Ý±íÖеÄÊý¾Ý½øÐвéѯ£¨±¾ÊµÀýÖÐÒª²éѯµÄ±í¸ñΪtb_ClientDistºÍtb_ClientDist¡¢tb_ClientInfoµÄ×ÛºÏ±í£©£¬µ±¸Ä±äijһÏÂÀÁбíÖеÄÐÅϢʱ£¬¿ÉÒÔÔÚÏÂÀÁбíµÄOnChangeʼþÖжÔÐÅÏ¢½øÐвéѯ£¬²¢ÔÚDBGrid1×é¼þÖнøÐÐÏÔʾ¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
//»ñÈ¡tb_ClientDist±íµÄ²éѯ½á¹û
Inq := 'select * from tb_ClientDist';
Inq1:='';
Inq2:='';
Inq3:='';
SQLSentence := Inq;
if ComboBox1.Text<>'' then
Inq1 := 'Dist_Name='+''''+Trim(ComboBox1.Text)+'''';
if ComboBox2.Text<>'' then
Inq2 := 'year(Dist_Date)='+Trim(ComboBox2.Text);
if ComboBox3.Text<>'' then
Inq3 := 'Month(Dist_Date)='+Trim(ComboBox3.Text);
SQLByeLaw := DistInquire(Inq,Inq1,Inq2,Inq3,0,DataModule1.ADOQuery1,
DataModule1.DataSource1,DBGrid1);
//¶Ôtb_ClientDistºÍtb_ClientInfoµÄ×ÛºÏ±í½øÐвéѯ
Inq := 'select a.Dist_ID Dist_ID,b.Client_Name Client_Name,a.Dist_Name Dist_Name,
a.Dist_Count Dist_Count,a.Unit Unit,a.Unit_Price Unit_Price,a.Dist_Money Dist_Money,
a.Dist_Date Dist_Date from tb_ClientDist a, tb_ClientInfo b where a.Client_ID
=b.Client_ID';
Inq1:='';
Inq2:='';
Inq3:='';
SQLSentence := Inq;
if ComboBox1.Text<>'' then
Inq1 := 'a.Dist_Name='+''''+Trim(ComboBox1.Text)+'''';
if ComboBox2.Text<>'' then
Inq2 := 'year(a.Dist_Date)='+Trim(ComboBox2.Text);
if ComboBox3.Text<>'' then
Inq3 := 'Month(a.Dist_Date)='+Trim(ComboBox3.Text);
DistInquire(Inq,Inq1,Inq2,Inq3,1,DataModule1.ADOQuery1,
DataModule1.DataSource1,DBGrid1);
end;
ÒÔÉÏ´úÂëÖ»Êǽ«ÏÂÀÁбíÖеÄ×Ö¶ÎÒÔSQLÓï¾äµÄ²éѯÌõ¼þ½øÐб£´æ£¬È»ºó¸ù¾Ý×Ô¶¨Òå¹ý³ÌDistInquire()¶ÔÏàÓ¦Êý¾Ý±íÖеÄÊý¾Ý½øÐвéѯ¡£¸Ã¹ý³ÌÊǽ«Êý¾ÝµÄ²éѯÌõ¼þÓëÖ¸¶¨µÄSQLÓï¾äÏàÁ¬½Ó£¬ÓÃTADOQueryÀàÐ͵Ä×é¼þ½øÐвéѯ£¬²¢Í¨¹ýTDBGridÀàÐ͵Ä×é¼þ½øÐÐÏÔʾ¡£ÆäÏà¹Ø´úÂëÈçÏ£º
function TForm1.DistInquire(Str, S1, S2, S3: String; Sign :Integer; ADOQ: TADOQuery;
DS: TDataSource; DBG: TDBGrid):String;
begin
if ((S1<>'') or (S2<>'') or (S3<>'')) then
begin
if Sign=1 then
Str := Str+' and '
else
Str := Str+' where ';
if S1<>'' then
begin
Str := Str+S1;
if ((S2<>'') or (S3<>'')) then
Str := Str+' and ';
end;
if S2<>'' then
begin
Str := Str+S2;
if ((S1<>'') or (S3<>'')) then
Str := Str+' and ';
end;
if S3<>'' then
begin
Str := Str+S3;
if ((S2<>'') or (S1<>'')) then
Str := Str+' and ';
end;
if (Trim(Copy(Str,Length(Str)-4,4))='and') then
Str := Copy(Str,1,Length(Str)-4);
end;
with ADOQ do
begin
Close;
SQL.Clear;
SQL.Add(Str);
open;
end;
DBG.DataSource := DS;
result := Str;
end;
DistInquire()¹ý³ÌµÄ²ÎÊý˵Ã÷Èç±í5.8Ëùʾ¡£
±í5.8 SelectToColor()º¯ÊýµÄ²ÎÊý˵Ã÷
|
²ÎÊý |
˵Ã÷ |
|
Str |
×Ö·û´®ÀàÐÍ£¬ÓÃÓڼǼSQLÓï¾ä |
|
S1 |
²éѯÌõ¼þ |
|
S2 |
²éѯÌõ¼þ |
|
S3 |
²éѯÌõ¼þ |
|
Sign |
ÓÃÓÚÅжÏSQLÓï¾äÊÇ·ñÓвéѯÌõ¼þ£¬Èç¹ûֵΪ0£¬±íʾÎÞ²éѯÌõ¼þ£¬Îª1£¬ÓвéѯÌõ¼þ |
|
ADOQ |
TADOQueryÀàÐÍ£¬ÓÃÓÚ¶ÔÊý¾Ý±í½øÐвéѯ |
|
DS |
TDataSourceÀàÐÍ£¬ÓÃÓÚÁ¬½ÓÊý¾ÝÔ´ºÍÊý¾Ý±í |
|
DBG |
TDBGridÀàÐÍ£¬ÓÃÓÚÏÔʾÊý¾ÝÐÅÏ¢ |
¶ÔÉÌÆ·µÄÊý¾Ý½øÐвéѯ֮ºó£¬¾Í¿ÉÒÔµ÷ÓÃͼ±í´°Ìå¶Ô¸ÃÉÌÆ·½øÐзÖÎö£¬ÔÚµ÷ÓÃͼ±í´°ÌåµÄͬʱ£¬Ó¦¸Ã½«µ±Ç°¼Ç¼ÒÔ±êÌâµÄÐÎʽÔÚµ÷Óô°ÌåµÄ±êÌâÀ¸ÖнøÐÐÏÔʾ¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if ((ComboBox1.Text<>'') and (ComboBox2.Text<>'') and (ComboBox3.Text<>'')) then
begin
Condition := 'where Dist_Name='+''''+Trim(ComboBox1.Text)+''''+' and
year(Dist_Date)='+Trim(ComboBox2.Text)+' and Month(Dist_Date)='+Trim
(ComboBox3.Text);
Titl := ComboBox2.Text+'Äê'+ComboBox3.Text+'Ô·Ý'+ComboBox1.Text+'ÉÌÆ·µÄ';
Application.CreateForm(TForm3,Form3);
Form3.Caption := Titl+'·ÖÎöͼ';
Form3.ShowModal;
Form3.Free;
end
else
showmessage('ÇëÑ¡ÔñÈ«²¿µÄÌõ¼þ');
end;
ÏÂÃæ¶Ô¡°ÉÌÆ·µÄÏúÊÛ·ÖÎöͼ¡±´°ÌåµÄÖÆ×÷¹ý³Ì½øÐн²½â¡£
Ê×ÏÈÒª¶ÔijÉÌÆ·µÄÔÂÏúÊÛ½ð¶î¡¢¸÷¹«Ë¾ÏúÊÛ½ð¶î¡¢ÔÂÏúÊÛµÄ×î´ó½ð¶î/×îС½ð¶î¡¢¸÷¹«Ë¾ÏúÊÛµÄ×î´ó/×îС½ð¶îËĸöͼ±í½øÐзÖÎö£¬ÔÂÏúÊÛ½ð¶îºÍ¸÷¹«Ë¾ÏúÊÛ½ð¶îÓ¦¸ÃÒÔÏßÐÍͼ±í½øÐÐÏÔʾ£¬µ±ÉÌÆ·µÄÏúÊÛÊýÁ¿Ö»ÓÐÒ»¸öʱ£¬ÏßÐÍͼ±íÎÞ·¨ÏÔʾ£¬Ö»ÄÜÓÃÌõÐÍͼ±í½øÐÐÏÔʾ£¬Õâʱ£¬¾ÍÓ¦¸ÃÔÚͼ±íÖд´½¨ÏßÐÍͼºÍÌõÐÍͼÁ½ÖÖ£¬¸ù¾ÝÊýÁ¿µÄ¶àÉÙÀ´ÅжÏÓÃÄÄÒ»ÀàÐ͵Äͼ±í£¬È»ºóÔÙÓÃͼ±íÏÔʾÉÌÆ·µÄÏà¹ØÐÅÏ¢£¬ÒÔϹý³Ì£¬Ó¦¸ÃÔÚ´°ÌåµÄOnCreateʼþÖÐÖ´ÐС£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm3.FormCreate(Sender: TObject);
var
Sele : String;
begin
if DataModule1.ADOQuery1.RecordCount<=1 then
begin
DBChart1.Series[0].Active := False;
DBChart1.Series[1].Active := True;
DBChart4.Series[0].Active := False;
DBChart4.Series[1].Active := True;
Mark := 1;
end
else
begin
DBChart1.Series[0].Active := True;
DBChart1.Series[1].Active := False;
DBChart4.Series[0].Active := True;
DBChart4.Series[1].Active := False;
Mark := 0;
end;
//ÉèÖÃͼ±íÏà¶ÔÓ¦µÄSQLÓï¾ä
SQLSentence('Day(Dist_Date)','ÏúÊÛÈÕÆÚ','Dist_Money','ÏúÊÛ½ð¶î',form1.SQLByeLaw,
form1.Titl+'ÏúÊÛ½ð¶î','',0,Mark,DataModule1.ADOQuery2,DBChart1);
Sele := '('+form1.SQLSentence+') f';
SQLSentence('Dist_Date','ÏúÊÛÈÕÆÚ','Dist_Money','ÏúÊÛ½ð¶î',form1.Condition,
form1.Titl+'ÏúÊÛ×î´ó½ð¶î/×îС½ð¶î','tb_ClientDist',1,0,DataModule1.ADOQuery4,
DBChart2);
SQLSentence('Client_Name','¹«Ë¾Ãû³Æ','sum(Dist_Money)','ÏúÊÛ½ð¶î',form1.Condition,
form1.Titl+'¸÷¹«Ë¾ÏúÊÛÇé¿ö',Sele,2,Mark,DataModule1.ADOQuery5,DBChart4);
SQLSentence('Client_Name','¹«Ë¾Ãû³Æ','sum(Dist_Money)','ÏúÊÛ½ð¶î',form1.Condition,
form1.Titl+'¹«Ë¾×î´ó/×îС½ð¶î',Sele,3,0,DataModule1.ADOQuery3,DBChart3);
end;
×Ô¶¨Òå¹ý³ÌSQLSentence()£¬Ö÷ÒªÊǽ«Éú³Éͼ±íµÄSQLÓï¾ä½øÐÐ×éºÏ£¬²¢½«Ò»Ð©Öظ´µÄÓï¾ä½øÐмò»¯¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm3.SQLSentence(CField1, CAlias1, FField2, FAlias2, Condition,
Caption, TableName: String; Sign,Odd : Integer; ADOChart: TADOQuery; DChart: TDBChart);
var
S,X,Y,T,LS : String;
begin
if (Sign=1) or (Sign=3) then
begin
if Sign=1 then
begin
S := 'Select '+CField1+' as '+''''+CAlias1+''''+','+FField2+' as '+''''+
FAlias2+''''+' From (';
S := S+' select top 1 * from '+TableName+' ';
S := S+Condition;
LS := S;
end;
if Sign=3 then
begin
S := 'Select * From (select top 1 * from (';
S := S+'Select '+CField1+' as '+''''+CAlias1+''''+','+FField2+' as '+''''+
FAlias2+''''+' from '+TableName+' ';
S := S+Condition+' Group By '+CField1+') d';
LS := S;
FField2 := FAlias2;
end;
if Sign=3 then
S := S+' order by '+FAlias2+') a'
else
S := S+' order by '+FField2+') a';
S := S+#13+'union';
S := S+#13+LS;
if Sign=3 then
S := S+' order by '+FAlias2+' desc) a'
else
S := S+' order by '+FField2+' desc) a';
end;
if Sign=0 then
S := 'Select '+CField1+' as '+''''+CAlias1+''''+','+FField2+' as '+''''+
FAlias2+''''+' from ('+Condition+') a';
if Sign=2 then
begin
S := 'Select '+CField1+' as '+''''+CAlias1+''''+','+FField2+' as '+''''+
FAlias2+''''+' from '+TableName+' ';
S := S+Condition+' Group By '+CField1;
end;
X := CAlias1;
Y := FAlias2;
T := Caption;
//½«Êý¾ÝÓëÖ¸¶¨µÄͼ±íÏàÁ¬½Ó
ConnectChart(S, X, Y, T, ADOChart, DChart, Sign, Odd);
end;
DistInquire()¹ý³ÌµÄ²ÎÊý˵Ã÷Èç±í5.9Ëùʾ¡£
±í5.9 DistInquire ()º¯ÊýµÄ²ÎÊý˵Ã÷
|
²ÎÊý |
˵Ã÷ |
|
CField1 |
Êý¾Ý±íÖеÄ×ֶΣ¬Ïà¶ÔÓÚͼ±íµÄXÖá |
|
CAlias1 |
CField1×ֶεıðÃû |
|
CField2 |
Êý¾Ý±íÖеÄ×ֶΣ¬Ïà¶ÔÓÚͼ±íµÄYÖá |
|
CAlias2 |
CField2×ֶεıðÃû |
|
Condition |
ÓÃÓڼǼSQLÓï¾äÖеÄÏà¹ØÐÅÏ¢ |
|
Caption |
¼Ç¼ͼ±íÖеıêÌâÐÅÏ¢ |
|
TableName |
¼Ç¼µ±Ç°²Ù×÷Êý¾Ý±íµÄ±íÃû |
|
Sign |
±ê¼Ç£¬ÓÃÓÚÅжÏÖ´ÐÐÄÇÒ»¶ÎSQLÓï¾ä |
|
Odd |
±ê¼Ç£¬ÓÃÓÚÅжÏͼ±íµÄÏÔʾÑùʽ |
|
ADOChart |
TADOQueryÀàÐÍ£¬ÓÃÓÚ¶ÔÊý¾Ý±í½øÐвéѯ |
|
DChart |
TDBChartÀàÐÍ£¬ÓÃÓÚ½«²éѯºóµÄÊý¾ÝÏÔʾÔÚÖ¸¶¨µÄͼ±íÉÏ |
ÔÚÒÔÏ´úÂëÖУ¬Óõ½ÁË×Ô¶¨Òå¹ý³ÌConnectChart()£¬¸Ã¹ý³ÌÊǽ«Ö¸¶¨µÄSQLÓï¾äÓëÏà¶ÔÓ¦µÄͼ±í½øÐÐÁ¬½Ó¡£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm3.ConnectChart(S, Xval, Yval, Tit : String; ADOQ: TADOQuery;
DChart: TDBChart; p,n : Integer);
begin
with ADOQ do
begin
Close;
SQL.Clear;
SQL.Add(S);
Open;
end;
DChart.Series[n].DataSource := ADOQ;
DChart.Series[n].XLabelsSource := Xval;
DChart.Series[n].YValues.ValueSource := Yval;
DChart.Title.Text.Clear;
if ADOQ.RecordCount=0 then
Tit := 'ÎÞÉÌÆ·¼Ç¼';
DChart.Title.Text.Add(Tit);
if ADOQ.RecordCount>10 then
DChart.Legend.Visible := False;
if ((p=1) or (p=3) or (n=1)) then
begin
DChart.Series[n].Marks.Style := smsValue;
DChart.Legend.Visible := False;
end;
end;
ConnectChart()¹ý³ÌµÄ²ÎÊý˵Ã÷Èç±í5.10Ëùʾ¡£
±í5.10 ConnectChart()º¯ÊýµÄ²ÎÊý˵Ã÷
|
²ÎÊý |
˵Ã÷ |
|
S |
×Ö·ûÐÍ£¬ÓÃÓÚ±£´æSQLÓï¾ä |
|
Xval |
Êý¾Ý±íÖеÄ×ֶΣ¬ÓÃÓÚÁ¬½Óͼ±íµÄXÖá |
|
Yval |
Êý¾Ý±íÖеÄ×ֶΣ¬ÓÃÓÚÁ¬½Óͼ±íµÄYÖá |
|
Tit |
×Ö·ûÐÍ£¬ÓÃÓڼǼͼ±íµÄ±êÌâ |
|
ADOQ |
TADOQueryÀàÐÍ£¬ÓÃÓÚ¶ÔÊý¾Ý±í½øÐвéѯ |
|
DChart |
TDBChartÀàÐÍ£¬ÓÃÓÚ½«Êý¾ÝÏÔʾÔÚÖ¸¶¨µÄͼ±íÉÏ |
|
p |
±ê¼Ç£¬ÓÃÓÚÅжÏͼ±íµÄÏÔʾÑùʽ |
|
n |
±ê¼Ç£¬ÓÃÓÚÅжÏͼ±íµÄÏÔʾÑùʽ |
ͨ¹ýÒÔÉÏ´úÂ룬¾Í¿ÉÒÔʵÏÖ¶Ôµ¥¸öÉÌÆ·µÄÔÂÏúÊÛ·ÖÎö£¬µ«ÊÇ£¬ÔÚÊý¾Ý¹ý¶àʱ£¬ÎÞ·¨ÔÚͼ±íÖнøÐÐÍêÕûµÄÏÔʾ£¬Õâʱ£¬¿ÉÒÔ½«´°Ìå½øÐÐ×î´ó»¯£¬ÎªÁËÄܹ»ÔÚ´°Ìå×î´ó»¯Ê±£¬ÈÃͼ±í°´ÔÀ´µÄ±ÈÀý½øÐÐÏÔʾ£¬Ó¦¸ÃÔÚ´°ÌåµÄOnResizeʼþÖжÔͼ±íµÄ´óС½øÐÐÉèÖá£Ïà¹Ø´úÂëÈçÏ£º
procedure TForm3.FormResize(Sender: TObject);
begin
Panel2.Height := self.Height div 2;
DBChart2.Width := round(self.Width*0.38);
DBChart3.Width := round(self.Width*0.38);
end;
3£®²¹³ä˵Ã÷
ÔÚͼ±íÖÐÏÔʾÊý¾Ýʱ£¬ÎªÁËÄܸüºÃµÄÏÔʾÊý¾ÝÖ®¼äµÄÊýÁ¿¹ØÏµ£¬¿ÉÒÔÔÚ²éѯÊý¾Ýʱ£¬¶ÔÊý¾Ý½øÐÐÅÅÐò£¬¿ÉÒÔÓÃSQLÓï¾äOrder ByÀ´ÊµÏÖ¡£
ÔÚÓÃÏßÐÎͼÏÔʾÊý¾Ýʱ£¬ÎªÁËÄܹ»¸üÇå³þµÄ¿´µ½¸÷¸öÊý¾ÝÖ®¼äµÄ±ä»¯£¬¿ÉÒÔ½«ÏßÐÎͼ±íÖеÄÊý¾ÝÏßÑÕÉ«ÒÔËæ»úÑÕÉ«½øÐÐÏÔʾ¡£´úÂëÈçÏ£º
DBChart1.Series[0].ColorEachPoint := True;
5.2.4 Êý¾Ý¶Ô±Èͼ±í·ÖÎö·½°¸
Êý¾Ý¶Ô±Èͼ±íÊÇÔÚÒ»¶¨Ê±¼äÄÚ£¬¶ÔÏà¹ØÊÂÎï½øÐбÈЧ£¬ÒÔ±ã¶ÔÊÂÎï¼äµÄ·¢Õ¹¹ØÏµ½øÐзÖÎö£¬´Ó¶ø¿ÉÒÔ¸ü¿ìµÄÅжϳö¸÷ÊÂÎïµÄ·¢Õ¹Ç÷ÊÆ¡£±¾½Ú½«¸÷¸öʱ¼ä¶ÎµÄÊý¾ÝÐÅÏ¢ÒÔÏàͬµÄͼ±íÀàÐͽøÐÐÏÔʾ£¬²¢½«¸÷ÀàÐ͵ÄÊý¾ÝÐÅÏ¢½øÐÐ×éºÏ£¬ÒÔʵÏֶԱȷÖÎöµÄЧ¹û¡£
1£®·½°¸·ÖÎö
µ±¶Ô¶à¸öʱ¼ä¶ÎµÄÊý¾ÝÐÅÏ¢½øÐзÖÎöʱ£¬ÓÐʱÐèÒª½«¶à¸öʱ¼ä¶ÎµÄÐÅÏ¢½øÐжԱȷÖÎö¡£ÄÇô£¬¾ÍÐèÒª½«¸÷ʱ¼ä¶ÎµÄÐÅÏ¢ÔÚÒ»¸öͼ±íÖнøÐÐÏÔʾ¡£Õâʱ£¬¿ÉÒÔ½«¶à¸öÀàÐ͵Äͼ±í½øÐÐ×éºÏ£¬À´Ê
