2. Skript reportu

Top  Previous  Next

Vlastní skript zajišťující interaktivitu mezi Tabulkou a Grafem je velmi jednoduchý a je aplikován v rozsahu C4:G10 událostí OnChange, protože skript mění zobrazení grafu na buňce B12 pojmenovali jsme tuto událost List1B12onChange, což je irelevantní, událost se stejně tak mohla jmenovat List1ChartChange nebo jinak, vlastní událost vypadá následovně:

 

procedure List1B12onChange(Sender: TCellProperty);

var

 Chart : TfrxChartView; // Graf vložený do sloučených buněk (B12) je typu TfrxChartView

 series,row : integer;

 ser : TfrxSeriesItem; // Series jsou typu TfrxSeriesItem

begin

 // najdeme odkaz na graf uložený v property frxReport pomocí component jména 'Chart'

 Chart:=TfrxChartView(Sheet.GetCellProperty('B12').frxReport.FindComponent('Chart'));

 if Chart<>nil then // Pokud jsme graf nenašli má Chart hodnotu nil

 for series:=0 to 4 do // Vytvořili jsme v grafu 5 series takže je projdeme a naplníme z tabulky

 begin

   ser := Chart.SeriesData.Items[series]; // Ukazatel na příslušnou Serie

   with ser do

   begin

     ser.YSource :=''; // smažeme původní obsah

     for row:=4 to 10 do // data výkonů servisáků jsou mezi řádky 4 až 10

     if Sheet.Cells[series+3,row]='' then

     ser.YSource :=ser.YSource + '0;' // pokud je buňka tabulky prázdná vlož 0

       else

     ser.YSource :=ser.YSource + Sheet.Cells[series+3,row]+';'; // jinak vlož hodnotu z buňky

   end;

 end;

 if Sheet.GetCellProperty('B12').frxReport<>nil then // jen pojistka že frxReport existuje

 Sheet.GetCellProperty('B12').frxReport.ShowReport; // překresli graf

end;

 

Nyní stačí tuto událost přiřadit buňkám C4:G10, pokud jste neudělali chybu, potom po změně v tabulce se graf patřičným způsobem aktualizuje.
A to je vše nyní jste vytvořili tabulku s interaktivní zobrazením dat pomocí Grafu.

 

Pokud bude chtít měnit vlastnosti grafu pomocí skriptu následující rozšíření vám ukáže, jak skriptem změnit zobrazení na 3D.

Do buňky J8 vložte komponentu CheckBox a Caption nastavte například na '3D'. Potom už stačí podobně jako v předchozím skriptu

najít ukazatel na graf Chart a změnit property View3D, View3DWalls,View3DOptions

 

Vytvoříme událost CheckBoxClick

 

procedure CheckBoxClick(Sender: TObject);

var

 Chart : TfrxChartView;

begin

 Chart:=TfrxChartView(Sheet.GetCellProperty('B12').frxReport.FindComponent('Chart'));

 if Chart<>nil then

 begin

   Chart.Chart.View3D:=TCheckBox(Sender).Checked;

   Chart.Chart.View3DWalls:=TCheckBox(Sender).Checked;

   Chart.Chart.View3DOptions.Orthogonal:=TCheckBox(Sender).Checked;

 

   if Sheet.GetCellProperty('B12').frxReport<>nil then

   Sheet.GetCellProperty('B12').frxReport.ShowReport;      

 end;            

end;        

   

a ještě samozřejmě zbývá přiřadit událost OnClick komponentně CheckBox

                                                   

// Priradi Eventy componentam                                                                    

procedure OnPrepareScript(Sender : TReportProperty);  

begin

 If Sheet.GetCellProperty('J8').CellComponent<>nil then  

 TCheckBox(Sheet.GetCellProperty('J8').CellComponent).OnClick:=@CheckBoxClick;                            

end;

 

 

begin

end.