Delphi TeeChart показывает только одну запись из набора данных - PullRequest
1 голос
/ 10 февраля 2009

Используя компонент Delphi Steema TeeChart, если я связываю BarSeries с набором данных с помощью пользовательского интерфейса, он хорошо отображается, но если я делаю это с помощью кода (который мне нужен), он показывает только одну полосу, даже когда я есть несколько записей в базе данных. Что я делаю не так?

Код:

var
   i:Integer;
   Bar:TBarSeries;
begin
   ADataSet.Close;
   ADataSet.LoadFromDataSet(mtbl);
   ADataSet.Active := true;
   ADataSet.First;
   ASource.DataSet := ADataSet;

   Bar := TBarSeries.Create(AChart);
   Bar.Assign(Series2);
   Bar.ParentChart := AChart;
   Bar.DataSource := ASource;
   Bar.XLabelsSource := 'Date';
   Bar.YValues.ValueSource := 'Load';

   for i := 0 to AChart.SeriesCount - 1 do
   begin
      AChart.Series[i].CheckDataSource;
   end;

ADataSet - это DevExpress MemData (TdxMemData). Когда я запускаю программу, ось X показывает только одну полосу, первую запись в наборе данных, хотя у меня есть 4 записи в наборе данных.

Ответы [ 2 ]

3 голосов
/ 10 февраля 2009

Этот код работает для меня (используя базу данных Access с полями ID и Height, я удалил TDBChart, TADODataSet и TButton в форме):

procedure TForm1.Button1Click(Sender: TObject);  
var   
    Bar : TBarSeries;  
begin  
    ADODataSet1.Close;  
    ADODataSet1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;...';  
    Bar := TBarSeries.Create(DBChart1);  
    DBChart1.AddSeries(Bar);  
    Bar.ParentChart := DBChart1;  
    Bar.DataSource := ADODataSet1;  
    Bar.XLabelsSource := 'ID';  
    Bar.YValues.ValueSource := 'Height';  
    ADODataSet1.Active := true;  
end;

Обратите внимание, что источником данных должен быть TTable, TQuery или TDataSet (не TDataSource - см. Рисунок!).

Надеюсь, это поможет.

0 голосов
/ 10 февраля 2009

TChart обновляет запрос каждый раз, когда вы устанавливаете

ADataSet.Active: = true;

Итак, переместите эту команду в конец вашего блока (например, после настройки свойств серии).

...