AlexanderDymocloudtemple@mksat.netPhilThompsonphil@river-bank.demon.co.uk
&traducteurGerardDelafond;
Guide du programmeurComment utiliser &kugar; pour la génération de rapports dans vos propres programmesIl y a plusieurs manières d'utiliser &kugar;Créez un fichier temporaire et remplissez-le de données organisées selon le document de définition de type de KugarData. Puis, appelez la commande de shell kugar ( kugar ) pour visualiser et afficher le rapport. Voyez Utilisation du shell de &kugar; pour visualiser les rapports pour une description détaillée. Utilisez &kugar; directement dans le code de l'application. Voyez Utilisation des classes de &kugar; pour les rapports pour une description détaillée. Créez un module externe &TQt; designer, utilisez-le pour construire l'interface graphique de l'application dans le concepteur et liez-le au programme dynamiquement. Consultez Création d'un module externe &TQt; designer pour une description détaillée. Les deux dernières manières sont acceptables pour les développeurs &TQt; et &tde;, mais &kugar; est conçu pour être un générateur de rapports indépendant d'un langage de programmation et / ou d'un IDE. Il utilise le format &XML; pour décrire les modèles de rapports et les fichiers de données. Ainsi, n'importe quel programme peut produire des données dans le format de fichier de &kugar; comme décrit dans la DTD KugarData ou même un format de fichier de modèle de rapports (voyez la DTDKugarTemplate). Un shell &kugar; (visualisateur de rapports) peut être utilisé pour visualiser et imprimer les rapports générés. Utilisation de &kugar; pour visualiser les rapportsLa manière de procéder pour créer et afficher (imprimer) un rapport est :Créez un fichier de modèle de rapport avec &kudesigner; Créez un fichier de données avec des valeurs en colonnes pour les bandes détaillées du rapport. Utilisez la DTD KugarData pour produire des fichiers corrects. Lancez le shell &kugar; pour prévisualiser et imprimer le rapport. Par exemple, pour ce faire, pour les langages C ou C++, appelez :system().
N'oubliez pas d'inclure stdlib.h. Utilisation des classes de &kugar; pour la génération de rapportsLa bibliothèque &kugar; inclut deux composants à utiliser. La classe KReportViewer est conçue pour les développeurs &kde;. Elle gère le système d'impression &kde; et la localisation &UNIX; via les appels i18n(). La classe MReportViewer est conçue pour les développeurs &TQt; et permet vraiment de faire du multiplate-forme. Elle peut être utilisée non seulement sur les plates-formes &UNIX;, mais aussi sur &Windows; et &MacOS;. Dans le but de compiler un programme qui utilise la bibliothèque &kugar;, il devrait être lié avec la bibliothèque partagée libkugar.so, qui est fournie avec la distribution de &kugar; sur toutes les plates-formes &UNIX;. Les fichiers inclus sont kugarqt.h et kugar.h pour les programmes &TQt; et &tde; respectivement. Pour un exemple détaillé sur le manière dont les classes &kugar; peuvent être utilisées, voyez le dossier /shell dans les sources de &kugar;. MReportViewer (et KReportViewer) contiennent plusieurs méthodes publiques qui peuvent être utilisées. void renderReportAffiche le rapport sur un écran.void printReportAppelle le dialogue d'impression pour imprimer le rapport.void clearReportEfface le rapport de l'écran et libère les données du rapport. Appelez cela avant d'ouvrir le nouveau rapport.bool setReportDataconst TQString &nom_du_fichier_de_donnéesDétermine les données du rapport depuis le fichier nom_du_fichier_de_données.bool setReportDataconst TQIODevice &data_io_deviceDétermine les données du rapport depuis le fichier data_io_device. Le périphérique d'entrées-sorties peut être un successeur d'une classe TQIODevice. Par exemple, pour chercher des enregistrements directement depuis la base de données, créez un successeur TQIODevice et redéfinissez toutes les fonctionnalités nécessaires. bool setReportTemplateconst TQString &nom_du_fichier_modèleDétermine le modèle de rapport depuis le fichier nom_du_fichier_modèle.bool setReportTemplateconst TQIODevice &template_io_deviceDétermine le modèle de rapport depuis le fichier template_io_device. Le périphérique d'entrées-sorties peut être un successeur d'une classe TQIODevice. Par exemple, pour obtenir un modèle de rapport pour le stockage réseau ou les bases de données, créez un successeur TQIODevice et redéfinissez toutes les fonctionnalités nécessaires. Création d'un module externe &TQt;Voici un exemple de code sur la manière dont est conçu un module externe. Le code ci-dessous crée un module externe pour un composant &kde; KReportViewer. Si un composant &TQt; est désiré, remplacez KReportViewer par MReportViewer et kugar.h par kugarqt.h dans le code du module externe. Utilisation du module externeLe module externe de dessin permettra l'utilisation de &TQt; Designer pour placer le composant KReportViewer dans une fenêtre et l'afficher correctement. Les programmes qui font usage de ce module externe doivent y être liés dynamiquement. La bibliothèque correspondante est nommée libkugar_plugin.so. Les composants ou dialogues qui incluent KReportViewer doivent inclure <kugar.h> dans l'implémentation et avoir une déclaration préalable de class KReportViewer. Les includes peuvent être faits avec l'Explorateur d'objets de &TQt; Designer (onglet source). Pour compiler le module externe, lancez : qmakekugar_plugin.promakeCode du module externeLe code du module externe consite en trois fichiers :kugar_plugin.hkugar_plugin.cppkugar_plugin.proUn fichier d'en-tête pour KugarWidgetPlugin, le successeur de QWidgetPlugin ;Un fichier source pour KugarWidgetPlugin, le successeur de QWidgetPlugin ;Un fichier de projet pour l'utilitaire 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++