Tabelle anlegen

Dieses Beispiel zeigt die Erzeugung eines Tabellenobjektes innerhalb eines Berichtscontainers und legt darin eine neue Datenzeile und drei Spalten an.

 

Beachten Sie, dass Sie auch dann, wenn Sie nicht die APIs zur Ansteuerung des Berichtscontainers (LlDbAddTable() etc.) verwenden einen Berichtscontainer mit genau einer Tabelle anlegen müssen.

 

HLLJOB hJob = LlJobOpen(-1);


// Neues Projekt erzeugen

LlProjectOpen(hJob, LL_PROJECT_LIST, "c:\\simple.lst",

       LL_PRJOPEN_CD_CREATE_ALWAYS | LL_PRJOPEN_AM_READWRITE);

 

HLLDOMOBJ hProj;

LlDomGetProject(hJob, &hProj);


// Objektliste holen

HLLDOMOBJ hObjList;

LlDomGetObject(hProj, "Objects", &hObjList);

 

// Berichtscontainer erzeugen und Eigenschaften setzen

HLLDOMOBJ hObjReportContainer;

LlDomCreateSubobject(hObjList, 0, _T("ReportContainer"),&hObjReportContainer);

LlDomSetProperty(hObjReportContainer,_T("Position.Left"), _T("27000"));

LlDomSetProperty(hObjReportContainer,_T("Position.Top"),  _T("103500"));

LlDomSetProperty(hObjReportContainer,_T("Position.Width"), _T("153400"));

LlDomSetProperty(hObjReportContainer,_T("Position.Height"), _T("159500"));

 

// Unterobjektliste holen und Tabelle darin anlegen

HLLDOMOBJ hObjSubItems;

LlDomGetObject(hObjReportContainer, _T("SubItems"), & hObjSubItems);

HLLDOMOBJ hObjTable;

LlDomCreateSubobject(hObjSubItems, 0, _T("Table"), &hObjTable);

 

// Zeilenliste holen

HLLDOMOBJ hObjTableLines;

LlDomGetObject(hObjTable , _T("Lines"), &hObjTableLines);

 

// Datenzeilenliste holen

HLLDOMOBJ hObjTableData;

LlDomGetObject(hObjTableLines , _T("Data"), &hObjTableData);

 

// Neue Zeilendefinition anlegen

HLLDOMOBJ hObjTableLine;

LlDomCreateSubobject(hObjTableData, 0, _T("Line"), &hObjTableLine);

LlDomSetProperty(hObjTableLine,_T("Name"), _T("My new table line"));

 

// Kopfzeilenliste holen

HLLDOMOBJ hObjTableHeader;

LlDomGetObject(hObjTableLines , _T("Header"), &hObjTableHeader);

 

// Neue Zeilendefinition anlegen

HLLDOMOBJ hObjTableHeaderLine;

LlDomCreateSubobject(hObjTableHeader, 0, _T("Line"), &hObjTableHeaderLine);

 

// Feldliste für Kopfzeilen holen

HLLDOMOBJ hObjTableHeaderFields;

LlDomGetObject(hObjTableHeaderLine , _T("Fields"), &hObjTableHeaderFields);

 

// Feldliste für Datenzeilen holen

HLLDOMOBJ hObjTableDataFields;

LlDomGetObject(hObjTableLine , _T("Fields"), &hObjTableDataFields);

 

TCHAR aczVarName[1024];

int nItemCount = 3;

 

// Tabelle mit nItemCount Spalten anlegen

for (int i=0; i < nItemCount; i++)

{

       // Spalteninhalt für die Kopfzeile bestimmen. Beachten Sie

       // die Hochkommata – dadurch wird fester Text (z. B. "Field1") als

       // Inhalt übergeben

       _stprintf(aczVarName, "'Field%d'", i);

      

       // Neues Feld in Kopfzeile anlegen und Eigenschaften setzen

       HLLDOMOBJ hObjHeaderField;

       LlDomCreateSubobject(hObjTableHeaderFields, 0, _T("Text"),
                &hObjHeaderField);

       LlDomSetProperty(hObjHeaderField, _T("Contents"), aczVarName);

       LlDomSetProperty(hObjHeaderField,_T("Filling.Style"), _T("1"));

       LlDomSetProperty(hObjHeaderField,_T("Filling.Color"),
                _T( "RGB(204,204,255)"));

       LlDomSetProperty(hObjHeaderField,_T("Font.Bold"), _T("True"));

       LlDomSetProperty(hObjHeaderField,_T("Width"), _T("50000"));

 

       // Spalteninhalt für die Datenzeile bestimmen. Jetzt ohne

       // die Hochkommata – dadurch wird der Feldinhalt (z. B. Field1) als

       // Inhalt übergeben

       _stprintf(aczVarName, "Field%d", i);

 

       // Neues Feld in Datenzeile anlegen und Eigenschaften setzen

       HLLDOMOBJ hObjDataField;

       LlDomCreateSubobject(hObjTableDataFields, 0, _T("Text"),
                &hObjDataField);

 

       LlDomSetProperty(hObjDataField,_T("Contents"), aczVarName);

       LlDomSetProperty(hObjDataField,_T("Width"), _T("50000"));

}

 

// Projekt speichern

LlProjectSave(hJob, NULL);

LlProjectClose(hJob);

LlJobClose(hJob);