Ê×Ò³ ÐÂÎÅ ÂÛ̳ Ⱥ×é Blog Îĵµ ÏÂÔØ ¶ÁÊé Tag ÍøÕª ËÑË÷ ¿ªÔ´ FAQ µÚ¶þÊéµê ²©ÎÄÊӵ㠳ÌÐòÔ±
ƵµÀ: Ñз¢ Êý¾Ý¿â Öмä¼þ ÐÅÏ¢»¯ ÊÓÆµ .NET Java ÓÎÏ· ÒÆ¶¯ ·þÎñ: È˲ŠÍâ°ü Åàѵ
    Í¼Ê鯷ÖÖ£º235680ÖÖ
       
ÈÈÃÅËÑË÷£º ASP.NET Ajax Spring Hibernate Java

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£®·½°¸·ÖÎö

µ±¶Ô¶à¸öʱ¼ä¶ÎµÄÊý¾ÝÐÅÏ¢½øÐзÖÎöʱ£¬ÓÐʱÐèÒª½«¶à¸öʱ¼ä¶ÎµÄÐÅÏ¢½øÐжԱȷÖÎö¡£ÄÇô£¬¾ÍÐèÒª½«¸÷ʱ¼ä¶ÎµÄÐÅÏ¢ÔÚÒ»¸öͼ±íÖнøÐÐÏÔʾ¡£Õâʱ£¬¿ÉÒÔ½«¶à¸öÀàÐ͵Äͼ±í½øÐÐ×éºÏ£¬À´Ê