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 :

determiner les ligne visible ds un RichEdit


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 74
    Points : 88
    Points
    88
    Par défaut determiner les ligne visible ds un RichEdit
    salut, je charge un fichier dans un RichEdit, Je veux faire des traitement de mise en forme coloration syntaxique etc...
    Mais les traitement sont trop long si je le fait sur tous le fichier bien sur, je veux faire les traitements que sur la parties visible du fichier (la page courante) qui à une idee pour determiner les lignes visible en cours ?
    sans passer par la position du point d'insertion ki peut etre en dehors de la partie visible.
    Merci.

  2. #2
    Membre à l'essai
    Inscrit en
    Mai 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Salut !

    Deja il te faut recup la 1ère ligne de ton RichEdit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       SendMessage(RichEdit1.Handle,EM_GETFIRSTVISIBLELINE,0,0);
    ca te donnera le numero de la 1ère ligne visible, après il te suffira de calculer en fonction du commencement de la ligne, la hauteur de chaque ligne jusqu'a depasser la hauteur du control RichEdit.

    voilà mais je ne pense pas que t'as methodes soit la meilleur !

    le mieux etant de redirigé le WM_PAINT mais c + difficile à faire

  3. #3
    Membre régulier
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 74
    Points : 88
    Points
    88
    Par défaut
    effectivement voila ce que j'ai trouvé avec l'aide API Win32.
    J'ai fait ca à l'arrache mais ca marche:
    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
    procedure TForm1.Button2Click(Sender: TObject); 
      var   FoundAt: LongInt; 
            StartPos, ToEnd, PosActu, Fin: Integer; 
      begin 
      with RichEdit1 do 
      begin 
         SetFocus; 
         PosActu:=SelStart; 
         StartPos:=perform(EM_LINEINDEX,perform(EM_GETFIRSTVISIBLELINE,0,0),0); 
         Fin:=StartPos+400; 
         FoundAt := FindText('t',StartPos,Fin, [stMatchCase]); 
         while FoundAt <> -1 do 
         begin 
            SelStart:=FoundAt; 
            SelLength:=length('t'); 
            SelAttributes.Color:=clRed; 
            FoundAt := FindText('t',FoundAt+length('t'),Fin-FoundAt, [stMatchCase]); 
         end; 
         SelStart:=PosActu; 
      end; 
     
      end;
    Donc là ça coloris tous les 't' en rouge des 400 premiers caracteres du texte visible dans un RichEdit. Bon maintenant si tu me dit que WM_PAINT c'est mieux dit m'en un peu plus, je vais approfondir.
    Merci

  4. #4
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    En gérant toi même WM_PAINT, c'est toi qui dessine tout, tu contrôle donc la couleur de chaque élément.

  5. #5
    Membre régulier
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2002
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 74
    Points : 88
    Points
    88
    Par défaut Donc
    Donc avec WM_Paint, tu penses que au lieu de laisser le system ecrire,
    puis selectionner les mots pour les colorier de la bonne couleur, le mieux c'est de detecter quel mots vont etre ecrit puis en fonction utiliser WM_Paint pour les ecrire de la couleur venue. c'est ca ?
    si tu as un lien avec des exemple pour illustrer tous ca je suis preneur...
    Merci

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/11/2014, 18h21
  2. [XL-2010] une boucle qui ne travail que sur les lignes visibles
    Par beta007 dans le forum Excel
    Réponses: 3
    Dernier message: 11/03/2014, 17h38
  3. [XL-2010] Compter les lignes visibles
    Par FouJP dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/10/2013, 11h02
  4. copie les ligne visible dans un autre onglet
    Par calvi2002 dans le forum Excel
    Réponses: 4
    Dernier message: 16/07/2009, 10h09
  5. [VBA-E] Imprimer uniquement les lignes visibles
    Par Sebastien_INR59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/06/2006, 17h23

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