IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

[Seattle] Formater un texte pour l'envoyer par email ou l'imprimer [Android]


Sujet :

Composants FMX Delphi

  1. #1
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [Seattle] Formater un texte pour l'envoyer par email ou l'imprimer
    Bonjour (Déjà posté cette question mais pas encore résolue complètement)

    Depuis quelque temps je cherche comment générer un rapport ,facture ou résultat d'un query dans un fichier pour l'envoyer par email ou sur un imprimante a partir d'une application pour
    IPhone ou appareil android.

    J'ai essayé de formater un mémo avec le calcul des espaces mais a l'ecran ca va mais quand je l'envoie par email ca sort vraiment tout croche.


    Comment vous faite pour créer un email(texte) ou un mémo qui ne ce déforme pas a l'envoie.(composant payant ou non pas de problème).



    Merci de votre aide.

    Mario

  2. #2
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Points : 272
    Points
    272
    Par défaut
    Bonjour,

    le contenu de votre mail n'est pas au format HTML ? Si tel est le problème, vous pouvez essayer gratuitement le TMS FMX Pack et notamment son TTMSFMXRichEditor qui est compatible iOS et Androïd... et qui fonctionne bien : je dispose de la version payante et je l'utilise régulièrement sur Win et OS X.

    Pour envoyer un mail, vous avez cette discussion qui fournit de nombreux liens : https://forums.embarcadero.com/messa...ssageID=690533

    Cordialement.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    ma première réaction a été FastReport jusqu'à ce que je lise Androïd, ce qui hélas bloque (à moins qu'il n'y ait des nouveautés de ce coté)
    reste donc les composants TMSFMX et ses exports de grille . (A tenter, je n'ai jamais essayé encore mais j'y songe donc tout retour en ce sens sera le bienvenu )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Alors personnellement, j'aurais pris un TWebBrowser et sa capacité à exécuter du Javascript, le dit Javascript pouvant générer du PDF
    C'est tordu, mais sans doute pas si compliqué :

    Partie Delphi (2 lignes ! trouvez les ! )
    http://blogs.embarcadero.com/nikolay...nthedelphixe6/
    Partie Javascript
    https://parall.ax/products/jspdf

    Ca a aussi l'avantage d'etre gratuit


    Edit :
    Pour envoyer l'email :
    https://medium.com/@mariusc23/send-a...782#.hk2s6sntj

    La partie pour joindre un fichier à l'email (c'est la référence de l'article en lien pour envoyer l'email) :
    https://medium.com/@mariusc23/send-a...782#.hk2s6sntj

    Yapluka !
    Bidouilleuse Delphi

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    aujourd'hui j'ai donc essayé l'idée de l'export d'une FMXTMSGrid vers un fichier RTF, en fait j'ai utilisé l'exemple proposé par TMS (C:\Users\Public\Documents\tmssoftware\TMS Pack for FireMonkey Demos\Grid Feature Demos\RTFIO). Le résultat est mitigé du moins chez moi (l'affichage avec OpenOffice est désastreux, en p.j. le résultat de l'export)
    J'en ai profité pour faire le test export vers Tableur qui lui fonctionne très bien sous windows (mais pas Androïd)
    Fichiers attachés Fichiers attachés
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2015
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 252
    Points : 272
    Points
    272
    Par défaut
    Bonjour,

    je persiste à penser que la meilleure solution est d'utiliser TMS (les grids pour tes tableaux, RichEditor pour tes rapports) et de générer du pdf. Je n'ai pas le temps de regarder actuellement et de plus, je dispose d'une ancienne version de Delphi (XE7). Dans les exemples cités par SergioMaster, il y a aussi TMSQuickPDFRenderLib qui utilise la bibliothèque http://www.debenu.com/products/devel...-library-lite/. Le seul problème est qu'elle ne fonctionne que sous iOS au niveau des mobiles... mais il y a également des solutions gratuites sous androïd (Google >>PDFRenderLib androïd).

    Cordialement.

  7. #7
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Le code de jspdf se trouve précisemment ici :
    https://raw.githubusercontent.com/Mr...jspdf.debug.js

    Ça n'a pas l'air trop complexe à adapter en Delphi en fait (mais long à faire !!! )

    Sinon, il y a toujours la possibilité d'envoyer l'email au format HTML

    Et maintenant que j'y pense de créer le rapport en code html et de lui donner l'extension .xls (ça vous fait un joli fichier excel !)
    J'avais déjà fait ça pour mon boulot et ça marche plutôt bien. Un peu de doc sur le sujet :
    http://www.glump.net/howto/web/serve...eb-application

    Et si on est plutôt XML, on peut créer un document .ods :
    http://www.codeproject.com/Articles/...OpenDocument-S

    Pour présenter une facture, ça me parait tout à propos.
    Bidouilleuse Delphi

  8. #8
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Je viens de trouver ça, c'est tout neuf :
    https://github.com/Steema/BI

    • A simple class to implement in-memory database complex structures to provide:
    • Ultra fast speed (every column or field is a simple array)
    • Import data from files, databases, objects (ORM) in one or few lines of code
    • Automatic relationships between columns (master-detail), indexes and foreign keys
    • SQL-like high-speed queries and summaries by code or "select" scripts
    • Transparent remote web server fast data access (compressed binary streams)
    • Automatic visualizations of complex structures (charts, grids and more)
    • Data export (csv,pdf,html,xml,excel,json), comparisons and manipulations
    • Machine-learning and statistics (native data pass to R Language and Python Scikit)
    • Big-data ready, billions of cells supported
    • Multi-platform (Windows, Mac OSX, Android, iOS, Linux and more)


    Supported development environments:
    • Embarcadero Studio XE4 and up (Delphi and C++)
    • Visual Studio (.NET)
    • Lazarus / FreePascal
    Bidouilleuse Delphi

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 021
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 021
    Points : 40 935
    Points
    40 935
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Citation Envoyé par LadyWasky
    Je viens de trouver ça, c'est tout neuf : https://github.com/Steema/BI
    merci pour le partage
    si tôt lu (hier), si tôt essayé ! l'installation est facile (il faut juste rajouter un téléchargement de GDIPAPI et GDIPOBJ pour que la compilation et l’installation se fassent correctement).
    Par contre je ne crois pas que cela réponde à la demande.

    Comme j'avais ce genre de chose à faire j'ai fait une tentative mais sans maitrise de l'outil c'est assez difficile.

    J'ai par la suite essayé mes propositions via TMSFMXGrid mais après avoir abandonné l'export RTF (calamiteux), un export vers XLS même si plus correct ne permettait pas tout (par exemple les cases à cocher) et, l'état à faire étant complexe, la TMSFMXGrid très difficile à faire

    A ces composants , j'ai préféré donc préféré une méthode plus "facile" et en tout cas portable !

    j'ai utilisé un fichier HTML , modèle de ce que je voulais obtenir, avec des balises (j'ai utilisé des noms de variable entre crochets).
    une lecture de ce modèle dans un TStringList, quelques StrReplace et j'ai le résultat escompté facilement sauvegardé dans un autre fichier HTML

    je suis même allé plus loin en remplaçant certaines balises par des tables HML, après quelques tâtons

    pour donner un exemple codé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    procedure prepareRapport;
    var 
    SL  :  TStringList;  // va recevoir le modèle original
    SL1 : TStringList;  // lignes du fichier final
    i : Integer;
    begin
    SL := TStringList.Create;
    SL.LoadFromFile('modele.html');
    SL1:=TStringList.Create;
    for i:=0 to SL.Count-1 do 
    begin
     SL[i]:=StringReplace(SL[i],'[client]','TOTO',[rfReplaceAll]);  // remplacement facile
     // Cases à cocher 
     if client then
         SL[i]:=StringReplace(SL[i],'name="Client"','checked=""',[rfReplaceAll]);
     if not client then 
         SL[i]:=StringReplace(SL[i],'name="Prospect"','checked=""',[rfReplaceAll]);
     
    if pos('[listecontacts]',sl[i])>0 then   // remplacement par une table html
       begin
         SL1.Add(Format('<table style="text-align: left; width: 100%%; height: %dpx border="1" cellpadding="2" cellspacing="2"><tbody>',[4*26]));
         SL1.Add(Format('<tr><td style="text-align: center;width: 597px;"><b>%s</b></td><td style="width: 425px;"><b>%s</b></td></tr>',['Pr&eacute;nom, Nom','Fonction']));
         // remplir liste
         SL1.Add(Format('<tr><td style="text-align: center;width: 597px;">%s</td><td style="width: 425px;">%s</td></tr>',['toto, Tata','Direction']));
         SL1.Add(Format('<tr><td style="text-align: center;width: 597px;">%s</td><td style="width: 425px;">%s</td></tr>',['titi, Tata','Ventes']));
         SL1.Add(Format('<tr><td style="text-align: center;width: 597px;">%s</td><td style="width: 425px;">%s</td></tr>',['tutu, Tata','Achats']));
         SL[i]:='</tbody></table>';
       end;
       SL1.Add(SL[i]); 
    end;
    .....
    SL.Free;
    SL1.SaveToFile('rapport.html');
    SL1.Free;
    end;
    le modèle (simplifié)
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html><head>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><title>Rapport de Visite</title>
     
    </head>
    <body>
    <!--titre-->
    <h2 style="text-align: center;">RAPPORT DE VISITE</h2>
    <!-- remplacement simple dans un tableau HTML --> 
    <table style="text-align: left; width: 100%; height: 34px;" border="1" cellpadding="2" cellspacing="2">
    <tbody>
    <tr>
    <td style="width: 102px; font-weight: bold;">CLIENT</td>
    <td style="width: 950px;"><span style="font-weight: bold;">[client]<br>
    </span></td>
    </tr>
    </tbody>
    </table>
    <br>
    <!-- plus les checkbox -->
    <input name="Client" type="checkbox">Client
    <input name="Prospect" type="checkbox">Prospect<br>
    <!-- plus la grille -->
    [listecontacts]
    <!-- plus -->
    je pense que cette méthode répond à la question de départ (du moins la possibilité de générer des rapports) pour peu de connaitre un peu le HTML
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 391
    Points : 189
    Points
    189
    Par défaut [Android-Seattle] Formater un texte pour l'envoyer par email ou l'imprimer
    Bonjour

    Merci beaucoup pour vos réponses.Vous m'avez fourni de très bon choix que j'ai regardés.Comme je n'étais pas très bon en html je me suis lancé et les résultats sont très bons, simple à faire pour afficher les rélevés. Comme j'avais besoins d'affiché le résultats trier a partir d'une table ca été tres facile et le résultat est tres bien.

    Merci encore pour votre aide.

    Mario

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment formater le texte sélectionné
    Par mesken dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2012, 21h20
  2. Formater un texte pour récuperer des coordonnées
    Par Ramdoulou dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 12/11/2008, 15h50
  3. Réponses: 5
    Dernier message: 26/06/2007, 19h20
  4. Réponses: 4
    Dernier message: 28/05/2006, 20h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo