Création d'Etats sous Delphi 4

Création d'Etats sous Delphi 4 - Programmation

Marsh Posté le 22-08-2001 à 11:36:54    

Voilà, je développe un soft de gestion qui s'appuie sur une BD et je vousdrais pouvoir imprimer (normal) une fiche client de manière qu'au début de la page, on trouve les infos relatives au client (nom, prénom, etc...) puis, la liste des devis qu'il a passé (donc, une ligne qui va se dupliquer pour chaque devis) et ensuite, la liste des événements associés au client (donc, pareil, une ligne qui va se développer pour chaque évenement trouvé dans la bd appartenant au client).
 
voilà, les 2 premiers trucs, j'y arrive, mais je n'arrive pas à afficher la liste des événements. En effet, si je mets un 2ème composant du type BandDetail ou SubBandDetail, les lignes des 2 listes vous s'entrelémer, c-à-d 1 ligne Devis pui 1 ligne événement puis 1 ligne devis, etc...
 
y'en a qui maîtrisent les composants QuickReport sous Delphi 4??? pas moi :cry:

Reply

Marsh Posté le 22-08-2001 à 11:36:54   

Reply

Marsh Posté le 22-08-2001 à 12:19:26    

au fait, si y'en a qui connaissent sous Delphi 3, ça me va aussi :)
 
mais, please, aider moi, car là, ça coince! Je m'en sors pas :(

Reply

Marsh Posté le 22-08-2001 à 22:41:23    

alotrs, y'a personne? vraiment? où sont les pros de Delphi?

Reply

Marsh Posté le 22-08-2001 à 22:47:37    

Reply

Marsh Posté le 22-08-2001 à 22:51:01    

plus serieusement (et desole, ca ne va pas t'aider) je n'ai jamais utilisé quickreport pour faire des etats... tout en HTML !


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 22-08-2001 à 23:06:50    

JWhy a écrit a écrit :

plus serieusement (et desole, ca ne va pas t'aider) je n'ai jamais utilisé quickreport pour faire des etats... tout en HTML !  




 
en delphi, tu gères l'impression de BD par le html? ben expliques, ça peu m'aider :hello:

Reply

Marsh Posté le 22-08-2001 à 23:32:39    

j'ai une fonction XML() qui prend un ADOQuery en parametre et qui te construit un XML avec les donnees recuperees de la requete (en fonction des type de Fields de ta Query)
ex:  

Code :
  1. qryUser.Connextion := dbQuiVaBien;
  2. qryUser.SQL.Text := 'select USR_ID ID, USR_NAME NAME, USR_DESCRIPTION DESCRIPTION from USER';
  3. qryUser.Open;
  4. try
  5.   result := '<USERS>' + XML(qryUser, 'USER') + '</USERS>';
  6. finally
  7.   qryUser.Close;
  8. end;


 
le result est qqchose comme:

Code :
  1. <USERS>
  2.   <USER>
  3.     <ID>USR001</ID>
  4.     <NAME>JWhy</NAME>
  5.     <DESCRIPTION>Vient juste d'avoir Delphi6 :bounce:</DESCRIPTION>
  6.   </USER>
  7.   <USER>
  8.     <ID>USR002</ID>
  9.     <NAME>Rufo</NAME>
  10.     <DESCRIPTION>Fait des etats avec QuickReports.</DESCRIPTION>
  11.   </USER>
  12. </USERS>


 
Apres, j'applique le XSL qui va bien et ca me rend un fichier HTML:

Code :
  1. Name        Description
  2. -------------------------------------------------
  3. JWhy        Vient juste d'avoir Delphi6 :bounce:
  4. Rufo        Fait des etats avec QuickReports.


 
ensuite, j'affiche la page HTML dans un TWebBrowser et je l'imprime ( WebBrowser.ControlInterface.ExecWB(OLECMDID_PRINT,
OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut) )


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 23-08-2001 à 09:36:51    

remarque, plutôt que de passer par le XML, le html de base suffit, non?

Reply

Marsh Posté le 23-08-2001 à 16:18:04    

oui... ca marche aussi! ;)
ici, l'avantage c'est que ton programme delphi ne va manipuler que les donnees, l'affichage/la mise en page sera faite par le XSL donc une fois que ton prog. marche, si tu veux changer l'ecran , tu n'as qu'a modifier le XSL et tu ne modifies pas ton prog.
 
avec le HTML, tu auras peut etre des bouts de codes a modifier, si par ex. il te faut une ligne sur 2 en gris ou des trucs de ce genre !


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 23-08-2001 à 23:14:19    

JWhy a écrit a écrit :

oui... ca marche aussi! ;)
ici, l'avantage c'est que ton programme delphi ne va manipuler que les donnees, l'affichage/la mise en page sera faite par le XSL donc une fois que ton prog. marche, si tu veux changer l'ecran , tu n'as qu'a modifier le XSL et tu ne modifies pas ton prog.
 
