using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using FastReport;
using FastReport.Data;
using FastReport.Dialog;
using FastReport.Barcode;
using FastReport.Table;
using FastReport.Utils;
namespace FastReport
{
public class ReportScript
{
private void Table1_ManualBuild(object sender, EventArgs e)
{
int maxOraszam = int.Parse(Report.Parameters.FindByName("MaxOraszam").Value.ToString());
// Fő tábla: hetek
DataSourceBase masterData = Data8.DataSource;
// Gyerek tábla: összes adat
DataSourceBase rowData = Report.GetDataSource("NaploAdatok");
// Fő tábla inicializálása
//masterData.Init();
// Mennyi hét van
int hetek = masterData.RowCount;
// Kacsolat beállítása a fő és a gyerek tábla között
Relation rel = new Relation();
rel.Name = "AccountsInvoices";
rel.ParentDataSource = masterData;
rel.ChildDataSource = rowData;
rel.ParentColumns = new string[] { "C_HETSORSZAMA" };
rel.ChildColumns = new string[] { "C_HETSORSZAMA" };
Report.Dictionary.Relations.Add(rel);
// Paraméterben kapott oszlopok, ezek, amik dinamikusan generálódnak minden osztályhoz
string[] poszlopok = Report.GetParameterValue("Oszlopok") as string[];
//for(int i=0; i<hetek; i++)
{
rowData.Init(masterData);
// Mennyi oszlop lesz összesen
int oszlopok = poszlopok.Length + 4;
// Első nap
int nap = 0;
// Fejléc generálása
OsztalyNaplo.PrintRow(0);
for (int k = 0; k < oszlopok; k++)
{
if(k<4)
{
OsztalyNaplo.PrintColumn(k);
}
else
{
OszlopFejlec.Text= poszlopok[k-4];
OsztalyNaplo.PrintColumn(4);
}
}
// Végigmegyünk az összes soron
while(rowData.HasMoreRows)
{
// Ha péntek után még van nap
if(nap==5)
{
// akkor új oldalra kerül
OsztalyNaplo.PageBreak();
// Fejléc generálása
OsztalyNaplo.PrintRow(0);
for (int k = 0; k < oszlopok; k++)
{
if(k<4)
{
OsztalyNaplo.PrintColumn(k);
}
else
{
OszlopFejlec.Text= poszlopok[k-4];
OsztalyNaplo.PrintColumn(4);
}
}
}
// 10 sor van egy naphoz
for(int j=1; j < maxOraszam + 1; j++)
{
OsztalyNaplo.PrintRow(j);
// Tanítási napok sorszáma
Object temporaszam = Report.GetColumnValue("NaploAdatok.NapSorszama") as object;
if(temporaszam != null)
{
CellNapSorszama.Text = temporaszam.ToString()+".";
}
// A hét napja nyelvesítve
string temphetnapja = Report.GetColumnValue("NaploAdatok.C_HETNAPJA_DNAME") as string;
if(temphetnapja != null)
{
CellHetNapja.Text = temphetnapja;
}
// Tantárgyak egy naphoz
string temptargy = Report.GetColumnValue("NaploAdatok.Tantargy") as string;
if(temptargy!=null)
{
switch(j)
{
case 1:
CellTargy1.Text = temptargy;
break;
case 2:
CellTargy2.Text = temptargy;
break;
case 3:
CellTargy3.Text = temptargy;
break;
case 4:
CellTargy4.Text = temptargy;
break;
case 5:
CellTargy5.Text = temptargy;
break;
case 6:
CellTargy6.Text = temptargy;
break;
case 7:
CellTargy7.Text = temptargy;
break;
case 8:
CellTargy8.Text = temptargy;
break;
case 9:
CellTargy9.Text = temptargy;
break;
case 10:
CellTargy10.Text = temptargy;
break;
case 11:
CellTargy11.Text = temptargy;
break;
case 12:
CellTargy12.Text = temptargy;
break;
case 13:
CellTargy13.Text = temptargy;
break;
case 14:
CellTargy14.Text = temptargy;
break;
case 15:
CellTargy15.Text = temptargy;
break;
case 16:
CellTargy16.Text = temptargy;
break;
case 17:
CellTargy17.Text = temptargy;
break;
case 18:
CellTargy18.Text = temptargy;
break;
case 19:
CellTargy19.Text = temptargy;
break;
case 20:
CellTargy20.Text = temptargy;
break;
case 21:
CellTargy21.Text = temptargy;
break;
case 22:
CellTargy22.Text = temptargy;
break;
case 23:
CellTargy23.Text = temptargy;
break;
case 24:
CellTargy24.Text = temptargy;
break;
case 25:
CellTargy25.Text = temptargy;
break;
}
}
// Mulasztások
string tempmulasztas = Report.GetColumnValue("NaploAdatok.Mulasztas") as string;
if(tempmulasztas!=null)
{
Cell50.Text = tempmulasztas.Replace("[","{").Replace("]","}");
Cell50.RowSpan = maxOraszam;
}
// Az alap 4 oszlop utáni dinamikusan generált oszlopok feltöltése
for (int k = 0; k < oszlopok; k++)
{
if(k<4)
{
OsztalyNaplo.PrintColumn(k);
}
else
{
Cell64.Text="";
string tempmegj = Report.GetColumnValue("NaploAdatok." + poszlopok[k-4]) as string;
if(tempmegj != null)
{
Cell64.Text=tempmegj;
Cell64.RowSpan = maxOraszam;
}
OsztalyNaplo.PrintColumn(4);
}
}
rowData.Next();
}
nap++;
}
OsztalyNaplo.ResultTable.AfterCalcBounds += new EventHandler(ResultTable_AfterCalcBounds);
}
}
private void ResultTable_AfterCalcBounds(object sender, EventArgs e)
{
// Táblázat szélességének beállítása
TableResult resultTable = sender as TableResult;
float tableWidth = resultTable.Width;
float pageWidth = Engine.PageWidth;
//if (tableWidth > pageWidth)
{
float ratio = pageWidth / tableWidth;
foreach (TableColumn column in resultTable.Columns)
{
column.AutoSize = false;
column.Width *= ratio;
}
resultTable.CalcHeight();
}
}
private void OsztalyNaploOldal_StartPage(object sender, EventArgs e)
{
Data8.DataSource = Report.GetDataSource("NaploHetek");
if (!string.IsNullOrWhiteSpace(Report.Parameters.FindByName("NaploZarasanakDatuma").Value.ToString()) && DateTime.Parse(Report.Parameters.FindByName("NaploZarasanakDatuma").Value.ToString()) <= DateTime.Now)
{
HaladasiNaploLezaras.Visible = true;
HaladasiLezarasText.Text =string.Format("Ezt a naplót {0} tanítási nappal lezártam.", Report.GetColumnValue("Fejlec.TanitasiNapokSzama").ToString());
}
}
}
}