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

C++Builder Discussion :

retour a la ligne dans MessageDlg ? [FAQ]


Sujet :

C++Builder

  1. #1
    Membre Expert
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Par défaut retour a la ligne dans MessageDlg ?
    Bonjour,

    j'utilise régulierement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MessageDlg("BDD update !", mtInformation, TMsgDlgButtons() << mbOK,0 );
    je voudrais savoir comment avoir un retour a la ligne dans le texte du MessageDlg, par exemple :
    BDD
    update !
    je compte l'utiliser pour des texte plus long ...

    merci par avance

    netah

  2. #2
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Et en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MessageDlg("BDD\nupdate !", mtInformation, TMsgDlgButtons() << mbOK,0 );
    ça ne fonctionne pas???

  3. #3
    Membre Expert
    Avatar de netah25
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 233
    Par défaut
    si ca fonctionne, mais je suis pas un excellent programeur ...



  4. #4
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Pour moi cela ne fonctionne pas.

    J'ai fait un programme multilangue en stockant les textes que je veux afficher dans un fichier XML.

    J'ai donc inclus mon \n dans le champ message que je veux afficher, dans mon fichier XML.

    Dans mon message, cela ne va pas à ligne et on voit le \n.

  5. #5
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    C'est parce qu'il le considère en tant que deux caractère, les caractère '\' et le n, alors que le retour à la ligne est un '\n' en un seul caractère, c'est certainement du au fait que tu as fais ton fichier xml en tapant du texte, directement \n, pour que ca fasse correctement le retour a la ligne il faut taper le retour à la ligne et non pas le \n.
    Ca marche sous Builder car il recompile derière, ce qui n'est pas le cas lorsque ton programme lit du texte dans un fichier.

    PS : je sais pas si j'ai été très claire la .

  6. #6
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Je pense avoir compris

    En fait, il faut que je retranscrive mon texte quand je le lit pour transformer le \n de mon message considéré comme deux caractères en vrai \n.

  7. #7
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Oui ce sera certainement plus simple, par exemple, tu as ta chaine à afficher dans le MessageDlg dans un AnsiString, tu situe les deux caractere \ et n, et tu les remplace par un vrai :
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    AnsiString texte ;
    int pos ;
    pos = texte.Pos("\\n") ;
    while(pos != 0){
      texte.Delete(pos,1) ;
      texte[pos] = '\n' ;
      pos = texte.Pos("\\n") ;
    }

  8. #8
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Merci à toi pottiez

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Sinon il y a une deuxième solution avec StringReplace :

    On suppose au départ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AnsiString S = "\\n";
    char LF = 10; // c'est à dire \n
    AnsiString N = "Coucou ! \\nHello World \\nThat'a all folks !";
    Pour voir ce que donne l'affichage de la chaîne :

    Maintenant on applique le StringReplace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TReplaceFlags Flags = Flags << rfReplaceAll;
    N = StringReplace(N, S, LF, Flags); // c'est fait
    Pour voir ce que donne l'affichage de la nouvelle chaîne :

    Pour les objets qui gèrent les chaînes sous forme de liste (TMemo par exemple), le remplacement par des LF, dans une chaîne, reste valable sauf que l'affichage ne tient pas compte du caractère de commande LF.
    L'affichage représentera donc ces caractères LF sans générer de nouvelle ligne.
    Si on veut que le résultat soit aussi graphique il faudra ajouter après le remplacement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char *Text = Memo1->Lines->GetText();
    Memo1->Lines->SetText(Text);
    delete Text; //il faut libérer Text renvoyé par GetText
    A plus !

  10. #10
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Merci henderson

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

Discussions similaires

  1. [DW8] Retour a la ligne dans dreamweaver 8
    Par Cedwik dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 17/10/2006, 10h17
  2. [JSP]retour a la ligne dans fonction mailto
    Par logica dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 19/04/2006, 01h50
  3. [C#] Retour à la ligne dans un TextBox
    Par ploxien dans le forum ASP.NET
    Réponses: 4
    Dernier message: 21/02/2006, 13h45
  4. [MFC]retour a la ligne dans une EditBox
    Par bibi_64 dans le forum MFC
    Réponses: 2
    Dernier message: 15/12/2005, 12h35
  5. Comment faire un retour a la ligne dans un tableaux Word
    Par alexmorel dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 17/06/2004, 09h31

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