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

Langage Delphi Discussion :

Effet de bord !


Sujet :

Langage Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut Effet de bord !
    Bonsoir à tous,

    Voici un affichage dans le DrawCell de mon StringGrid

    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
        if (Arow = 1) And (ACol > 0) then
        Begin
          case Cote of
            0: // on affiche
            begin
              Degrader(TStringGrid(Sender).Canvas,Rect,clcream,clMoneyGreen);
              Brush.Style := bsClear;
              Font.size := TailleFontSize;
              Font.Name := 'Tahoma';
              yRect.Left := Rect.Left + PosMouseHeure;
              yRect.Top  := Rect.Top - 2;
              yRect.Right  := Rect.Right;
              yRect.Bottom := Rect.Bottom;
     
              DrawText(Handle, PChar(Cells[Acol,Arow]), -1, yRect, DT_TOP);
            end;
    Cette chose me permet d'afficher du text (pas plus de 2 lettres) dans la ligne 1 de la colonne ou se trouve la souris, de plus au mouvement de cette dernière, L'affichage des lettres suit.

    J'aimerais améliorer l'affichage, si je suis avec ma souris sur le bord droit, il arrive systématiquement que mes lettres soit coupées car cela dépasse le Right de la cellule.

    Comment je peux forcer ou faire en sorte que jamais les lettres que j'affiche soit tronquées, qu'elles soient entière.
    En claire, c'est comme si je voulais faire un alignement à droite lorsque le texte risque d'être coupé en deux.

    Aujourd'hui je joue avec la variable PosMouseHeure, qui fonctionne parfaitement sauf quand j'arrive vers le bord droit.

    Merci à vous

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 879
    Points : 11 377
    Points
    11 377
    Billets dans le blog
    6
    Par défaut
    il faut donc détecter si tu es sur le bord droit avec pê un mouseToCell pour voir si tu es dans la dernière colonne

    dans ce cas, tu utilises TextWidth de ce que tu veux afficher et tu compares à la position souhaitée, ou tu recules d'autant qu'il faut pour que ça tienne (ou tu fais un alignement à droite DT_TOP or DT_RIGHT ?)

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    il faut donc détecter si tu es sur le bord droit avec pê un mouseToCell pour voir si tu es dans la dernière colonne

    dans ce cas, tu utilises TextWidth de ce que tu veux afficher et tu compares à la position souhaitée, ou tu recules d'autant qu'il faut pour que ça tienne (ou tu fais un alignement à droite DT_TOP or DT_RIGHT ?)
    Merci Tourlourou, j'étais fixé sur des calculs scientifique et j'avais complétement zappé le DT_RIGHT.

    D'ailleur au passage j'ai pu également régler mon probleme inverse avec le DT_LEFT


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

Discussions similaires

  1. Effet de bord...
    Par pierre50 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 12/10/2005, 18h11
  2. Effet de bord
    Par Clad3 dans le forum OpenGL
    Réponses: 11
    Dernier message: 04/10/2005, 14h38

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