Verschillende scripts in de rapportgenerator
Op deze pagina vind je verschillende handige scripts die je kunt gebruiken in de rapportgenerator.
Hoe verberg ik het %-teken in de koptekst als er geen korting is?
Vergeet niet dat het script moet worden geselecteerd op het lint "PageHeader" in Properties/Behavior/Scripts, in het veld "Before print" (Voor afdrukken).
private void PageHeader_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
var colSource = GetCurrentColumnValue("DebtorInfo") as Uniconta.ClientTools.DataModel.DebtorClient;
bool discountPctExist = false;
if (colSource !=null)
{
var invLines = colSource.InventoryTransInvoice as
Uniconta.ClientTools.DataModel.InvTransInvoice[];
foreach(var invLine in invLines)
{
if(invLine.DiscountPct !=null || invLine.DiscountPct >0)
{
discountPctExist = true;
break;
}
}
}
if(discountPctExist)
{
//Label name you want to show
xrLabelDiscountPct.Visible = true;
}
else
{
//Label name you want to hide
xrLabelDiscountPct.Visible = false;
}
}
Hoe verberg ik het %-teken in de koptekst als er geen %- of bedragkorting is?
Vergeet niet dat het script moet worden geselecteerd op het lint "PageHeader" in Properties/Behavior/Scripts, in het veld "Before print" (Voor afdrukken).
private void PageHeader_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
var colSource = GetCurrentColumnValue("DebtorInfo") as Uniconta.ClientTools.DataModel.DebtorClient;
bool discountPctExist = false;
//xrLabelDiscountPct.Visible = false;
if (colSource !=null)
{
var invLines = colSource.InventoryTransInvoice as Uniconta.ClientTools.DataModel.InvTransInvoice[];
foreach(var invLine in invLines)
{
if(invLine.DiscountPct !=null || invLine.DiscountPct >0 || invLine.Discount !=null || invLine.Discount >0)
{
discountPctExist = true;
break;
}
}
}
if(discountPctExist)
{
//Label name you want to show
xrLabelDiscountPct.Visible = true;
}
else
{
//Label name you want to hide
xrLabelDiscountPct.Visible = false;
}
}
Hoe verberg ik een label voor een leeg veld?
Als je een gegevensveld gebruikt dat niet altijd wordt ingevuld, bijvoorbeeld het aanvragennummer, kun je het label verbergen door een kleine invoer te maken in "Scripts"
, dat je kunt vinden in het menu van de generator, rechtsboven.
private void xrReqLable_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
// Ex. på hvordan man får fat i objektet xrReqLable, via "sender" i funktionskaldet, der derefter kan manipuleret med alverdens egenskaber
XRLabel label = (XRLabel)sender;
// Ex. på hvordan man kan udfylde en label via kode...
// Ex. på en if sætning...
// Spørger om label xrReqValue er tomt! Hvis tomt, skal tilhørende label xrReqLable ikke vises, ellers skal den vises.
if (xrReqValue.Text == "") {
label.Visible = false; }
else {
label.Visible = true;
//label.ForeColor = Color.Black;
//label.BackColor = Color.White;
}
}
Hoe krijg ik decimalen op mijn btw-bedrag?
Als je velden geen decimalen tonen zoals verwacht, kun je een kleine notitie schrijven in "Scripts" die je kunt vinden in het menu van de generator, rechtsboven.
Selecteer het label in kwestie, bijvoorbeeld zoals onder het BTW-veld, xrDetailInvoiceFieldSum, en klik op Scripts in het menu. Selecteer vervolgens
BeforePrint in het rechter uitrolmenu bovenaan en de onderstaande functie verschijnt.
Voeg de XRLabel.... code in zoals in de onderstaande cursief gedrukte functie.
private void xrDetailInvoiceFieldSum_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
XRLabel label = (XRLabel)sender;
// Formatere den valgte label til at have to decimaler (N2)
if(!string.IsNullOrEmpty(label.Text)) label.Text = Convert.ToDouble(label.Text).ToString("N2");
}
Hoe verberg ik een label voor de standaard DateTime-waarde? ("01-01-0001 00:00:00" of "01-01-0001")
Als je een DateTime-veld hebt gevuld met een standaardwaarde, kun je het label verbergen door een kleine afdruk te maken in "Scripts" dat je kunt vinden in het menu van de generatoren rechtsboven.
private void xrReqLable_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
var xrLabel = sender as XRLabel;
if(xrLabel != null && !string.IsNullOrEmpty(xrLabel.Text))
{
DateTime dateTime;
if(DateTime.TryParse(xrLabel.Text, out dateTime) && dateTime == DateTime.MinValue)
xrLabel.Text = string.Empty;
}
}
Hoe gebruik ik de gebeurtenis vóór afdrukken voor het lokaliseren van labels in gebruikersrapporten?
Kopieer de onderstaande code en stel deze in op de vereiste XRL ABEL's vóór de afdrukgebeurtenis
private void xrLabel_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
var xrLable = sender as XRLabel;
var text = xrLable.Text;
xrLable.Text = Uniconta.ClientTools.Util.UtilFunctions.LocalizePrompt(text);
}