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 :

TLabel & espace insécable


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Points : 40
    Points
    40
    Par défaut TLabel & espace insécable
    Bonjour,

    j'aimerai écrire un texte dans le Caption d'un TLabel, mais avec un espace insécable (au sens littéral). Par exemple, si j'écris : « Qu'il est grand, plus grand encore mort que vivant ! » j'affiche :
    « Qu'il est grand,
    plus grand encore
    mort que vivant !
    »
    compte-tenu de la taille de mon TLabel. Je ne peux pas modifier sa taille, et le texte est chargé dynamiquement. Je voudrais afficher, par exemple :
    « Qu'il est grand,
    plus grand encore
    mort que
    vivant ! »
    et donc rajouter des espaces insécables ; en HTML on aurait :
    « Qu'il est grand, plus grand encore mort que vivant ! »
    Merci pour vos réponses.

    spg40.

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 127
    Points
    15 127
    Par défaut
    Salut

    ÀMHA, ça n'est pas gagné : l'espace insécable est une particularité typographique qu'on pratique dans Word, Publisher, OOWriter, XPress et les autres logiciels de mise en page avec une combinaison de touches particulière (CTRL MAJ Espace pour Word et Publisher, les autres je sais pas).
    Par exemple, j'ai essayé avec Excel et Notepad, peau d'balle...

    Alors, à moins que tu ne forces un retour à la ligne à l'endroit qui va bien pour assurer l'esthétique et recoller tes guillemets orphelins (ce dont je te félicite, soit dit en passant), je vois pas trop de solution...

    PS : tant qu'à y être :
    mais avec un espace insécable
    une espace insécable !
    Et vi ! En typo, « espace » est féminin, n'importe quel bon dico te le confirmera.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Citation Envoyé par Jipété Voir le message
    PS : tant qu'à y être : une espace insécable !
    Et vi ! En typo, « espace » est féminin, n'importe quel bon dico te le confirmera.
    alors la je suis épaté. tu veux dire que 99.9% des gens se trompent?
    effectivement je viens de verifier, le caractere typographique est feminin.

  4. #4
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Points : 40
    Points
    40
    Par défaut
    Salut et merci Jipété pour ta réponse : ça confirme ce que je pensais.

    Je marque le sujet comme résolu.

    spg40.

  5. #5
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    As-tu essayé avec le caractère #255 à la place du #32 ?
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  6. #6
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut


    Citation Envoyé par spg40 Voir le message
    Salut et merci Jipété pour ta réponse : ça confirme ce que je pensais.

    Je marque le sujet comme résolu.

    spg40.
    Pourquoi alors taguer Résolu un thread qui ne l'est pas ?

    un développeur par définition se doit de penser qu'INPF*.

    Un développeur se doit d'être tenace et patient ; voire entêté

    Bref, ton problème doit trouver une solution, peut-être pas exactement suivant ta méthode ; mais certainement une autre.

    Question : Est-ce que toutes tes récoltes -dyna ou autres- de string possèdent ce caractère de fin '»' ?

    Car là, ce devrait mettre la puce à l'oreille à plus d'un

    Mes 3 cts

    *INPF = Impossible N'est Pas Français

  7. #7
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    Salut

    Peut être une solution qui marche mais que je n'ai pas essayé pour tout les cas possibles.

    1° je détermine en fonction de la ponctuation les éléments de la phrase ou insérer un caractère non sécable, remarque çà change en fonction de la langue.

    2° J'insère un caractère quelconque aux positions déterminées pour supprimer l'espace.

    3° je calcule la taille de mes lignes en ajoutant mots à mots donc en tenant compte que des vrais espaces.

    4° je retire les caractères ajoutés pour restituer ma vrai ligne..


    Une base a optimiser, peut être que d'autres auront d'autres idées pour cela aussi.

    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
     
    Procedure TForm1.InsertTexte(Texte:string;Dest:Tlabel);
    var i,y,p:integer;
        st,st1:string;
    begin
        // insertion espace insecable en fonction de la ponctuation française
        i:=0;
        repeat
             inc(i);
             if (i>1) and (texte[i] in [';',':','?','!','»']) and (texte[i-1]=' ') then texte[i-1]:='§';      // §;  §:  §?  §!  §»
             if (i<length(texte)) and (texte[i] in ['«','-']) and (texte[i+1]=' ') then texte[i+1]:='§';                  // «§   -§
        until i=length(texte);
     
        Y:=0;
        repeat
            st:='';
            // compose les lignes en fonction de la lageur du label
            repeat
              P:=Pos(' ',texte);
              if P<>0 then
              begin // ajoute les mots et calcule la taille
                  St:=st+copy(texte,1,P);
                  if Dest.Canvas.TextWidth(St)<Dest.Width then
                  begin
                      st1:=st;
                      delete(texte,1,p);
                  end else break;
              end
              else
              begin // traite fin du texte sans espace en fin de ligne
                  st1:=st1+texte;
                  texte:='';
                  break;
              end;
            until false;
     
            // retire caractères "insécable"
            for i:=1 to length(st1) do if st1[i]='§' then st1[i]:=' ';
            Dest.Canvas.TextOut(0,Y,st1);
            Y:=Y+Dest.Canvas.TextHeight('M')+2;
        until texte='';
    end;
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 726
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 726
    Points : 15 127
    Points
    15 127
    Par défaut
    Salut !

    Pas mal, le plan de petitcoucou31. Un seul petit reproche, c'est le cas où le caractère choisi doit également être utilisé dans le texte --> pâté, non ?
    Partant de là, ch'suis allé voir dans un document Word avec un éditeur héxa : c'est le code A0 qui est utilisé pour une espace insécable, en place du classique 20 pour une espace normale.

    Valà (salut, Droïde !),
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Tout à fait, il est même dans la table des caractères de Windows : le caractère de code ansi 160 ($A0) apparaît comme l'espace mais sera traité comme un caractère autre, je pense...

  10. #10
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    salut

    Oui bien sur !! j'ai pris un caractère pour l'exemple, mais en choisir un adéquat..

    bye
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

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

Discussions similaires

  1. [TinyMCE] tinymce espace insécable/no-break space
    Par rasdri dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 06/02/2008, 15h12
  2. [HTML] Espace insécable sous Firefox
    Par Pierre1111 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 04/02/2008, 10h43
  3. Ecrire une espace insécable
    Par v4np13 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 11/01/2008, 22h09
  4. [Entities] Comment insérer un espace insécable
    Par <nbweb> dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 05/04/2007, 09h26
  5. Espace insécable dans une chaine de caractères
    Par Mors_Ubyte dans le forum Access
    Réponses: 1
    Dernier message: 11/02/2006, 21h43

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