PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum criação de series em tempo de execução no gráfico barra #576936

14/03/2017

0

Bom dia gente!!
Estou com um probleminha. Tenho que criar um gráfico em que alternativas são avaliadas em vários critérios. Para isso cada alternativa corresponderá a uma serie, em que ao ser selecionada no checkbox do gráfico uma barra referente a ela aparecerá em cada critério.

Para isso tenho o código abaixo, mas ele está dando erro de acesso de violação na linhas em que são adicionadas as series ao gráfico. Não consegui entender o porque :/

outra dúvida que tenho é como tornar a propriedade de checkbox do próprio gráfico selecionável ou não. consegui fazer com que elas apareçam, representando cada serie, mas não consigo desmarcar nenhum item
procedure Tfrmgraficobarra.btngraficobarraClick(Sender: TObject);
var
chart10: Tchart;
bar: array of Tbarseries;
i, j, k, m, n, p, q: integer;
NumCri, eixox, NTD: integer;
Vg: array of array of double;
criteriaorder: array of integer;
indNTD: array of integer;
CriteriaName, NTDName: array of string; // vetores que guardam o nome dos
// critérios e alternativas não dominadas, respectivamente.
begin
imggraficobarra.Visible := true;
NTD := 4;
NumCri := 6;
// Cada série representará uma alternativa a ser analisada em cada critério
// vetor que guarda as series do grafico
setlength(bar, NTD);
// Colunas da matriz Vg (critérios)
setlength(criteriaorder, NumCri);
// linhas da matriz Vg (subconjunto de alternativas não dominadas)
setlength(indNTD, NTD);
// criando o gráfico
chart10 := Tchart.Create(Self);
// configurações do gráfico
chart10.legend.CheckBoxes := true;
chart10.Enabled := true;
chart10.view3D := False;
chart10.bottomaxis.Visible := true;
chart10.SeriesList.ClearValues;
chart10.Title.Text.Add('Bar Graph');
// preenchendo o vetor de indices dos critérios
for m := 0 to NumCri - 1 do
begin
criteriaorder[m] := m + 1;
end;
// preenchendo o vetor de indices das alternativas não dominadas
for n := 0 to NTD - 1 do
begin
indNTD[n] := n + 1;
end;
// matriz que terá a altura de cada barra no gráfico
setlength(Vg, Length(indNTD), Length(criteriaorder));
// preenchendo as linhas da matriz
for i := 0 to NTD - 1 do
begin
for j := 0 to NumCri - 1 do
begin
Vg[i, j] := ((j / 15) + 0.002);
end;
end; //
// criando series (cada serie corresponderá a uma alternativa)
for p := 0 to NTD - 1 do
begin
bar[p] := Tbarseries.Create(Self);
chart10.AddSeries(bar[0]); //linha em que da o erro
end;
for k := 0 to NTD - 1 do

for q := 0 to NumCri - 1 do
begin
bar[q].AddXY((q + 2), Vg[k, q], '', clWebCORAL);

end;
k := k + 1;
bar[0].Title := 'alternativa 1';
bar[0].ShowInLegend := False;
bar[0].Marks.Visible := False;
imggraficobarra.Picture.Bitmap.Assign
(chart10.TeeCreateBitmap(clWebAQUA, rect(0, 0, imggraficobarra.Width,
imggraficobarra.Height)));
end;


Obrigada
Roberta

Roberta

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar