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 :

A la ligne suivante sans passer par #13#10 dans un richedit


Sujet :

Composants VCL Delphi

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut A la ligne suivante sans passer par #13#10 dans un richedit
    Bonsoir,
    Voici ma question si je pousse sur mon button j'aimerais bien passe a la ligne suivante dans mon Richedit sans introduire les codes #13#10
    est-ce possible!
    Merci pour l'aide, salutations.

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut Ardely

    Je te propose une méthode qui évite de passer par les #13#10 ...

    La voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    RichEdit1.Lines.Insert(RichEdit1.Lines.Count,'');
    end;
    En fait, ce que je fait, c'est insérer une nouvelle ligne vierge à la fin du RichEdit.

    J'espère que celà te satisfera!
    A+

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    La command 'RichEdit1.Lines.Insert' fait insert un 1310 dans le richedit!
    Le but est : si je pousse sur mon button où le caret est situé, le text se met à la ligne suivante.
    Puis si je fais une save du text la ligne doit être de nouveau là où elle était avant de pousser sur button.
    Pour cela je cherche quelque chose où il n'y a pas de 1310 ajouté à l'intérieur du richedit !
    Merci beaucoup.

  4. #4
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Ok .. .en fait tu cherche a supprimer les blancs

    Tu cherche du mauvais coté
    Un retour a la ligne est forcement induit par e caractere #13#10.
    Par contre, tu peux analyser ton texte lors de l'enregistrement et virer les lignes vides qui se trouvent en fin de page.

    Note : On confond souvent le probleme avec sa technique. Il est plus simple d'expliquer le probleme et ce que l'on souhaite (en faisant abstraction le plus possible de la technique) :
    Supprimer lors de l'enregistrement d'un richEdit les lignes vides a la fin du texte
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  5. #5
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Citation Envoyé par Clorish Voir le message
    Ok .. .en fait tu cherche a supprimer les blancs

    Tu cherche du mauvais coté
    Un retour a la ligne est forcement induit par e caractere #13#10.
    Par contre, tu peux analyser ton texte lors de l'enregistrement et virer les lignes vides qui se trouvent en fin de page.

    Note : On confond souvent le probleme avec sa technique. Il est plus simple d'expliquer le probleme et ce que l'on souhaite (en faisant abstraction le plus possible de la technique) :

    Ah, ba je l'avais pas compris comme ça
    Désolé si je t'ai mis sur une mauvaise piste!

    J'espère que Clorish t'aura répondu de façon plus correcte

  6. #6
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Citation Envoyé par ero-sennin Voir le message
    Ah, ba je l'avais pas compris comme ça
    Question d'habitude
    Je passe mes journees a essayer de comprendre ce que mes boss ont dans la tete

    C'est un defaut tres ... tres ....tres frequent de ne pas realiser que nos interlocuteurs ne sont pas dans nos tetes et n'ont pas suivit tout le raisonnement qui nous a amené ici

    CE que l'on voit n'ets pas forcement percu de la meme maniere

    D'ailleur un petit test sympas a faire : Choisis un dessin a base de traits : Maison, Voilier, Fleche, etc ...
    Essaye de decrire le dessin a un collegue qui doit le reproduire sans le voir.
    Si le resultat est coherent : Bravo ! Tu sais dialoguer et exposer tes idees correctement
    Bref .. tu sais te faire comprendre.

    Mais .... attention aux surprises !!!
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    Bonjours,
    Voici un autre example: le text est déjà existant dans l'éditeur. Si la ligne text est par example plus grand que 80 caractères, je mets mon caret à la colone 80 avec la souris, je pousse sur mon button et le reste de la ligne se met au debut de la colone.

    A vrais dire je ne veux pas supprimer les blancs, mais tout simplement mettre mon text a la ligne suivante sans vouloir insérer un 1310.
    Voici la solusion que je me propose:
    Si je pousse sur mon bouton pour mettre mon text a la ligne suivante j'insert quand même #13#10#182 (caché) Le #182 veut dire que c'est une ligne ajouter par mon button.
    Puis avant de sauvegarder mon text, je fais dabors une recherche sur #13#10#182 et je les supprime.

  8. #8
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Si tu veux que celà soit discret tu peux utiliser ceci ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var
      i1 : integer ;
    begin
    For i1 := 0 to (Memo1.Lines.Count-1) do
      Memo1.Lines.Objects[i1] := Pointer(1) ;
    ....
    Tu marques chaque ligne à l'aide de Objects puis ensuite tu découpe ta chaine
    L'endroit des marquage sera à Pointer(0)

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    Bonjours,
    Trés, trés interésant ta proposition avec l'Objects, je vais chercher des examples et faire des test!
    Merci, bien amicalement.

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    Bonjours, je suis très intéressé à cette solution à le faire avec les objects (et aussi pour apprendre). Je l'ai fait comme tu me l'as proposé...mais..
    Pour vérifier si une ligne est a Pointer(0) je me suis fait ce test, mais le résultat est toujours 00000000.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.Button2Click(Sender: TObject);
    var
      i1 : integer ;
    begin
      For i1 := 0 to (Richedit1.Lines.Count-1) do
     
       ShowMessage(Format('%p', [Pointer(RichEdit1.Lines.Objects[i1])]));
     
    end;
    Aurais-tu un petit example pour me guider et me corriger!
    Merci beaucoup. Salutations.

  11. #11
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Effectivement il y un problème. Car en opération interne Lines est un TMemoStrings directement dérivé de TStrings qui n'implémente pas les méthodes liées au TObject. Je regarde celà de plus près.

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 190
    Points : 218
    Points
    218
    Par défaut
    si c'est pour deplacer le curseur essaye

    memo.Perform(EM_SCROLL, 0, 0 );
    @+

  13. #13
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Peut-être le point de départ d'une solution :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    unit Unit3;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Classes, ComCtrls;
     
    type
      TForm1 = class(TForm)
        RichEdit1: TRichEdit;
        Button3: TButton;
        RichEdit2: TRichEdit;
        procedure Button3Click(Sender: TObject);
        procedure FormActivate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
     
    {$R *.dfm}
     
    procedure TForm1.Button3Click(Sender: TObject);
    var
      i1,i2,i3 : integer ;
    begin
      i1 := RichEdit1.selStart ;
      i2 := 0 ;
      repeat
        if RichEdit2.Text[i2]= #185 then
          inc (i1) ;
        inc(i2)
      until i2 >= i1 ;
      RichEdit1.SetSelTextBuf (#13#10) ;
      RichEdit2.selStart := i1 ;
      RichEdit2.SetSelTextBuf (#185#13#10) ;
    end;
     
    procedure TForm1.FormActivate(Sender: TObject);
    begin
      RichEdit1.Lines.LoadFromFile ('Beaudelaire.txt');
      RichEdit2.Lines.LoadFromFile ('Beaudelaire.txt');
    end;
     
    end.
    La musique
    La musique souvent me prend comme une mer !
    Vers ma pâle étoile,
    Sous un plafond de brume ou dans un vaste éther,
    Je mets à la voile
    La poitrine en avant et les poumons gonflés
    Comme de la toile,
    J'escalade le dos des flots amoncelés
    Que la nuit me voile ;
    Je sens vibrer en moi toutes les passions
    D'un vaisseau qui souffre ;
    Le bon vent, la tempête et ses convulsions
    Sur l'immense gouffre
    Me bercent. D'autres fois, calme plat, grand miroir
    De mon désespoir !

    Charles Baudelaire (1821- 1867)

  14. #14
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 317
    Points : 88
    Points
    88
    Par défaut
    Merci pour le temps passer pour me répondre, ce code qui me fait aussi réfléchir a une solution...
    Mais l'idée que tu m'as proposé avec un object était pas mal, est-ce possible de le faire d'une manière avec un object...
    Trés bon weekend a vous...

Discussions similaires

  1. update une ligne de gridview sans passer par edit
    Par pseudo88 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 16/03/2009, 12h52
  2. Réponses: 11
    Dernier message: 23/11/2007, 10h31
  3. Réponses: 7
    Dernier message: 28/03/2007, 13h57
  4. Afficher une image sans passer par les textures
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/05/2003, 19h13
  5. [Kylix] Débrider Kylix sans passer par le Net
    Par BXDSPORT dans le forum EDI
    Réponses: 1
    Dernier message: 23/03/2003, 10h52

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