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 :

Dessiner dans un TRichedit


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut Dessiner dans un TRichedit
    Bonjour à tous,

    je voudrais intégrer des formes géométriques (rectangle, cercle,..) dans un Trichedit qui contient déjà des données, mais le dessin disparait instantanément et je ne sais comment faire pour qu'il reste affiché.
    voici l'exemple que j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ////canvas:Tcontrolcanvas;
     
    canvas:=Tcontrolcanvas.create;
    canvas.control:=lana2;
    ///exple
    canvas.rectangle(1,1,100,300);

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Il faut que tout se redessine sur le canevas lors de son OnPaint, sans quoi c'est perdu. Voilà où mettre le dessin de tes formes.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       fillrect(getdc(richedit1.Handle), Rect(20,20,100,100),canvas.Brush.handle);
    (code d'un bouton par exemple)

    le dessin ne disparait pas (mais il peut se déplacer si on écrit dans le RichEdit)

    A+
    Charly

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    @tourlourou
    "Trichedit" ne possède pas d'événement "onpaint".

    @charly910
    ta fonction ne donne aucun résultat.

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,
    je l'ai pourtant testé dans le code OnClick d'un button ?
    A+
    Charly

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    bonjour,
    j'ai fait le test plusieurs fois et dés fois il apparait et il disparait instantanément et pourtant le Trichedit ne possède pas d'évènement "onpaint"

  7. #7
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Voici mon test
    RichEdit.zip
    A+
    Charly

  8. #8
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    Question: Pour quelle raison faire ça dans un TRichEdit ?

    Si c'est pour écrire n'importe où au pixel près et dessiner des formes géométriques, autant faire ça directement sur un TPaintBox ou le TBitmap d'un TImage.

  9. #9
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Quitte à faire un TRichEdit.PaintTo sur le PaintBox ou le Canvas, puisqu'il n'expose pas le sien ni n'a de OnPaint.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Mon but est intégrer des graphes personnalisé correspondant aux données écrites. Le probléme c'est que Trichedit ne garde pas les formes déssinées

  11. #11
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,
    tu peux même écrire et dessiner directement dans le Canvas de la fenêtre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm2.Button1Click(Sender: TObject);
    Var
      PosX, PosY : Integer ;
    begin
      Canvas.TextOut(10,10,'Ceci est un graphe personnalisé : carré rouge en dessous');
      PosX := 10;
      PosY := 30 ;
      Canvas.Brush.Color := ClRed ;
      Canvas.Rectangle(PosX,PosY,PosX+10,PosY+10);
    end;
    Mais bien sûr le texte n'est pas modifiable à l'exécution ...
    A+
    Charly

  12. #12
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    Citation Envoyé par chekkal Voir le message
    Mon but est intégrer des graphes personnalisé correspondant aux données écrites. Le probléme c'est que Trichedit ne garde pas les formes déssinées
    Encore une fois, dans quel but ? Édition par l'utilisateur ? Impression seulement ? Affichage écran uniquement ? Génération de PDF ? etc.
    Tout dépend de ce que 'on veut faire.
    Il faudrait préciser l'utilisation réelle de la chose pour mieux définir la façon de faire.

  13. #13
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    je voudrais l'afficher sur écran et pouvoir l'imprimer.

  14. #14
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    S'il n'y a aucune édition par l'utilisateur, il suffit de dessiner et/ou écrire sur un TMetafile pour affichage dans un TImage.

    https://www.delphipower.xyz/graphics...metafiles.html

    il y a plein d'autres exemples sur le net.
    On peut l'envoyer sur un TImage, l'imprimer, l'enregistrer, etc.
    Et ça permet de faire des choses au pixel près.
    Mais ça demande bien sûr plus de précision pour le texte.

    Sinon, FastReport ferait aussi très bien l'affaire, même dans sa version de base.

  15. #15
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    autre avantage que j'ai oublié de mentionner, le résultat est vectoriel et supporte les réductions ou agrandissement sans déformation.


    Meilleur exemple ici: https://stackoverflow.com/questions/...canvas-example

  16. #16
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 419
    Points : 5 818
    Points
    5 818
    Par défaut
    salut

    le TRicheEdit de delphi n'accepte pas l'insertion d'image (Pb de DLL windows)
    il existe plein de librairie tiers qui le font très bien tel que le jvcl (de memoire ils ont repris de la rxlib)
    ce composant fonctionne correctement et accepte l'insertion d'image
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  17. #17
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    Je ne parlais de faire une image à insérer dans le TRichEdit mais de créer le document entier , texte et graphique inclus

  18. #18
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    merci pour vos réponses, je vai voir avec ces exples.

  19. #19
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    j'ai réussi à dessiner sur le canvas du Trichedit et à pouvoir le maintenir affiché on utilisant le onpaint de la fiche. par contre à l'impression le graphe dessiné n'est pas imprimer sachant que j'utilise ravereport.

  20. #20
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    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 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    vu le code utilisé pour le ravereport c'est tout à fait logique. C'est le canvas qu'il faut utiliser et non les lignes du richedit

    Pour moi c'est la logique de l'approche qui ne va pas. L'utilisation de métafiles proposée par Papy214 est très certainement préférable
    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

Discussions similaires

  1. DBGrid, comment dessiner dans les titres des colonnes
    Par dleu dans le forum Bases de données
    Réponses: 9
    Dernier message: 04/11/2004, 17h49
  2. [debutant]dessins dans une fenetre
    Par drosophile dans le forum 2D
    Réponses: 4
    Dernier message: 04/11/2004, 14h55
  3. Dessin dans les panels d'un TStatusBar
    Par Amenofis dans le forum Composants VCL
    Réponses: 4
    Dernier message: 31/08/2004, 18h45
  4. Dessiner dans un JPanel
    Par Oliveuh dans le forum Composants
    Réponses: 5
    Dernier message: 19/07/2004, 12h13
  5. Comment avoir des marges dans un TRichEdit ?
    Par nomdutilisateur dans le forum Composants VCL
    Réponses: 5
    Dernier message: 25/06/2004, 09h57

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