Leider nicht.
Es wird nur eine Seite gedruckt egal wie viele Positionen ich habe.
package llsample;
import combit.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
/**
* <p>Title: List & Label Sample</p>
* <p>Description: List & Label Sample</p>
* <p>Copyright: Copyright (C) combit GmbH</p>
* <p>Company: combit GmbH</p>
* @author combit GmbH
* @version 28.0
*/
public class Print extends JFrame{
boolean packFrame = false;
//Create List & Label object
CmbtLL28 Ll;
int nLLJob_;
long hWnd_;
//Construct the application
public Print(){}
public boolean initializeLL()
{
//Create List & Label object
Ll = new CmbtLL28();
//Try to get the window handle for List & Label dialogs
if(hWnd_ == 0)
hWnd_ = combit.WinHelper.getWindowHandle(this);
//Ll.LlSetDebug(CmbtLL28.LL_DEBUG_CMBTLL);
Ll.LlSetDebug(0);
//Open List & Label job
if (nLLJob_ <= 0)
{
nLLJob_ = Ll.LlJobOpen(CmbtLL28.CMBTLANG_DEFAULT);
if (nLLJob_ == CmbtLL28.LL_ERR_BAD_JOBHANDLE)
{
JOptionPane.showMessageDialog(this, "Job can't be initialized!",
"List & Label Sample App",
JOptionPane.ERROR_MESSAGE);
return false;
}
else if (nLLJob_ == CmbtLL28.LL_ERR_NO_LANG_DLL)
{
JOptionPane.showMessageDialog(this, "Language file not found!\nEnsure that *.lng files can be found in your LuL DLL directory.",
"List & Label Sample App",
JOptionPane.ERROR_MESSAGE);
return false;
}
}
return true;
}
//=============================================================================
void JButtonLLPrintReport_actionPerformed(List<Rechnungsposition> rechnungspositionen)
//=============================================================================
{
StringBuffer bufferFilename = new StringBuffer("*.lst");
String sTemp = "", sTemp2 = "", sBoxText = "";
//Initialize the List & Label Job
if (initializeLL() == false)
{
return;
}
//Select project file via file select dialog
if (Ll.LlSelectFileDlgTitleEx(
nLLJob_,
hWnd_,
"",
CmbtLL28.LL_PROJECT_LIST,
bufferFilename,
0) < 0)
{
JOptionPane.showMessageDialog(
this,
"Error While Printing.",
"List & Label Sample App",
JOptionPane.ERROR_MESSAGE);
//Close the List & Label job
Ll.LlJobClose(nLLJob_);
nLLJob_ = -1;
return;
}
//Define variables for load check
Ll.LlDefineVariableStart(nLLJob_);
// Kopfzeile
Ll.LlDefineVariable(nLLJob_ , "Kopf.Anschrift.ymringName", "Herr Max Mustermann");
Ll.LlDefineVariable(nLLJob_ , "Kopf.Anschrift.ymringStrasse", "Musterstraße 1");
Ll.LlDefineVariable(nLLJob_ , "Kopf.Anschrift.ymringOrt", "1234 Mustertadt");
Ll.LlDefineVariable(nLLJob_ , "Kopf.Daten.ymringKdnr", "85855225");
Ll.LlDefineVariable(nLLJob_ , "Kopf.Daten.ymringLeistungsDatum", "22.02.2023");
Ll.LlDefineVariable(nLLJob_ , "Kopf.Daten.ymringRechnungsDatum", "22.02.2023");
Ll.LlDefineVariable(nLLJob_ , "Kopf.Daten.ymringRechnungsNr", "12345");
Ll.LlDefineVariable(nLLJob_ , "Kopf.Daten.ymringKurztext", "Wir bedanken uns für die gute Zusammenarbeit und stellen Ihnen verinbarungsgemäß folgende Leiferungen in Rechnung");
// Fußzeile
Ll.LlDefineVariable(nLLJob_ , "Fuß.Gesetz.ymringParagraph", "Nach § 19 Abs. 1 U StG wird keine Umsatzsteuer berechnet.");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Gesetz.ymringZahlung", "Zahlung innerhalb von 14 Tagen ab Rechnungseingang ohne Abzüge an die unten angegebene Bankverbindung.");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Firma.ymringName", "Muster GmbH");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Firma.ymringStrasse", "Am Musterweg 1");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Firma.ymringOrt", "85525 Musterstadt");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Bank.ymringBank", "Volksbank Musterstadt");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Bank.ymringIBAN", "IBAN: DE34344004333401");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Bank.ymringBIC", "BIC: GENODEG1FR1");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Bank.ymringKontoInh", "Kto. Inh.: Max Mustermann");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Kontakt.ymringTele", "Tel.: (+49) 1234/98 76 54");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Kontakt.ymringFax", "Fax.: (+49) 1234/98 76 54");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Kontakt.ymringEmail", "E-Mail: max.mustermann@maschinenringe.com");
Ll.LlDefineVariable(nLLJob_ , "Fuß.Kontakt.ymringWeb", "Web: www.mustermann.com");
//Define the used database fields
//Important: Normally you'd use here your database functions
Ll.LlDefineField(nLLJob_, "Tabelle.Positionen.pos", "1");
Ll.LlDefineField(nLLJob_, "Tabelle.Positionen.bez", "Dienstleistung 1");
Ll.LlDefineField(nLLJob_, "Tabelle.Positionen.menge", "8h");
Ll.LlDefineField(nLLJob_,"Tabelle.Positionen.ep", "120");
Ll.LlDefineField(nLLJob_, "Tabelle.Positionen.gp", "960");
//Definition of a numerical variable
//Important: Normally you'd use here your database functions
Ll.LlDefineFieldExt(
nLLJob_,
"NumericalField",
"1",
CmbtLL28.LL_NUMERIC,
0);
//Start printing
if (Ll.LlPrintWithBoxStart(
nLLJob_,
CmbtLL28.LL_PROJECT_LIST,
bufferFilename.toString(),
CmbtLL28.LL_PRINT_EXPORT,
CmbtLL28.LL_BOXTYPE_NORMALMETER,
hWnd_,
"Printing...") < 0)
{
JOptionPane.showMessageDialog(
this,
"Error While Printing.",
"List & Label Sample App",
JOptionPane.ERROR_MESSAGE);
//Close the List & Label job
Ll.LlJobClose(nLLJob_);
nLLJob_ = -1;
return;
}
//Predifined selections for print options dialog
Ll.LlPrintSetOption(
nLLJob_,
CmbtLL28.LL_PRNOPT_COPIES,
CmbtLL28.LL_COPIES_HIDE);
Ll.LlPrintSetOption(
nLLJob_,
CmbtLL28.LL_PRNOPT_STARTPAGE,
1);
if (Ll.LlPrintOptionsDialog(
nLLJob_,
hWnd_,
"Select printing options") < 0)
{
Ll.LlPrintEnd(nLLJob_, 0);
//Close the List & Label job
Ll.LlJobClose(nLLJob_);
nLLJob_ = -1;
return;
}
StringBuffer bufferPrinter = new StringBuffer();
StringBuffer bufferPort = new StringBuffer();
int nRecCount = 72, nErrorValue = 0, nRecno;
long nLastPage = 0;
Ll.LlPrintGetPrinterInfo(
nLLJob_,
bufferPrinter,
bufferPort);
nLastPage = Ll.LlPrintGetOption(nLLJob_, CmbtLL28.LL_OPTION_LASTPAGE);
nRecno = 1;
//Do printing loop only when there is any data to be printed and no error has occurred
while (nRecno <= nRecCount &&
(Ll.LlPrintGetCurrentPage(nLLJob_) <= nLastPage) &&
(nErrorValue == 0 || nErrorValue == CmbtLL28.LL_WRN_REPEAT_DATA))
{
for (int i = 1; i < 10; i++)
{
if (i != 2)
{
sTemp = "FixedVariable" + i;
sTemp2 = "FixedVariable" + i + "record " + nRecno;
Ll.LlDefineVariable(nLLJob_, sTemp, sTemp2);
}
}
nErrorValue = Ll.LlPrint(nLLJob_);
while (nRecno <= nRecCount && (nErrorValue == 0) &&
(Ll.LlPrintGetCurrentPage(nLLJob_) <= nLastPage))
{
for (int i = 1; i < 10; i++)
{
sTemp = "Field" + i;
if (Ll.LlPrintIsFieldUsed(nLLJob_, sTemp) < 0)
{
if (i == 1) {
//Simulate a "groupable" field contents to demonstrate grouping specified at runtime in the designer
sTemp2 = "group" + nRecno / 4;
}
else {
sTemp2 = "contents of Field" + i + " record " + nRecno;
}
Ll.LlDefineField(nLLJob_, sTemp, sTemp2);
}
}
// print data while loop
int pos = 1;
for (Rechnungsposition position : rechnungspositionen)
{
Ll.LlDefineField(nLLJob_, "Tabelle.Positionen.pos", Integer.toString(pos));
Ll.LlDefineField(nLLJob_, "Tabelle.Positionen.bez", position.getArtikelname());
Ll.LlDefineFieldExt(nLLJob_,"Tabelle.Positionen.menge",position.getMenge(),CmbtLL28.LL_NUMERIC,0);
Ll.LlDefineFieldExt(nLLJob_,"Tabelle.Positionen.ep",position.getEinzelpreis(),CmbtLL28.LL_NUMERIC,0);
Ll.LlDefineFieldExt(nLLJob_,"Tabelle.Positionen.gp",position.getGesamtpreis(),CmbtLL28.LL_NUMERIC,0);
Ll.LlPrintFields(nLLJob_);
pos++;
}
Ll.LlPrintFieldsEnd(nLLJob_);
if (Ll.LlPrintIsFieldUsed(nLLJob_, "NumericalField") < 0)
{
sTemp2 = String.valueOf(nRecno);
Ll.LlDefineFieldExt(nLLJob_, "NumericalField", sTemp2,
CmbtLL28.LL_NUMERIC, 0);
}
//Set percentage
sBoxText = "printing on " + bufferPrinter.toString() + " " + bufferPort.toString();
nErrorValue = Ll.LlPrintSetBoxText(nLLJob_,
sBoxText,
(100 * nRecno / nRecCount));
if (nErrorValue == CmbtLL28.LL_ERR_USER_ABORTED)
{
Ll.LlPrintEnd(nLLJob_, 0);
//Close the List & Label job
Ll.LlJobClose(nLLJob_);
nLLJob_ = -1;
return;
}
//Now print the table line
nErrorValue = Ll.LlPrintFields(nLLJob_);
if (nErrorValue == 0) //Everything fine, record could have been printed...
{
//...but probably the user defined a filter condition!
//So before updating time dependent variables we have to check if the record really has been printed
if (Ll.LlPrintDidMatchFilter(nLLJob_) < 0)
{
//Update the time dependent variable 'FixedVariable2'
//coming after printing the list(s)
sTemp2 = "FixedVariable2, record " + nRecno;
Ll.LlDefineVariable(nLLJob_, "FixedVariable2", sTemp2);
}
//Now (virtually) goto next record
nRecno++;
}
}
}
//All records have been printed, now flush the table
//If footer doesn't fit to this page try again for the next page
nErrorValue = Ll.LlPrintFieldsEnd(nLLJob_);
while (nErrorValue == CmbtLL28.LL_WRN_REPEAT_DATA)
{
//Update the definitions of your page dependent variables here...
for (int i = 1; i < 10; i++)
{
if (i != 2)
{
//Special: 'FixedVariable2' shall be a time dependent fixed variable in this example!
sTemp = "FixedVariable" + i;
sTemp2 = "FixedVariable" + i + " record " + nRecno;
Ll.LlDefineVariable(nLLJob_, sTemp, sTemp2);
}
}
//... and then try again
nErrorValue = Ll.LlPrintFieldsEnd(nLLJob_);
}
//End print job
Ll.LlPrintEnd(nLLJob_, 0);
//Close the List & Label job
Ll.LlJobClose(nLLJob_);
nLLJob_ = -1;
}
//Main method
public static void main(String[] args) {
Print frame = new Print();
List<Rechnungsposition> rechnungspositionen = new ArrayList<>();
rechnungspositionen.add(new Rechnungsposition("Laptop", 1, 1500));
rechnungspositionen.add(new Rechnungsposition("Headphones", 2, 100));
rechnungspositionen.add(new Rechnungsposition("Mouse", 3, 25));
rechnungspositionen.add(new Rechnungsposition("Keyboard", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Monitor", 2, 400));
rechnungspositionen.add(new Rechnungsposition("Speaker", 1, 300));
rechnungspositionen.add(new Rechnungsposition("Printer", 1, 150));
rechnungspositionen.add(new Rechnungsposition("Scanner", 1, 100));
rechnungspositionen.add(new Rechnungsposition("External Hard Drive", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Webcam", 1, 50));
rechnungspositionen.add(new Rechnungsposition("Tablet", 2, 300));
rechnungspositionen.add(new Rechnungsposition("Smartphone", 3, 600));
rechnungspositionen.add(new Rechnungsposition("Laptop", 1, 1500));
rechnungspositionen.add(new Rechnungsposition("Headphones", 2, 100));
rechnungspositionen.add(new Rechnungsposition("Mouse", 3, 25));
rechnungspositionen.add(new Rechnungsposition("Keyboard", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Monitor", 2, 400));
rechnungspositionen.add(new Rechnungsposition("Speaker", 1, 300));
rechnungspositionen.add(new Rechnungsposition("Printer", 1, 150));
rechnungspositionen.add(new Rechnungsposition("Scanner", 1, 100));
rechnungspositionen.add(new Rechnungsposition("External Hard Drive", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Webcam", 1, 50));
rechnungspositionen.add(new Rechnungsposition("Tablet", 2, 300));
rechnungspositionen.add(new Rechnungsposition("Smartphone", 3, 600));
rechnungspositionen.add(new Rechnungsposition("Laptop", 1, 1500));
rechnungspositionen.add(new Rechnungsposition("Headphones", 2, 100));
rechnungspositionen.add(new Rechnungsposition("Mouse", 3, 25));
rechnungspositionen.add(new Rechnungsposition("Keyboard", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Monitor", 2, 400));
rechnungspositionen.add(new Rechnungsposition("Speaker", 1, 300));
rechnungspositionen.add(new Rechnungsposition("Printer", 1, 150));
rechnungspositionen.add(new Rechnungsposition("Scanner", 1, 100));
rechnungspositionen.add(new Rechnungsposition("External Hard Drive", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Webcam", 1, 50));
rechnungspositionen.add(new Rechnungsposition("Tablet", 2, 300));
rechnungspositionen.add(new Rechnungsposition("Smartphone", 3, 600));
rechnungspositionen.add(new Rechnungsposition("Laptop", 1, 1500));
rechnungspositionen.add(new Rechnungsposition("Headphones", 2, 100));
rechnungspositionen.add(new Rechnungsposition("Mouse", 3, 25));
rechnungspositionen.add(new Rechnungsposition("Keyboard", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Monitor", 2, 400));
rechnungspositionen.add(new Rechnungsposition("Speaker", 1, 300));
rechnungspositionen.add(new Rechnungsposition("Printer", 1, 150));
rechnungspositionen.add(new Rechnungsposition("Scanner", 1, 100));
rechnungspositionen.add(new Rechnungsposition("External Hard Drive", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Webcam", 1, 50));
rechnungspositionen.add(new Rechnungsposition("Tablet", 2, 300));
rechnungspositionen.add(new Rechnungsposition("Smartphone", 3, 600));
rechnungspositionen.add(new Rechnungsposition("Laptop", 1, 1500));
rechnungspositionen.add(new Rechnungsposition("Headphones", 2, 100));
rechnungspositionen.add(new Rechnungsposition("Mouse", 3, 25));
rechnungspositionen.add(new Rechnungsposition("Keyboard", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Monitor", 2, 400));
rechnungspositionen.add(new Rechnungsposition("Speaker", 1, 300));
rechnungspositionen.add(new Rechnungsposition("Printer", 1, 150));
rechnungspositionen.add(new Rechnungsposition("Scanner", 1, 100));
rechnungspositionen.add(new Rechnungsposition("External Hard Drive", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Webcam", 1, 50));
rechnungspositionen.add(new Rechnungsposition("Tablet", 2, 300));
rechnungspositionen.add(new Rechnungsposition("Smartphone", 3, 600));
rechnungspositionen.add(new Rechnungsposition("Laptop", 1, 1500));
rechnungspositionen.add(new Rechnungsposition("Headphones", 2, 100));
rechnungspositionen.add(new Rechnungsposition("Mouse", 3, 25));
rechnungspositionen.add(new Rechnungsposition("Keyboard", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Monitor", 2, 400));
rechnungspositionen.add(new Rechnungsposition("Speaker", 1, 300));
rechnungspositionen.add(new Rechnungsposition("Printer", 1, 150));
rechnungspositionen.add(new Rechnungsposition("Scanner", 1, 100));
rechnungspositionen.add(new Rechnungsposition("External Hard Drive", 1, 200));
rechnungspositionen.add(new Rechnungsposition("Webcam", 1, 50));
rechnungspositionen.add(new Rechnungsposition("Tablet", 2, 300));
rechnungspositionen.add(new Rechnungsposition("Smartphone", 3, 600));
frame.JButtonLLPrintReport_actionPerformed(rechnungspositionen);
}
}