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
Obrigada
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)