avec le HTML, tu auras peut etre des bouts de codes a modifier, si par ex. il te faut une ligne sur 2 en gris ou des trucs de ce genre !  




 
oui, je vois tout à fait l'avantage, mais l'inconvéniant, c'est que je connais pas XML...:( e suis aps contre d'apprendre un nouveau langage, mais bin, là, j'ai que 15 jours pour programmer tout le module d'impression (mon soft contient environ 70 fenêtres et faut une fct d'impression pour au moins 1/3 des fiches!) alors vu que je maîtrise le html...
 
sinon, si y'en a qui maîtrisent les quickreport, je suis toujours preneur...:hello: Je vousdrais arriver un jour à comprendre comment ça marche! j'ai jamais pu trouver de doc la dessus...

Reply

Marsh Posté le 23-08-2001 à 23:14:19   

Reply

Marsh Posté le 24-08-2001 à 23:27:30    

bon, j'ai programmé un premier truc en html, mais sous IE, je sais pas comment on fait pour imprimer les couleurs de fonds des tableaux...(<TABLE BGCOLOR="..."> )
 
sinon, y'au qq'un qui sait utiliser le composant THTML sous delphi 4, celui dans l'onglet Internet... merci :jap:

Reply

Marsh Posté le 25-08-2001 à 01:09:44    

pour le composant THTML, je ne sais pas, je crois qu'il y a une demo dans ton repertoire delphi mais il n'est pas super efficace (il ne t'affiche pas le javascript, pas de HTML evolue, etc...)
 
tu peux essayer d'utiliser le TWebBrowser (installé en standard sur Delphi5+, il y a une petite manip. a faire pour Delphi4). Ca utilise IE donc il faut qu'il soit installé sur la machine qui lance ton programme. c'est un inconvenient, mais d'un autre cote, si ton report s'affiche/s'imprime bien avec IE, tu sauras qu'il "rendra" bien via ton application !
 
tu trouveras tout l'aide necessaire sur le site de H. Fournier ( http://members.home.net/hfournier/ ) dans la section FAQs / WebBrowser. tu peux aussi jeter un oeil au Yahoo!Groups: http://groups.yahoo.com/group/delphi-webbrowser
 
finalement, tu peux aussi poser tes questions ici ;)

 

[edtdd]--Message édité par JWhy--[/edtdd]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 25-08-2001 à 16:18:45    

merci :)
 
t'as une idée du pourquoi les couleur de fond de mes tableaux ne sont pas imprimées ???

Reply

Marsh Posté le 25-08-2001 à 16:25:32    

sur le premier lien, j'ai pas trouvé où downloader le composant  
:(  
je suis pourtant allé dans le rubrique "download", mais rien ???
 
sinon, pour lancer IE à partir de delphi, j'utilise un composant du BUPack (200 composants!:)) le TBUSurfTo...

Reply

Marsh Posté le 25-08-2001 à 16:27:45    

"l'inconvénient" de ce composant (je sais pas si c'est vraiment un inconvénient), c'est que ça m'affiche mon doc html dans une vrai fenêtre IE 5 (ça marche pour ie 3 et 4 je crois), mais j'ai aps de composant qui m'affiche un doc html surune fiche delphi...

Reply

Marsh Posté le 25-08-2001 à 18:04:41    

pour les couleurs, je ne sais pas... elles s'impriment correctement si tu lances IE a part avec ta page dedans et que tu l'imprimes ? c'est peut-etre que IE ne suppporte pas ca mais ca m'etonnerait ! il y a peut etre un param. a configurer dans la boite "configuration de l'impression" sous IE !?
 
 
pour le composant, il n'y a rien a downloader , si tu as IE  
installé, tu n'as (presque) rien a faire :
Tu lances Delphi, tu vas dans le menu "Composant" / " Importer un controle ActiveX", tu choisis "Microsoft Internet Controls" et tu l'ajoutes a un nouveau package ou a un package existant.
Delphi va te generer un fichier ShDocVw_TLB et t'ajouter le composant WebBrowser dans ta palette a l'onglet "ActiveX"
 
Apres, tu as juste a poser le composant TWebBrowser sur ta form et voila !
 
tu n'a plus qu'a genere ta page HTML et l'afficher en faisant:

Code :
  1. var
  2.   vWebAddr, vPostData, vFlags, vFrame, vHeaders: OleVariant;
  3. begin
  4.   vWebAddr := 'C:\report_a_rufo.html';
  5.   wbWebBrowser.Navigate2(vWebAddr, vFlags, vFrame, vPostData, vHeaders);
  6. end;


 
pour imprimer la page html affichée c'est :

Code :
  1. var
  2.   vaIn, vaOut: OleVariant;
  3. begin 
  4.   wbWebBrowser.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
  5. end;


 
tout est expliqué ici:
  http://members.home.net/hfournier/webbrowser.htm


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 26-08-2001 à 22:58:01    

ben écoutes, grand merci pour ces explications très claires :) Je teste ça demain (ce soir, il est un peu tard)...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed