我想在一个图表中显示多条曲线一用来比较,他们的横坐标是一样的,请问如何做啊

解决方案 »

  1.   

    用TCHart,多加几个Series不就行了吗
      

  2.   


    给你一段程序,是动态创建LineSeries和Query的。通过SQL语句控制Query中的数据,将其付给LineSeries生成曲线,在一张Chart中显示出来。procedure TecqxForm.ToolButton3Click(Sender: TObject);
    var
      Str, Id, lName : string;             
      lNum, lMark : integer;
      lLineNum : Array of integer;
      MyChart: Array of TLineSeries;
      MyQuery: Array of TQuery;
    begin
      Str := '';   Id := '';   lName := '';
      {-----------------------------------------------------------------------------
      Str 表示需要写入动态Query组件的SQL语句   Id表示所选择站点的站点号
      lName 表示所选择站点的站点名             lNum表示所选站点拥有的曲线总数
      lMark 表示按顺序排列的各条曲线的序列
      ------------------------------------------------------------------------------}
      if Table2.Locate('surveypointname',TreeView1.Selected.Parent.Text,[]) then
      begin
        Id := Table2.fieldbyname('surveypointno').asstring;
        lName := Table2.FieldByName('SurveyPointName').AsString;
        lNum := TreeView1.Selected.Parent.Count;
        if lNum > 0 then
        begin
          SetLength(lLineNum, lNum+1);
          SetLength(MyChart, lNum+1);
          SetLength(MyQuery, lNum+1);
        end;    lMark := 0;
        while lMark < lNum do
        begin
          lLineNum[lMark] := StrToInt(TreeView1.Selected.Parent.Item[lMark].Text);      Str := 'select bb.surveypointname 站点名,aa.surveypointno 站点号,aa.waterlevel 水位,aa.flow 流量 '
             +',aa.numbers 曲线数 from waterflowtable aa,surveypoints bb where aa.surveypointno='+
             ''''+id+''''+' and aa.surveypointno=bb.surveypointno and numbers='+IntToStr(lLineNum[lMark]);
          //ShowMessage(Str);      try
            MyChart[lMark] := TLineSeries.Create(Nil);
            MyChart[lMark].ParentChart := DBChart2;
            MyQuery[lMark] := TQuery.Create(Nil);
            MyQuery[lMark].DatabaseName := DataBase1.DatabaseName;        MyQuery[lMark].Close;
            MyQuery[lMark].SQL.Clear;
            MyQuery[lMark].SQL.Add(Str);
            MyQuery[lMark].Open;        MyChart[lMark].DataSource := MyQuery[lMark];
            MyChart[lMark].XLabelsSource := '流量';
            MyChart[lMark].XValues.ValueSource := '流量';
            MyChart[lMark].YValues.ValueSource := '水位';
            MyChart[lMark].CheckDataSource;
            MyChart[lMark].LinePen.Width := 2;
            MyChart[lMark].Title := lName +' '+ IntToStr(lLineNum[lMark]);
            MyChart[lMark].Active := true;
            MyChart[lMark].RefreshSeries;
          except
            ShowMessage('Error!');
            Exit;
          end;
          Str := '';
          Inc(lMark,1);
        end;
      end;
      {----------------------------------------------------------------------------
      由于当树状结构所选节点改变时,其仍然运行。即当选择其中一个站点时,当点击两次此
      按钮,发生事件时,当会执行两遍上述过程,每一条曲线绘画两次。因此下句代码不可省略
      -----------------------------------------------------------------------------}
      ToolButton3.Enabled := False;
    end;