Gambas France BETA


Pas de compte ? Incription

gridview cell et border

Ce sujet est résolu.

1
AuteurMessages
Gambette#1 Posté le 24/11/2016 à 19:14:50
Bonjour,

j'aimerai mettre une bordure sur la cellule sélectionnée d'un Gridview.
j'ai essayé :
Gridview[irow, icol].Border = true
Gridview[irow, icol].Border = Border.etched

Mais j'ai une erreur en retour.

Une âme charitable pour me guider ?

Merci.
Patrick#2 Posté le 25/11/2016 à 10:47:35
Bonjour Gambette,
Dans l'aide :

GridView_Cell.Border (gb.qt4)
Property Border As Border

Il suffit donc de rajouter un "." a Gridview[irow, icol].Border pour avoir un tas de fonctions complémentaires.
Je n'en ai pas eu besoin jusqu’à maintenant, je n'ai donc pas testé comment ça fonctionne ...

Bonne journée.
Gambette#3 Posté le 25/11/2016 à 12:15:30
Bonjour Patrick,

merci pour ta réponse.

J'ai déjà testé ce que tu me dis bien que je ne l'ai pas mis dans ma demande
Gridview[row, column].Border.etched me renvoie une erreur
Gridview[row, column].Border.etched = true me renvoie aussi une erreur

J'ai essayé un peu dans tous les sens mais j'ai une erreur à chaque fois.

Une autre idée SVP ?
linuxos#4 Posté le 25/11/2016 à 14:09:03
Un peu de sel, de poivre et la crevette sera... Bonjour Gambette,


L'option Border attends un numero comme ceci:

Gridview[row, column].Border = Border.Etched

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
Patrick#5 Posté le 25/11/2016 à 14:10:35
voila quelque chose qui à l'air de fonctionner :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PUBLIC SUB Form_Open()

DIM i, j AS INTEGER
DIM brd AS Border

brd = NEW Border
brd.Color = Color.Red

GridView1.Mode = Select.Multiple
GridView1.Columns.Count = 10
GridView1.Rows.Count = 10
FOR i = 0 TO 9
FOR j = 0 TO 9
GridView1[i, j].Text = i + j
NEXT
NEXT
GridView1[1, 1].Border = brd


END
didier18#6 Posté le 25/11/2016 à 15:06:05
Bonjour

Peut être un truc comme ça :
1
2
3
4
5
6
WITH GridView1
.Rows.Count = 3
.Columns.Count = 5
END WITH
GridView1[1, 1].Text = "toto"
GridView1[1, 1].Border = Border(0)


ce qui donne :



Bonne journée.
vuott#7 Posté le 25/11/2016 à 16:17:36
Ne cedere ineluctabili possimusTrés bien, Patrick !

J'avais contacté Minisini sur ce sujet. Voilà sa réponse:

" GridView1[0, 0].Border = New Border("border css-like syntax") or just Border(...), as the Border class implements the _call() special method.

Random example :


GridView1[0, 0].Border = Border("margin:4;width:4;left-style:none;left-margin:0;left-width:0;top-right-radius:24;right-color:green")

The name of the style properties comes from the names of the Border class properties.

--
Benoît Minisini
"


Je signale cette page aussi:
http://gambas.8142.n7.nabble.com/The-new-Border-class-td50110.html

« Vita non suavis esse potest, nec Mors amara. »
Gambette#8 Posté le 26/11/2016 à 10:42:58
Bonjour à tous et merci pour vos réponses.
C'est très intéressant car grâce à cette classe entièrement paramétrable on peut faire ce que l'on veut. Merci Benoit.
J'émettrai cependant un petit bémol car l'utilisation de cette classe est un peu compliquée.
J'aurai aimé pouvoir utiliser quelque-chose comme "Gridview[irow, icol].Border = Border.etched" ou bien "Gridview[irow, icol].Border = Border.none" comme on le fait pour les autres forms.
Mais peut-être que Benoit a ses raisons de faire comme ça.

Merci encore et bon week-end à vous.

Jack.
davidmue#9 Posté le 26/11/2016 à 11:43:17
Salut à tous,
Gambette propose une amélioration à savoir créer des méthodes statiques etched, none, etc. dans la classe Border.
Je vote pour !
Question :
Sur le fond, comment participer ? Existe-il un lien avec une explication ? Mille mercis !
David
Gambas.. C'est chouette !
Patrick#10 Posté le 26/11/2016 à 14:08:00
Oui et non Gambette, avec le code ci-dessous on se rend compte que toutes les cases bleues sont passées au vert en 1 seule instruction. Ça laisse entrevoir pleins de possibilités.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
PUBLIC SUB Form_Open()

DIM i, j AS INTEGER
DIM coulr, coulb AS NEW Border

coulr.Color = Color.Red
coulb.Color = Color.Blue

GridView1.Columns.Count = 10
GridView1.Rows.Count = 10
FOR i = 0 TO 9
FOR j = 0 TO 9
GridView1[i, j].Text = i + j
IF i + j < 10 THEN
GridView1[i, j].Border = coulr
ELSE
GridView1[i, j].Border = coulb
ENDIF
NEXT
NEXT

coulb.Color = Color.Green
END
Gambette#11 Posté le 26/11/2016 à 14:33:41
Bien joué Patrick,

en fait la classe est instanciable. Ta réponse répond bien à mes besoins. Je clos le sujet.
Merci
gambix#12 Posté le 22/12/2016 à 21:54:14
Faire simple !
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
' Gambas class file


PUBLIC SUB Form_Open()

GridView1.Rows.Count = 15
GridView1.Columns.Count = 2
GridView1.Columns[0].Width = 100
GridView1.Rows.Border = Border("width:2;margin:5;radius:10;bottom-right-radius:0")
END


PUBLIC SUB GridView1_Data(Row AS INTEGER, Column AS INTEGER)

IF Column = 0 THEN
LAST.Data.BackGround = Color.LightGray
LAST.Data.Text = "Ligne " & row
ENDIF


END
Moins de texte dans une signature c'est agrandir son espace.
1