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 VCL Delphi Discussion :

[Delphi XE2] Composant RichEdit


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2002
    Messages
    2 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 188
    Billets dans le blog
    2
    Par défaut [Delphi XE2] Composant RichEdit
    Bonjour,

    Sur Lazarus, il existe un composant "LZRichEdit" qui remplace avantageusement le RichEdit de Delphi, mais il permet en plus d'inclure des photos dans les documents.

    Le RichEdit de base semble incapable de le faire, et le composant TRichView n'est pas donné. 255 € pour un amateur comme moi, c'est infiniment trop. Donc ...?

    La question est : existe-il un composant pour Delphi XE2 permettant d'inclure des photos dans un document RTF ?

    Merci par avance pour toute réponse (même négative)

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    J'ai souvenir d'un sujet similaire
    Faudrait vérifier si le TJvRichEdit le gère, il y a plusieurs DLL RichEdit dans Windows

    Tu peux utiliser Word par automation, voir Word→Modification du texte
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 614
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Faudrait vérifier si le TJvRichEdit le gère
    après vérification , oui

    cependant JVCL comme son nom l'indique , c'est du VCL pas du FMX (a quand un JVFMX ?) . J'ai même lu sur EDN que la JVCL avait été porté pour XE4

    merci , grâce a ce post je suis au courant et je vais les installer de ce pas

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Comme, on est dans la rubrique "Composants VCL", cela ne semblait pas être un problème d'évoquer le JVCL !

    Tu penses à FMX parce qu'il utilise Lazarus ? Les plateformes cibles ne sont pas les mêmes (manque Linux pour FMX)


    Avec un collègue, pour faire une impression rapide (on utilise Crystal Report 2008, on voulait s'en passer), on a créé un RTF template sous WordPad, on ouvre le fichier manuellement et l'on remplace des
    <balises nom du champ de fusion> pour les données, cela fonctionne plutôt pas mal, j'ai fait ce code en D7 ainsi qu'en BCBXE2 (via un simple TStringStream)

    Voici ce bricolage fait en une petite heure avec mon collègue, c'est un peu baclé mais cela fonctionne


    Code c++ : 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    //---------------------------------------------------------------------------
    void TFrmLst***::Print***()
    {
      TStringStream *ss = new TStringStream();
      ss->LoadFromFile(ExtractFilePath(Application->ExeName)+"Modele***.rtf");
     
      String chaine = ss->DataString;
      delete ss;
     
      for (int i = 0; i < ClientDataSet->Fields->Count ; i++)
      {
        TField *champ = ClientDataSet->Fields->Fields[i];
     
        String tag = "<" + champ->FieldName + ">";
        String TagValue;
        if(champ->FieldName == "Memo***")
        {
          TagValue = Memo***AsString(champ);
          String TagPlainTextValue = RTFToPlainText(TagValue);
          String tagPlainText = "<" + champ->FieldName + ".PlainText"  + ">";
          chaine = StringReplace(chaine,tagPlainText,TagPlainTextValue,TReplaceFlags()<<rfIgnoreCase<<rfReplaceAll);
        }
        else
          TagValue = champ->AsString;
     
        chaine = StringReplace(chaine,tag,TagValue,TReplaceFlags()<<rfIgnoreCase<<rfReplaceAll);
      }
     
      ss = new TStringStream();
      ss->WriteString(chaine);
     
      char szTmpFile[ MAX_PATH ];
      ::GetTempPath( MAX_PATH, szTmpFile );
      TFileName fichierRTF = IncludeTrailingPathDelimiter(szTmpFile) + "***_" + ClientDataSet->FieldByName("ID")->AsString + ".rtf";
      DeleteFile(fichierRTF);
      ss->SaveToFile(fichierRTF);
      delete ss;
      ShellExecuteW(NULL,L"print",fichierRTF.c_str(),NULL,NULL,SW_HIDE);
      Sleep(2000);
      int tentative = 0;
      do
      {
        Sleep(100);
        DeleteFile(fichierRTF);
        tentative++;
      }
      while (FileExists(fichierRTF) || (tentative <= 20));
    }
     
    //---------------------------------------------------------------------------
    String TFrmLst***::RTFToPlainText(String TagValue)
    {
      String szChaine;
      TStringStream *ss = new TStringStream(TagValue);
      TRichEdit *myRichEdit = new TRichEdit(this);
      myRichEdit->Parent = this;
      myRichEdit->SetBounds(-1,-1,0,0);
      myRichEdit->Lines->LoadFromStream(ss);
      szChaine = myRichEdit->Text;
      delete ss;
      delete myRichEdit;
      return szChaine;
    }
     
    //---------------------------------------------------------------------------
    String TFrmLst***::Memo***AsString(TField *Champ)
    {
      TStringStream *stream = new TStringStream();
      TVarBytesField *VBF = ((TVarBytesField*)Champ);
      BYTE *Txt = new BYTE[VBF->DataSize];
      if(VBF->GetData(Txt))
      {
        // 2 octets pour la taille du binaire  (WORD est sur 2 octet)
        stream->Write(&Txt[2],(WORD&)Txt[0]);
        stream->Position = 0;
      }
      String result = stream->DataString;
      delete[] Txt;
      delete stream;
      return result;
    }
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre éprouvé

    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2002
    Messages
    2 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 188
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    J'ai souvenir d'un sujet similaire
    Faudrait vérifier si le TJvRichEdit le gère, il y a plusieurs DLL RichEdit dans Windows

    Tu peux utiliser Word par automation, voir Word→Modification du texte
    Je ne pense pas, pour la simple raison que je n'ai pas Word ... où alors, il existe un équivalent sur OOo.

    Pour JvRichEdit, je vais voir. Sinon, entre temps, j'ai trouvé les composants "LMD Tools" Dont le composant "RichPack" qui a l'air d'être pas mal. Il n'est pas gratuit, mais 59$ (pour le composant seul), ça reste dans mes possibilités. Est-ce que quelqu'un connait ces composants ?

  6. #6
    Membre éprouvé

    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2002
    Messages
    2 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 188
    Billets dans le blog
    2
    Par défaut
    On le trouve où JvRichEdit ? J'ai beau chercher, je ne trouve pas où aller chercher cette bête là.

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 614
    Billets dans le blog
    65
    Par défaut
    j'ai installé la version pour XE4 , le jvRichedit se trouve dans les JvEdits , pas encore testé par contre l'insertion d'une image , il faut que je retrouve le code

    [Edit]
    excepter l'inconvénient de passer par le Clipboard voici comment j'ai mis une image dans le jvRichEdit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Button1Click(Sender: TObject);
    var Pict : TPicture;
    begin
          Pict := TPicture.Create;
          try
            Pict.LoadFromFile(JvFileNameEdit1.FileName);
            Clipboard.Assign(Pict);
            JvRichEdit1.PasteFromClipboard;
          finally
            Pict.Free;
          end;
    end;
    l'image se positionne a la suite du curseur (du jvrichedit s'entend)

  8. #8
    Membre éprouvé

    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2002
    Messages
    2 188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 188
    Billets dans le blog
    2
    Par défaut
    En fait, d'après ce que j'ai compris, ça remplace les composants RXLib (dont RXRichEdit que j'avais utilisé avec Delphi 4). J'ai téléchargé un programme Demo de la suite JEDI, et il semble évident que ça répond à ma demande. Je passe donc le Topic en résolu.

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

Discussions similaires

  1. Installation composant delphi XE2 plantage
    Par jimmsr dans le forum Composants VCL
    Réponses: 2
    Dernier message: 02/03/2012, 14h07
  2. Composants ICS et Delphi XE2
    Par Teddy dans le forum Composants FMX
    Réponses: 5
    Dernier message: 25/02/2012, 08h55
  3. Ou trouver les composants Ado dans delphi Xe2 starter
    Par mario9 dans le forum Bases de données
    Réponses: 11
    Dernier message: 08/02/2012, 02h50
  4. delphi composant richedit
    Par lllll dans le forum Débuter
    Réponses: 2
    Dernier message: 17/08/2010, 11h39
  5. [Delphi] Association composants-projet
    Par Pierre Castelain dans le forum Composants VCL
    Réponses: 6
    Dernier message: 31/07/2002, 16h20

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