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.
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. |