Naplnění reportu daty - Graf

Top  Previous  Next

V další lekci využijeme znalostí z Naplnění reportu daty - QueryToCells a Naplnění reportu daty Query while. Pokud jste procházeli příklady postupně máte nyní report který vypadá:

pokud jste domání úkol z reportu Naplnění reportu daty Query while vynechali nebo nevíte jak na něj, zde je skript ke kterému jste se měli dopracovat:

 

procedure OnBeforeReport(Sender : TReportProperty);

var

 i,r : integer;

 Chart : TDBChart;                                                

begin

 r:=0;i:=0;            

 // load data

 BDEQuery1.Query.Open;

 while Not(BDEQuery1.Query.Eof) do

 begin    

   Sheet.Cells[fromCol+i,fromRow+r  ]:=BDEQuery1.Query.FieldbyName('jmeno').AsString;

   Sheet.Cells[fromCol+i,fromRow+r+1]:=BDEQuery1.Query.FieldbyName('pocet').AsString;        

   inc(i);

   if i>9 then

   begin

     inc(r,3);

     i:=0;

   end;

   BDEQuery1.Query.Next;  

 end;

end;

 

begin

end.

 

Nyní k zobrazeným datům vyrobíme graf. Zvyšte počet řádků na 13 nastavte výšku řádku 12 na 400px, šířku sloupce A na 20px a slučte buňky B12-K12 do jedné buňky.
Výsledek tedy vypadá:

V postranním panelu komponent vyberte komponentu DBChart a vložte do sloučené oblasti B12. Pravým tlačítkem myší vyvolejte kontextovou nabídku:

 

A vyberte upravit graf. V editoru grafů vytvoříme novou series: na záložce - Chart-Series stiskněte Add a vyberte Bar.
(pokud budete upravovat již existující graf je třeba abyste měli vybrané sloučené buňky "pod" grafem, kliknutím na graf se tyto buňky nevyberou, je třeba kliknout nad nebo pod graf a do sloučené oblasti se přesunout pomocí kurzorových kláves)

 

Na tomto místě se nebudeme zabývat kosmetickými úpravami grafu, jako jsou barvy popisy os, automatickou metrikou grafu a podobně. Všechny tyto vlastnosti naleznete v editoru grafů.

 

Nyní stačí upravit skript reportu na nastavit: Datasource pro graf a to co se bude v grafu zobrazovat:

přidáme proměnnou pro graf:

Chart : TDBChart;

a tuto část kódu

 Chart:=TDbChart(Sheet['B12'].CellComponent);                      // najdeme ukazatel na TDbChart

 with TLineSeries(Chart.SeriesList[0]) do                          // Nastavíme vlastnosti serie, kterou jsme vytvořili v grafu

 begin

   DataSource:=BDEQuery1.Query;                              // přiřadíme Query ze záložky Data

   XLabelsSource:=BDEQuery1.Query.Fields[0].FieldName;        // na ose X zobrazíme jména

   YValues.ValueSource:=BDEQuery1.Query.Fields[1].FieldName;        // na ose Y počet výskytů v databázi                            

 end;                          

 

To je vše, nyní report vypadá:

 

Kompletní skript reportu naleznete zde

Všimněte si že Query v reportu na závěr nezavíráme, protože kvůli zobrazení grafu musí zůstat otevřené. Vhodná událost na uzavření Query je například v události reportu OnReportClose.