AlexanderDymocloudtemple@mksat.netPhilThompsonphil@river-bank.demon.co.ukStefanAsserhällstefan.asserhall@comhem.seÖversättareGuide för programmerareHur &kugar; kan användas för att skapa rapporter i dina egna programDet finns flera olika sätt att använda &kugar;Skapa en tillfällig fil och fyll den med data, organiserad enligt KugarData dokumenttypdefinitionen. Anropa sedan skalkommandot kugar ( kugar) för att förhandsgranska och skriva ut rapporten. Se avsnittet Använda &kugar;-skalet för att förhandsgranska rapporter för en detaljerad beskrivning. Använd &kugar; direkt i programmets kod. Se avsnittet Använda &kugar;-klasser för rapporter för en detaljerad beskrivning. Skapa en &Qt; Designer insticksmodul, använd den för att bygga programmets grafiska gränssnitt i Designer, och länka den dynamiskt till programmet. Se Skapa en &Qt; Designer insticksmodul för en detaljerad beskrivning. De sista två sätten är användbara för &Qt;- och &kde;-utvecklare. Men &kugar; är konstruerad för att vara en rapportgenerator som är oberoende av programspråk och/eller integrerad utvecklingsmiljö. Den använder &XML;-formatet för att beskriva rapportmallar och datafiler. Så vilket program som helst kan skapa utdata på &kugar;s datafilformat som beskrivs i KugarData DTD, eller till och med på rapportmallformat (se KugarTemplate DTD). Ett &kugar;-skal (rapportvisare) kan användas för att förhandsgranska och skriva ut skapade rapporter. Använda &kugar;-skalet för att förhandsgranska rapporterSättet att skapa och förhandsgranska (skriva ut) en rapport är:Skapa en rapportmall med &kudesigner; Skapa en datafil med kolumnvärden för detaljband i rapporten. Använd KugarData DTD för att skapa riktiga datafiler. Kör &kugar;-skalet för att förhandsgranska och skriva ut en rapport. För att till exempel göra detta med språken C eller C++, anropa:system().
Glöm inte att inkludera stdlib.h. Använda &kugar;s klasser för rapporter&kugar;-biblioteket innefattar två grafiska komponenter som kan användas. Klassen KReportViewer är konstruerad för &kde;-utvecklare. Den stöder &kde;:s utskriftssystem och översättning under &UNIX; via i18n()-anrop. Klassen MReportViewer är konstruerad för &Qt;-utvecklare och erbjuder riktigt plattformsoberoende. Den kan inte bara användas på &UNIX;-plattformar, utan också på &Windows; och &MacOS;. För att bygga ett program som använder &kugar;-biblioteket, ska det länkas med det delade biblioteket libkugar.so, som tillhandahålls med &kugar;-distributioner på alla &UNIX;-plattformar. Deklarationsfiler är kugarqt.h och kugar.h för respektive &Qt;- och &kde;-program. För ett detaljerat exempel på hur &kugar;-klasser kan användas, titta i katalogen /shell i &kugar;s källkod. MReportViewer (och också KReportViewer) innehåller flera synliga metoder som kan användas. void renderReportVisar rapporten på skärmen.void printReportAnropar utskriftsdialogrutan för att skriva ut rapporten.void clearReportRensar rapporten på skärmen och frigör rapportdata. Anropa detta innan en ny rapport öppnas.bool setReportDataconst TQString &datafilnamnHämtar rapportdata från filen datafilnamn.bool setReportDataconst TQIODevice &data io-enhetHämtar rapportdata från filen data io-enhet. I/O-enheten kan vara vilken klass som helst härledd från klassen TQIODevice. För att till exempel direkt hämta poster från databasen, skapa en härledd klass från TQIODevice och definiera om alla nödvändiga funktioner. bool setReportTemplateconst TQString &mallfilnamnHämtar rapportmall från filen mallfilnamn.bool setReportTemplateconst TQIODevice &mall io-enhetHämtar rapportmall från filen mall io-enhet. I/O-enheten kan vara vilken klass som helst härledd från klassen TQIODevice. För att till exempel direkt hämta en rapportmall från nätverket eller en databas, skapa en härledd klass från TQIODevice och definiera om alla nödvändiga funktioner. Skapa en &Qt; Designer insticksmodulDet här är exempelkod på hur en insticksmodul till Designer skapas. Koden nedan skapar en insticksmodul för en &kde; KReportViewer grafisk komponent. Om en &Qt; grafisk komponent önskas, ersätt KReportViewer med MReportViewer och kugar.h med kugarqt.h i insticksprogramkoden. Användning av insticksmodulenDesigner-insticksmodulen gör att &Qt; Designer kan användas för att placera den grafiska komponenten KReportViewer i ett fönster, och förhandsgranska den på ett riktigt sätt. Program som använder den här insticksmodulen måste länkas dynamiskt med den. Motsvarande bibliotek heter libkugar.so. Grafiska komponenter eller dialogrutor som innehåller komponenten KReportViewer måste inkludera <kugar.h> i en implementering och innehålla deklarationen class KReportViewer. Det går att inkludera med hjälp av &Qt; Designers objektutforskare (källkodsfliken). För att bygga insticksmodulen kör: qmakekugar_plugin.promakeInsticksmodulkodInsticksmodulkoden består av tre filer:kugar_plugin.hkugar_plugin.cppkugar_plugin.proEn deklarationsfil för KugarWidgetPlugin, efterföljare till QWidgetPlugin.En källkodsfil för KugarWidgetPlugin, efterföljaren till QWidgetPlugin.En projektfil för verktyget Qmake.kugar_plugin.h#include <qwidgetplugin.h>
class KugarWidgetPlugin:public QWidgetPlugin
{
public:
KugarWidgetPlugin ();
QStringList keys () const;
TQWidget *create (const TQString & classname, TQWidget * parent =
0, const char *name = 0);
TQString group (const TQString &) const;
QIconSet iconSet (const TQString &) const;
TQString includeFile (const TQString &) const;
TQString toolTip (const TQString &) const;
TQString whatsThis (const TQString &) const;
bool isContainer (const TQString &) 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;
}
TQWidget* KugarWidgetPlugin::create (const TQString & key, TQWidget * parent,
const char *name)
{
if (key == "KReportViewer")
return new KReportViewer (parent, name);
return 0;
}
TQString KugarWidgetPlugin::group (const TQString & feature) const
{
if (feature == "KReportViewer")
return "Display";
return TQString::null;
}
QIconSet KugarWidgetPlugin::iconSet (const TQString &) const
{
return QIconSet (QPixmap (kugar_pixmap));
}
TQString KugarWidgetPlugin::includeFile (const TQString & feature) const
{
if (feature == "KReportViewer")
return "kugar.h";
return TQString::null;
}
TQString KugarWidgetPlugin::toolTip (const TQString & feature) const
{
if (feature == "KReportViewer")
return "Kugar report viewer widget";
return TQString::null;
}
TQString KugarWidgetPlugin::whatsThis (const TQString & feature) const
{
if (feature == "KReportViewer")
return "A widget to view xml reports";
return TQString::null;
}
bool KugarWidgetPlugin::isContainer (const TQString &) const
{
return FALSE;
}
TQ_EXPORT_PLUGIN( KugarWidgetPlugin )
kugar_plugin.proSOURCES += kugar_plugin.cpp
HEADERS += kugar_plugin.h
DESTDIR = $(TQTDIR)/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++