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 :

Composant StringGrid


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut Composant StringGrid
    Bonjour,

    J'utlise une StringGrid sous Delphi 7 (la JvgStringGrid pour être précis) et j'ai besoin de votre aide pour 2 soucis:

    1) Comment faire un renvoi à la ligne dans une cellule afin que mon texte s'affiche sur 2 lignes (j'essaie chr(13) et/ou chr(10) mais rien n'y fait) ?

    2) Je souhaite transformer ma StringGrid en quelque chose d'un peu plus puissant avec la possibilité (comme avec Excel) de fusionner des cellules, mettre des bordures en pointillés, etc... . Quelqu'un connait-il un composant capable de ce genre de chose ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    En utilisant une TDrawGrid, tu peux faire absolument tout ce que tu veux !
    Regarde, par exemple mon échiquier est une TDrawGrid. La liste des coups qui se trouve à gauche aussi !!

    http://sub0.developpez.com/delphi/exe/TableB5.zip

    Bien entendu, cela te demandera de programmer toutes les fonctions dont tu auras besoin, et pourquoi pas, d'en faire par la suite un composant intéressant.

    à+
    De retour parmis vous après 10 ans!!

  3. #3
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut TDrawGrid
    Salut,

    Effectivement c'est très puissant.
    Ne m'en veux pas, mais je débute en Delphi et je n'arrive pas à afficher la moindre chose dans mon objet DrawGrid (j'ai beau utiliser les propriétés Canvas, MoveTo, LineTo, TextOut et autres, mais rien n'y fait...).
    Je cherche désespérement des codes sources m'indiquant comment utiliser cet objet.

    Merci de ton aide.

    A+

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Ah oui, en effet, si tu ne connais pas l'évènement OnDrawCell, tu n'arriveras à rien. Grossomodo, l'évènement est appellé pour dessiner une cellule. Par exemple, quand on fait un Refresh de la grille, cela va redessiner toutes les cellules et il y aura alors, un évènement OnDrawCell pour chacune des cellules. Il suffit donc de définir ce que l'on veut dessiner dans cet évènement. Tu trouveras un exemple très parlant dans l'aide en ligne de Delphi (avec la touche F1). Si tu as des questions, n'hésites pas, à+
    De retour parmis vous après 10 ans!!

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    oui comme ta dit sub0 "F1" est notre milleur guid et ami dans les pires moments( par vraiment pire que sa )
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  6. #6
    Membre du Club
    Inscrit en
    Mars 2005
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 105
    Points : 45
    Points
    45
    Par défaut
    Merci pour vos réponses, il me manquait effectivement l'essentiel.

    J'arrive tout doucement à programmer ma DrawGrid grâce à OnDrawCell...

    Une possibilité m'échappe encore: comment faire un retour chariot dans du texte afin d'écrire quelque chose sur plusieurs lignes ?
    J'essaie des chr(13) ou chr(10) mais je n'obtiens qu'une barre verticale au lieu d'un retour à la ligne.

    Quelqu'un a-t-il la solution ?

    Merci d'avance.


  7. #7
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    La seule solution que j'ai trouvé pour le moment est de dessiner soi-même le saut de ligne.
    J'utilise ici une TStringList pour séparer les lignes, puis je dessine chacune des lignes.
    Dans cette boucle, j'incrémente la position "Top" avec la hauteur de la ligne précédente :
    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
    Procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    Var
      List: TStringList;
      i: Integer;
    Begin
      List := TStringList.Create;
      // STOCKE ICI LA CHAÎNE A AFFICHER //
      List.Text := IntToStr(Acol) + #13#10 + IntToStr(ARow); 
      For i := 0 To List.Count - 1 Do
      Begin
        DrawGrid1.Canvas.TextOut(Rect.Left, Rect.Top, List[i]);
        Rect.Top := Rect.Top + DrawGrid1.Canvas.TextHeight(List[i]);
      End;
      List.Free;
    End;
    Cela fonctionne de la même façon pour une StringGrid que pour une DrawGrid.
    De retour parmis vous après 10 ans!!

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

Discussions similaires

  1. creer et utiliser le composant stringgrid pendant l'execution
    Par mouncef dans le forum Composants VCL
    Réponses: 11
    Dernier message: 23/02/2014, 12h49
  2. [Windows] Le composant Stringgrid
    Par vibine dans le forum Composants FMX
    Réponses: 5
    Dernier message: 25/11/2013, 09h29
  3. Installation composant stringgrid
    Par Vodkha dans le forum Delphi
    Réponses: 2
    Dernier message: 31/05/2007, 13h51
  4. [Débutant][Composants] StringGrid et ComboBox
    Par femtosa dans le forum Delphi
    Réponses: 3
    Dernier message: 09/05/2007, 08h17
  5. Réponses: 3
    Dernier message: 19/03/2007, 16h42

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