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
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
je vois pas trop comment ce serait possible ... peut être en surchargeant la fonction OnPaint ... et encore !!
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 !
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 ...
Essaie de jouer avec certains parametres de cette fonction, et de changer BF_DIAGONAL pour d'autres valeurs pourquoi pas ...?
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); }
Ci joint, pour te simplifier l'affaire, la copie de l'aide au sujet de cette ch'tite fonction :
Je n'ai pas le temps la de tester un peu plus, désolé...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.
En espérant t'aider
@ +![]()
oula, c'est vraiment pas évident de comprendre tous ça!
Bonsoir,Envoyé par faten7
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...
Partager