Q&A

  • TChart 컴포넌트의 Series 갯수 코딩으로 늘리기
코딩상에서 Series 의 숫자를 늘려야 합니다

도와주세여

1  COMMENTS
  • Profile
    신호성 2001.01.20 21:49
    아무개 wrote:

    > 코딩상에서 Series 의 숫자를 늘려야 합니다

    > 도와주세여



    제가 작성했던 DataSet을 참조하여 동적으로 Chart를 생성하는 소스의 일부분입니다.

    Chart의 각종 프로퍼티 또한 사용자가 지정할 수 있도록 하기위해 부가적인 코딩부분이 포함되어 있으나 차분히 읽어보시면 이해될겁니다.





    dbcUser: TDBChart;

    qMain : TDBDataSet;

    ArrS : Array[0..250] of TChartSeries;





    procedure TfrmAAChartWC.ChangeChart;

    var

    i : Integer;

    XCol, YCol : String;

    begin

    XCol := Trim(Copy(cbLabel.Items[cbLabel.ItemIndex],30,30));



    for i := 0 to uvi_NumColumnCnt-1 do

    begin

    // Chart 유형에 따른 생성

    Case uvi_ChartType of

    0 : begin

    ArrS[i] := TBarSeries.Create(self);

    (ArrS[i] as TBarSeries).BarStyle := bsRectGradient;

    end;

    1 : begin

    ArrS[i] := TLineSeries.Create(self);

    end;

    2 : begin

    ArrS[i] := TPointSeries.Create(self);

    (ArrS[i] as TPointSeries).Pointer.Style := psDownTriangle;

    end;

    3 : begin

    ArrS[i] := THorizBarSeries.Create(self);

    (ArrS[i] as THorizBarSeries).BarStyle := bsRectGradient;

    end;

    4 : ArrS[i] := TPieSeries.Create(self);

    5 : ArrS[i] := TAreaSeries.Create(self);

    6 : ArrS[i] := TfastLineSeries.Create(self);

    end;



    ArrS[i].Title := Trim(Copy(clbALL.Items[i],0,29) );

    ArrS[i].Active := false;

    YCol := Trim(Copy(clbALL.Items[i],30,30) );



    ArrS[i].ParentChart := dbcUser;

    ArrS[i].DataSource := qMain;





    if uvi_ChartType = 3 then

    begin

    ArrS[i].XValues.ValueSource := YCol;

    ArrS[i].XLabelsSource := XCol;

    end

    else begin

    ArrS[i].YValues.ValueSource := YCol;

    ArrS[i].XLabelsSource := XCol;

    end;



    // Series Visible 설정

    ArrS[i].Active := clbALL.Checked[i];



    // Series 추가

    dbcUser.AddSeries(ArrS[i]);

    end;



    end;