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

Lazarus Pascal Discussion :

SynMemo ou un autre composant ? [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre régulier Avatar de danucc
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Points : 124
    Points
    124
    Par défaut SynMemo ou un autre composant ?
    Bonjour à tous,

    Je viens vers vous solliciter un petit conseil.

    Je dois afficher des données qui arrivent d'un autre processus dans un TMemo ou équivalent. Jusque là tout va bien.

    Par contre, dans ces données vont se trouver des messages particuliers et je souhaiterais, à la volée, afficher ces messages dans une autre couleur ou enrichissement.
    Quel composant faudrait-il utiliser ?

    Ce que je cherche, c'est par exemple de pouvoir mettre des balises ou des codes qui entourent mes textes un peu comme ici, ou en html.

    J'ai pensé à SynMemo mais je ne trouve pas de documentation compréhensible, les exemples que j'ai trouvé montrent tous comment mettre en évidence la syntaxe d'un texte statique comme un programme Pascal par exemple.

    D'avance merci à ceux qui me lirons.
    Danilo

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Bonjour !

    Il me semble que l'exemple SynPositionHighlighter (dans les exemples de SynEdit) répond à une partie du problème. Reste à lire les balises, à en déduire la position et la longueur du texte à colorer... Pas simple, mais faisable. De toute façon, c'est bien une solution de ce genre que vous avez en tête, non ? Il est à noter que l'exemple utilise le composant TSynEdit (et non pas TSynMemo qui est "deprecated").

    Autrement, toujours selon le même principe, le composant TRichMemo devrait pouvoir faire l'affaire également.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    hello,
    comme l'a dit Roland , il y a le composant TRichmemo dont la dernière version est disponible ici. Récupérer les fichiers ou alors récupérer l'intégralité du svn lazarus ici en téléchargement le snapshot. Le développeur du composant Dmitry 'skalogryz' Boyarintsev est toujours en activité et répond aux questions concernant son composant dans le forum free pascal lazarus.

    Nom : richmemosample.png
Affichages : 381
Taille : 95,8 Ko

    Ami calmant, Phipic
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  4. #4
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour.

    Comme Roland et JP, je pense que le plus simple pour toi est d'utiliser un composant texte riche.
    Je ne connais pas TRichMemo, j'utilise LazRichEdit.
    Il suffit de "coder" au début de ton message une indication de formatage, puis d'ajouter le texte.

    Vite fait, un petit code :

    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
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       AddLine('[V]Texte en vert');
       AddLine('[R]Texte en rouge');
       AddLine('Texte en noir');
    end;   
     
    procedure TForm1.AddLine(S: string);
    begin
       if (Length(S) > 3) and (Pos('[', S) = 1) then
       begin
          case S[2] of
            'V': lzRichEdit1.SelAttributes.Color:= clGreen;
            'R': lzRichEdit1.SelAttributes.Color:= clRed;
            else lzRichEdit1.SelAttributes.Color:= clBlack;
          end;
          Delete(S,1,3); // on supprime la balise
       end
       else lzRichEdit1.SelAttributes.Color:= clBlack;
       lzRichEdit1.Append(S); // ajout du texte + retour chariot
    end;
    Ceci ne marchera bien que si le curseur reste toujours en fin de texte. Sinon il faut jouer avec la re-sélection. Ou alors tu rends disable ton memo.

    Cordialement
    Thierry

  5. #5
    Responsable Lazarus & Pascal

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 855
    Points
    20 855
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par danucc Voir le message
    Par contre, dans ces données vont se trouver des messages particuliers et je souhaiterais, à la volée, afficher ces messages dans une autre couleur ou enrichissement.
    Quel composant faudrait-il utiliser ?
    Bonjour,

    En dehors des composants déjà cités (j'ai utilisé TRichMemo), tu peux utiliser SynEdit et ses différents composants : ils sont tout à fait adaptés à la coloration syntaxique. Il faudrait juste que tu précises si tu sais d'avance quels mots tu veux colorer ou si tu décides de les colorer selon des critères définis lors de la lecture du flux. Dans le premier cas, la réponse est assez simple... dans le second, c'est plus compliqué

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  6. #6
    Membre régulier Avatar de danucc
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 69
    Points : 124
    Points
    124
    Par défaut
    Merci à tous.
    TRichMemo semble pas trop lourd et peut faire l'affaire.

    Par contre, comme je sais avant d'écrire quels enrichissements je souhaite, je pourrais éviter de sélectionner et modifier le texte après l'avoir écrit, mais je n'ai pas trouvé de fonction qui peut faire cela dans TRichMemo.

    lzRichEdit semble pouvoir le faire, mais chez moi, bien que SelAttributes.Color comme dans l'exemple de ThWilliam passe à la compilation la couleur reste celle par défaut.
    Peut-être j'oublie un détail...

    COMPLEMENT D'INFORMATION : sous windows avec Lazarus 1.2.6 lzRichEdit fonctionne parfaitement mais sous Linux et Lazarus 1.4 (GTK2) les attributs n'ont pas d'effet.

    Bonne soirée à tous.
    Danilo

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

Discussions similaires

  1. Frequence processeur par rapport aux autres composants
    Par black is beautiful dans le forum Composants
    Réponses: 7
    Dernier message: 02/02/2006, 19h08
  2. [Image] scintillement lors déplacement sur autre composant
    Par lilou77 dans le forum Interfaces Graphiques en Java
    Réponses: 21
    Dernier message: 07/12/2005, 09h27
  3. Indy ou Autre composant internet avec une appli Console
    Par Oregon09 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 13/11/2005, 05h07
  4. Réponses: 2
    Dernier message: 25/03/2005, 09h23
  5. Assembleur sur AMD et Intel (et autres composants)
    Par Asmod_D dans le forum Assembleur
    Réponses: 4
    Dernier message: 23/10/2004, 12h57

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