AlexanderDymocloudtemple@mksat.netPhilThompsonphil@river-bank.demon.co.ukHans-FriederHirschf.hirsch@t-online.deDeutsche ÜbersetzungDas Handbuch für ProgrammiererWie Sie &kugar; dazu verwenden können in eigenen Programmen Berichte zu erstellenEs gibt verschiedene Möglichkeiten &kugar; zu verwendenErstellen Sie eine temporäre Datei und speichern Sie dort Daten, die mit der KugarData Document Type Definition übereinstimmen. Dann geben Sie denKugar Shell Befehl ( kugar ). Damit können Sie sich den Bericht anzeigen lassen und ausdrucken. Ausführliche Informationen dazu finden Sie im AbschnittDie &kugar; Shell für Berichtsvorschau . Verwenden Sie &kugar; direkt im Code der Anwendung. Genauere Informationen dazu finden Sie unter &kugar;-Klassen für Berichte verwenden. Erstellen Sie ein &Qt;-Designer-Plugin. Verwenden Sie es, um die Anwendungsoberfläche (&GUI;) im Designer zu erstellen und verknüpfen Sie es dynamisch mit dem Programm. Einzelheiten dazu finden Sie im Abschnitt Ein &Qt;-Designer-Plugin erstellen. Die beiden letzten Wege sind für &Qt; und &kde; Entwickler annehmbar. Aber &kugar; wurde als Bericht-Generator entworfen, der unabhängig von einer Programmiersprache und/oder IDE funktioniert. Er verwendet das &XML;-Format zur Beschreibung von Berichtvorlagen- und Daten-Dateien. Deshalb kann jedes Programm eine Ausgabe im &kugar; Daten-Dateiformat, wie es in KugarData DTD beschrieben ist, oder auch im Berichtvorlagen -Dateiformat erzeugen (vergleichen Sie dazu KugarTemplate DTD). Eine &kugar; Shell (Bericht Vorschaufenster) kann dazu verwendet werden, einen erzeugten Bericht in einer Vorschau anzuzeigen und zu drucken. Die &kugar; Shell zur Vorschau von Berichten verwendenSie können Berichte und eine Berichtvorschau (Druck) erstellen, indem Sie:Eine Bericht-Vorlage mit &kudesigner; erstellen Erstellen Sie eine Daten-Datei mit Spaltenwerten für Detail-Gruppen des Berichtes. Verwenden sie dazuKugarData DTD um korrekte Daten-Dateien zu erzeugen. Starten Sie die &kugar; Shell für Bericht-Vorschau und -Druck. Um das zu tun (zum Beispiel in C oder C++ Sprachen), führen Sie aus:System().
Vergessen Sie dabei nichtstdlib.h einzuschließen ("include stdlib.h"). &kugar; Klassen für Berichte verwendenDie &kugar;-Bibliothek enthält zwei Bedienelemente, die Sie verwenden können. Die Klasse KReportViewer ist für &kde;-Entwickler gedacht. Sie unterstützt das &kde;-Drucksystem und die lokale &UNIX;-Sprachanpassung durch i18n() Aufrufe. Die Klasse MReportViewer ist für &Qt;-Entwickler entworfen und erlaubt echte Plattform-übergreifende Lösungen. Sie kann nicht nur auf &UNIX;-, sondern auch auf &Windows;- und &Mac;-Plattformen verwendet werden. Um ein Programm zu erstellen das die Kugar-Bibliothek verwendet, sollte es mit der libkugar.so "shared library", verknüpft werden, die in allen Kugar Distributionen auf allen &UNIX; Plattformen enthalten ist. "Include"-Dateien sindkugarqt.h und kugar.h sowohl für &Qt; als auch für &kde; Programme . Ein detailliertes Beispiel dafür, wie &kugar; Klassen verwendet werden können, finden Sie im /shell Verzeichnis in den &kugar; Quelltexten. Die Klassen MReportViewer (und auch KReportViewer) enthalten verschiedene "Public" Methoden, die Sieverwenden können. void renderReportZeigt den Bericht auf einem Bildschirm an.void printReportRuft den Druck-Dialog auf, um den Bericht zu drucken.void clearReportLöscht den Bericht vom Bildschirm und entbindet die Berichtdaten. Führen Sie diesen Befehl aus, bevor Sie einen neuen Bericht öffnen.bool setReportDataconst QString &Daten_Datei_NameFügt Bericht-Daten von der Daten_Datei_Name Datei ein.bool setReportDataconst QIODevice &data_io_deviceFügt Bericht-Daten aus der Datei data_io_device ein. IO-Device kann irgend ein Nachfolger der Klasse QIODevice sein. Ein Beispiel: Um Berichte direkt aus der Datenbank zu erzeugen, erstellen Sie einen QIODevice-Nachfolger und definieren die gesamte erforderliche Funktionalität erneut. bool setReportTemplateconst QString &template_file_nameErstellt die Bericht-Vorlage von der template_file_name Datei.bool setReportTemplateconst QIODevice &template_io_deviceErstellt eine Berichtvorlage aus der Datei template_io_device. IO-Device kann jeder Nachfolger der Klasse QIODevice sein. Ein Beispiel: um eine Berichtvorlage aus einem Speicher im Netzwerk oder einer Datenbank zu erhalten, erstellen Sie einen QIODevice-Nachfolger und definieren die Funktionalität neu. Ein &Qt; Designer Plugin erstellenDas ist der Beispiel Code für das Erstellen eines Designer Plugin. Der Code weiter unten erzeugt ein Plugin für ein &kde; KReportViewer Element. Wenn ein &Qt; Element gewünscht wird, ersetzen SieKReportViewer durch MReportViewer und kugar.h mit kugarqt.h im Plugin Code. Die Verwendung von PluginDesigner-Plugin ermöglicht die Verwendung von &Qt;-Designer um das KReportViewer Element auf einem Bildschirm anzuordnen und eine korrekte Vorschau davon anzuzeigen. Programme die dieses Plugin benutzen müssen dynamisch mit ihm verknüpft sein. Die dazu gehörende Bibliothek istlibkugar_plugin.so. Bedienelemente oder Dialoge die ein KReportViewer Bedienelement enthalten müssen <kugar.h> in der Implementierung enthalten und eine Vorwärtsdeklaration von class KReportViewer. Includes können mit &Qt; Designer's Objekt Explorer (Source tab) gemacht werden. Das Erstellen des Plugin starten: qmakekugar_plugin.promakePlugin CodeDer Plugin-Code besteht aus drei Dateien:kugar_plugin.hkugar_plugin.cppkugar_plugin.proEine Header-Datei für KugarWidgetPlugin, abgeleitet von QWidgetPlugin;Eine Quelltext-Datei für KugarWidgetPlugin, abgeleitet von QWidgetPlugin;Projektdatei für QMake.kugar_plugin.h#include <qwidgetplugin.h>
class KugarWidgetPlugin:public QWidgetPlugin
{
public:
KugarWidgetPlugin ();
QStringList keys () const;
QWidget *create (const QString & classname, QWidget * parent =
0, const char *name = 0);
QString group (const QString &) const;
QIconSet iconSet (const QString &) const;
QString includeFile (const QString &) const;
QString toolTip (const QString &) const;
QString whatsThis (const QString &) const;
bool isContainer (const QString &) const;
};
kugar_plugin.cpp#include "kugar_plugin.h"
#include <kugar.h>
static const char *kugar_pixmap[] = {
"22 22 127 2",
".d c #000000",
".c c #131313",
".b c #282828",
".a c #434241",
".e c #4e463a",
".# c #595551",
".G c #66553b",
"#F c #68635f",
"#R c #6b4f23",
"#q c #6e6862",
"#M c #6f5229",
".n c #6f6146",
".w c #735310",
".V c #755c2a",
".I c #775f34",
".0 c #77694a",
"#n c #7e6434",
".o c #806f50",
"#C c #835d2d",
".P c #837c75",
"#B c #85653a",
"#k c #85827e",
".x c #866d46",
".U c #877967",
".X c #888888",
".F c #89724d",
"#x c #8b6d2a",
".S c #8d7759",
".z c #8e733b",
"#L c #906e49",
"#Q c #947b56",
".r c #948058",
".J c #957844",
".4 c #987736",
".q c #998969",
".k c #999897",
".R c #9a8a75",
"#i c #9f8348",
"#I c #a37c4b",
".u c #a38d66",
".E c #a58558",
"#A c #a8834b",
".s c #a9967a",
".t c #aa9467",
".C c #ae9f8d",
"#6 c #afa49d",
"#5 c #afa9a4",
"#W c #b18e4d",
".K c #b1935a",
".B c #b39660",
"#V c #b49866",
"#a c #b49d6c",
"## c #b49d72",
".j c #b5b4b4",
"#0 c #b7a597",
".O c #b9b1a9",
".L c #bb9c61",
".M c #bb9e6b",
".A c #bca778",
"#j c #bea46b",
".T c #bfb37d",
".v c #c0b391",
".W c #c3a262",
".i c #c4c4c4",
"#m c #c5b7aa",
"#8 c #c69f80",
".D c #c6b79b",
"#3 c #c7a589",
".7 c #c7a76c",
"#u c #c7bbaf",
".6 c #c8ad74",
"#7 c #c8b7a9",
"#r c #c8beb5",
".m c #c8c8c8",
"#U c #cbad96",
"#f c #ccb681",
"#h c #cdac6c",
"#P c #cdb49f",
"#X c #cdb8a6",
"#H c #ceb7a4",
".y c #ceb892",
".N c #cecac3",
"#Z c #cfb16f",
"#O c #cfbdad",
".Z c #cfc7c0",
"#w c #d0bcab",
".5 c #d1ad6b",
"#s c #d1bfb1",
".h c #d5d5d5",
"#l c #d6cdc6",
"#D c #d8b36e",
".H c #dac592",
"#t c #dbb977",
".g c #dcdcdc",
".1 c #e0dcc1",
".f c #e0e0df",
"#1 c #e3c8b1",
"#S c #e4cdb9",
".3 c #e4d9a3",
"#4 c #e6c1a1",
"#2 c #e7c4a5",
"#K c #e9c179",
"#g c #e9c47e",
"#Y c #e9c8ac",
".2 c #eae6c0",
"#T c #ebcdb3",
".Q c #ebd4b9",
"#E c #ecca87",
"#z c #ecd799",
".l c #ececeb",
"#G c #efd7c2",
"#e c #efe3ab",
".8 c #efe8e3",
"#v c #f1dcca",
"#. c #f2e2d4",
".p c #f4f4f4",
"#y c #f5daa0",
"#J c #f6cf7f",
".9 c #f7ede4",
"#p c #f9d995",
".Y c #fcf9f6",
"#d c #fefcc5",
"#c c #fefdda",
"#b c #fefee1",
"#N c #ffd685",
"#o c #fff0a9",
"Qt c #ffffff",
"QtQtQtQtQtQt.#.a.a.a.b.b.b.c.c.d.d.dQtQtQtQt",
"QtQtQtQtQtQt.e.f.g.g.f.g.g.h.i.j.d.k.dQtQtQt",
"QtQtQtQtQtQt.a.gQtQtQtQtQtQt.l.f.c.m.k.dQtQt",
"QtQtQtQtQt.n.n.n.n.n.o.g.pQtQt.l.bQt.m.k.dQt",
"QtQtQt.q.q.r.q.s.t.r.q.u.u.g.pQt.a.fQt.m.k.d",
"QtQt.s.s.v.w.x.y.y.t.z.A.t.B.i.p.#.a.b.c.d.d",
"Qt.C.C.D.E.F.G.A.H.F.I.J.K.L.M.i.p.l.N.O.P.d",
"Qt.s.v.Q.q.R.S.T.A.R.U.V.L.W.W.X.g.Y.f.Z.k.d",
".0.s.t.Q.1.U.R.2.3.S.U.4.5.6.6.7.j.8.9#..O.d",
".G##.V#a#b.1#c#c#d#e#f#g#h#i#j.W#k#l.9#.#m.d",
".G.4.F#n#c#c#c#d#d#o#p#g.x.w#i.L#q#r#.#.#s.d",
".e.J.J.I.3#d.H#j.6#f#p#t#n.w.E.L#q#u#.#v#w.d",
".G.A#x.z#y#z#A#B#B#C#D#E.4.4.6#h#F#m#v#G#H.d",
".o.s.A#j#E#t#I#I#I#C#A#J#p#p#K#t#F#m#v#G#H.d",
"Qt##.A.6.7#I#I#A.E#L#M.W#N#J#K.a.U#O#G.Q#P.d",
"Qt#a.M.L.J#A#I.4.E#Q.x#R#D#J#g.#.C#S.Q#T#U.d",
"QtQt#V.K.z#Q.s.S.x.S#B#M#W#E.a.U#X.Q#T#Y#U.d",
"QtQtQt.M#i#B.r#Q#Q.r#Q.z#Z.a#q#0#1#T#Y#2#3.d",
"QtQtQtQtQt#j.L.L.W.5#t.a.#.U#0#1#T#Y#2#4#3.d",
"QtQtQtQtQtQt.d#F#q#q#q.P.C#O#S.Q#T#Y#2#4#3.d",
"QtQtQtQtQtQt.d#5#5#6#6#0#7#w#H#P#U#U#3#3#8.d",
"QtQtQtQtQtQt.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d.d"
};
KugarWidgetPlugin::KugarWidgetPlugin ()
{
}
QStringList KugarWidgetPlugin::keys () const
{
QStringList list;
list << "KReportViewer";
return list;
}
QWidget* KugarWidgetPlugin::create (const QString & key, QWidget * parent,
const char *name)
{
if (key == "KReportViewer")
return new KReportViewer (parent, name);
return 0;
}
QString KugarWidgetPlugin::group (const QString & feature) const
{
if (feature == "KReportViewer")
return "Display";
return QString::null;
}
QIconSet KugarWidgetPlugin::iconSet (const QString &) const
{
return QIconSet (QPixmap (kugar_pixmap));
}
QString KugarWidgetPlugin::includeFile (const QString & feature) const
{
if (feature == "KReportViewer")
return "kugar.h";
return QString::null;
}
QString KugarWidgetPlugin::toolTip (const QString & feature) const
{
if (feature == "KReportViewer")
return "Kugar report viewer widget";
return QString::null;
}
QString KugarWidgetPlugin::whatsThis (const QString & feature) const
{
if (feature == "KReportViewer")
return "A widget to view xml reports";
return QString::null;
}
bool KugarWidgetPlugin::isContainer (const QString &) const
{
return FALSE;
}
Q_EXPORT_PLUGIN( KugarWidgetPlugin )
kugar_plugin.proSOURCES += kugar_plugin.cpp
HEADERS += kugar_plugin.h
DESTDIR = $(QTDIR)/plugins/designer
TARGET = kugar_plugin
target.path=$$plugins.path
isEmpty(target.path):target.path=$$QT_PREFIX/plugins
PROJECTNAME = KugarPlugin
TEMPLATE = lib
CONFIG += qt warn_on release plugin
unix:LIBS += -lkugar
LANGUAGE = C++