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 :

tabulation [FAQ]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Par défaut tabulation
    Bonsoir,

    J'ai un petit problème concernant l'insertion d'une tabulation entre deux colonnes d'un DBComboBox. Je n'arrive pas à le faire. L'idée c'est d'aligner les lignes de la combo.

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut Tab
    Bonjour,

    Normalement, une tabulation c'est le caractère "\t".

    Je ne sais pas si cela peut te servir...

    Je ne connais pas le composant que tu utilises, désolé.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Par défaut
    Merci pour ta réponse mais ca ne marche pas. j'ai déjà essayé. ca donne un 9 entre les colonnes: 1 9 mètre par exemples avant: 1 mètre. Moi je veux inserer une tabulation entre 1 et mètre.

  4. #4
    DR
    DR est déconnecté
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 28
    Par défaut
    Tu peux essayer de redessiner les éléments de la Combo, auquel cas du dessineras "1" et un peu plus loin "mètre".

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Par défaut
    Si tu peux STP être un peu plus précis.

    Je veux aligner toutes les lignes de la combo:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    1   mètre
    10  mètre
    200 mètre
    et non pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     1   mètre
     10   mètre
     200   mètre

  6. #6
    DR
    DR est déconnecté
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 28
    Par défaut
    Voici un exemple :

    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
    void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index, TRect &Rect, TOwnerDrawState State)
    {
      int PositionEspace;
      AnsiString LaPhrase,LePremierMot,LeSecondMot;
      ComboBox1->Canvas->FillRect(Rect);
      LaPhrase = ComboBox1->Items->Strings[Index];
      PositionEspace = LaPhrase.Pos(" ");   //On cherche ou mettre la 'tabulation'
      if (PositionEspace != 0)
        {//On découpe la phrase
          LePremierMot = LaPhrase.SubString(1,PositionEspace);
          LeSecondMot = LaPhrase.SubString(PositionEspace,LaPhrase.Length() - PositionEspace);
        }
      else
        LePremierMot = LaPhrase;
      DrawText(ComboBox1->Canvas->Handle,LePremierMot.c_str(),LePremierMot.Length(),(tagRECT *)&Rect,DT_VCENTER | DT_SINGLELINE | DT_LEFT);  //On écrit le premier mot
      Rect.Left += 40;  //On se décale un peu
      DrawText(ComboBox1->Canvas->Handle,LeSecondMot.c_str(),LeSecondMot.Length(),(tagRECT *)&Rect,DT_VCENTER | DT_SINGLELINE | DT_LEFT);  //puis le second
    }
    PS : ne pas oublier de mettre Style à csOwnerDrawFixed

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Par défaut
    Merci bcp pour ton code, mais ca na pas réglé le problème, il y a toujours un décalage quant il s'agit de 2 caractères ou plus cad plus de 9:

    Affiché:
    Code nom

    1 bouteille
    10 vrac
    200 carte

    Souhaité:
    Code nom

    1 bouteille
    10 vrac
    200 carte

  8. #8
    Membre confirmé
    Avatar de Casp
    Homme Profil pro
    Reponsable Technique
    Inscrit en
    Avril 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Reponsable Technique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 133
    Par défaut
    salut,

    je ne voit pas bien la différence entre ton affiché et souhaité, mais je pense avoir compris ton problème, en fait tu souhaites que les intitulé soient allignés??

    pour commencer utilise la police courier (même si elle n'est pas très belle) car tous les caractères ont la même taille (occupe la même place).

    ensuite il faut que tu gère le longueur de tes quantités, ie que tu doit savoir si il y a 1 chiffre, 2 ... et ensuite ajusté le nombre d'espace nécessaire pour effectuer l'alignement de tes intitulés

    j'espère avoir été assez claire et avoir répondu à a question.

  9. #9
    DR
    DR est déconnecté
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2002
    Messages : 28
    Par défaut
    Dans mon exemple précédent, j'ai mis 40 au pif. Il suffit de déterminer à l'avance la valeur à mettre en fonction des items de ta Combo.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 35
    Par défaut
    Merci à vous tous. J'ai trouvé la solution en s'inspirant de vos codes et de vos suggestions.

    Voici le code:
    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
    AnsiString Phrase,Mot1,Mot2;
     DBComboBox1->Canvas->FillRect(Rect);
     Phrase = DBComboBox1->Items->Strings[Index];
     Mot1 = Phrase.SubString(0,2);
     if (Phrase.SubString(3,1) == " ")
     {
      Mot2 = Phrase.SubString(4,Phrase.Length());
     }
     else
     {
      Mot2 = Phrase.SubString(3,Phrase.Length());
     }
     DrawText(DBComboBox1->Canvas->Handle,Mot1.c_str(),Mot1.Length(),(tagRECT *)&Rect,DT_VCENTER | DT_SINGLELINE | DT_LEFT);  //On écrit le premier mot
     Rect.left += 40;
     DrawText(DBComboBox1->Canvas->Handle,Mot2.c_str(),Mot2.Length(),(tagRECT *)&Rect,DT_VCENTER | DT_SINGLELINE | DT_LEFT);  //puis le second

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

Discussions similaires

  1. espace ou tabulation?
    Par caribou_belle dans le forum Langages de programmation
    Réponses: 27
    Dernier message: 05/10/2003, 11h57
  2. tabulation sur champs de saisie
    Par xClyde dans le forum Flash
    Réponses: 2
    Dernier message: 25/09/2003, 16h49
  3. Taille des tabulations dans un TMemo ?
    Par dergen dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/01/2003, 19h38
  4. Comment imprimer des tabulations ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2002, 11h30
  5. [VB6] Touche de tabulation
    Par BernardMatthey dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 26/11/2002, 22h06

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