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 :

fractionner une cellule du stringgrid [Non suivi]


Sujet :

C++Builder

  1. #1
    Débutant(e)
    Inscrit en
    Mars 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 109
    Points : 64
    Points
    64
    Par défaut fractionner une cellule du stringgrid
    je pense que le titre èxplique bien ce que je recherhe, en effet je voudrai savoir s'il y a possiblité de fractionner une cellule du stringgrid (en 2 par exemple).

    merci

  2. #2
    Membre habitué
    Avatar de Freeze
    Homme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut
    je vois pas trop comment ce serait possible ... peut être en surchargeant la fonction OnPaint ... et encore !!

  3. #3
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Du point de vue graphique, c'est possible en utilisant OnDrawCell, méthode dans laquelle il suffit de détecter la cellule à traiter avec les indices Row et Col passés en paramètre.
    Le rectangle graphique de la cellule est également passsé en paramètre, donc avec le canvas de l'objet il suffit d'y dessiner un trait vertical couleur clSilver.

    Par contre du point de vue saisie...
    Peut-être en utilisant un TEdit que l'on rend visible pour cette circonstance et que l'on positionne juste au dessus de la cellule...

    Reste aussi le problème du stockage de la saisie (sans doute simulée dans les deux cellules)...
    Peut-être sous la forme :

    ...Cell[..][..] = "A" + "\n" + "B";

    Il faut alors se servir de Pos("\n") et SubString ... (voir AnsiString dans l'aide) pour extraire les deux chaînes soit pour l'affichage (impérativement avec OnDrawCell pour ces deux cellules) ou bien pour le traitement...

    A plus !

  4. #4
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonjour

    Sinon j'avais qq tests avec DrawEdge auparavant (je ne sais même plus pourquoi) et il y a peut être une piste a suivre en fonction de ce que tu veut faire réellement dans les cellules ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    TRect pRect;
    for (int i = 0; i < StringGrid1->RowCount; i ++)
    {
    pRect = StringGrid1->CellRect(2, i);
    DrawEdge(StringGrid1->Canvas->Handle,&pRect,BDR_RAISEDOUTER,BF_DIAGONAL);
     
    }
    Essaie de jouer avec certains parametres de cette fonction, et de changer BF_DIAGONAL pour d'autres valeurs pourquoi pas ...?
    Ci joint, pour te simplifier l'affaire, la copie de l'aide au sujet de cette ch'tite fonction :
    The DrawEdge function draws one or more edges of rectangle.

    BOOL DrawEdge(

    HDC hdc, // handle to device context
    LPRECT qrc, // pointer to rectangle coordinates
    UINT edge, // type of inner and outer edge to draw
    UINT grfFlags // type of border
    );


    Parameters

    hdc

    Identifies the device context.

    qrc

    Points to a RECT structure that contains the logical coordinates of the rectangle.edge
    Specifies the type of inner and outer edge to draw. This parameter must be a combination of one inner-border flag and one outer-border flag. The inner-border flags are as follows:

    Value Meaning
    BDR_RAISEDINNER Raised inner edge.
    BDR_SUNKENINNER Sunken inner edge.


    The outer-border flags are as follows:

    Value Meaning
    BDR_RAISEDOUTER Raised outer edge.
    BDR_SUNKENOUTER Sunken outer edge.


    Alternatively, the edge parameter can specify one of the following flags:

    Value Meaning
    EDGE_BUMP Combination of BDR_RAISEDOUTER and BDR_SUNKENINNER.
    EDGE_ETCHED Combination of BDR_SUNKENOUTER and BDR_RAISEDINNER.
    EDGE_RAISED Combination of BDR_RAISEDOUTER and BDR_RAISEDINNER.
    EDGE_SUNKEN Combination of BDR_SUNKENOUTER and BDR_SUNKENINNER.


    grfFlags

    Specifies the type of border. This parameter can be a combination of these values:

    Value Meaning
    BF_ADJUST Rectangle to be adjusted to leave space for client area.
    BF_BOTTOM Bottom of border rectangle.
    BF_BOTTOMLEFT Bottom and left side of border rectangle.
    BF_BOTTOMRIGHT Bottom and right side of border rectangle.
    BF_DIAGONAL Diagonal border.
    BF_DIAGONAL_ENDBOTTOMLEFT Diagonal border. The end point is the bottom-left corner of the rectangle; the origin is top-right corner.
    BF_DIAGONAL_ENDBOTTOMRIGHT Diagonal border. The end point is the bottom-right corner of the rectangle; the origin is top-left corner.
    BF_DIAGONAL_ENDTOPLEFT Diagonal border. The end point is the top-left corner of the rectangle; the origin is bottom-right corner.
    BF_DIAGONAL_ENDTOPRIGHT Diagonal border. The end point is the top-right corner of the rectangle; the origin is bottom-left corner.
    BF_FLAT Flat border.
    BF_LEFT Left side of border rectangle.
    BF_MIDDLE Interior of rectangle to be filled.
    BF_MONO One-dimensional border.
    BF_RECT Entire border rectangle.
    BF_RIGHT Right side of border rectangle.
    BF_SOFT Soft buttons instead of tiles.
    BF_TOP Top of border rectangle.
    BF_TOPLEFT Top and left side of border rectangle.
    BF_TOPRIGHT Top and right side of border rectangle.
    Je n'ai pas le temps la de tester un peu plus, désolé...
    En espérant t'aider
    @ +
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  5. #5
    Débutant(e)
    Inscrit en
    Mars 2006
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 109
    Points : 64
    Points
    64
    Par défaut
    oula, c'est vraiment pas évident de comprendre tous ça!

  6. #6
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Citation Envoyé par faten7
    oula, c'est vraiment pas évident de comprendre tous ça!
    Bonsoir,
    Si c'est pour le DrawEdge, testes éventuellement en changeant le dernier parametre avec des valeurs 'du même type' comme BF_DIAGONAL_ENDTOPRIGHT et vois si tu peut tout de même faire apparaitre un texte dans une autre partie de la cellule...
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

Discussions similaires

  1. [Lazarus] Formater le contenu d'une cellule de stringgrid en monétaire
    Par usmarshall dans le forum Lazarus
    Réponses: 3
    Dernier message: 28/01/2011, 16h25
  2. [XL-2003] fractionner une cellule en plusieurs colonnes
    Par dieyli dans le forum Excel
    Réponses: 1
    Dernier message: 21/08/2009, 19h59
  3. plusieurs lignes sur une cellule du stringgrid
    Par neuneu1 dans le forum Débuter
    Réponses: 4
    Dernier message: 06/08/2007, 22h35
  4. ajouter une cellul dans stringGrid
    Par nessing dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2007, 01h19
  5. Réponses: 6
    Dernier message: 07/11/2006, 09h23

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