Bonjour à tous,
Comment faire sur une XStringGrid qui contient x colonnes pour protéger 1 colonne précise en écriture ? Les autres étant ouverte en écriture...
Merci
a+
Bonjour à tous,
Comment faire sur une XStringGrid qui contient x colonnes pour protéger 1 colonne précise en écriture ? Les autres étant ouverte en écriture...
Merci
a+
Salut
Je ne connais pas ce composant, mais si il dérive d'un TStringGrid tu dois avoir accès à l'évènement OnSelectCell qui te permettra d'accepter/interdire la sélection d'une cellule d'une colonne particulière.
Dans le cas contraire il existe certainement un évènement ou propriété similaire.
@+ Claudius
"l'évènement OnSelectCell qui te permettra d'accepter/interdire la sélection d'une cellule d'une colonne particulière"
Comment fais-tu pour interdire ou accepter la sélection d'une cellule d'une colonne ?
Je change avec true / false la valeur de CanSelect mais ça ne marche pô...
Re,
Un exemple:
Ceci interdit la sélection des cellules de la 1° colonne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TForm1.XStringGrid1SelectCell(Sender: TObject; Col, Row: Longint; var CanSelect: Boolean); begin CanSelect := (Col > 0); end;
@+
je n'y arrive pas.
voici mon événement OnSelectCell :
j'ai essayé de mettre directement true ou false dans le CanSelect mais je peux toujours sélectionner ma cellule et y saisir des infos...
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
17
18
19
20
21
22
23
24
25
26
27
28 procedure XStringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); var i : integer; str1, str2 : string; begin if(ACol = -1)then exit; for i := 0 to XStringGrid1.ColCount-1 do begin str1 := StrReplace(' ', '', XStringGrid1.Cells[ACol,0]); str2 := StrReplace(' ', '', tab[i].name); if(str1 = str2) then begin if(tab[i].read_only = 1)then begin CanSelect := (ACol > 0); break; end else begin CanSelect := not (ACol > 0); break; end; end; end; end;
Salut
J'ai du mal à saisir ce que fait ton code.
Je pense que le problème viens du fait que tu fais une boucle
Cette boucle est-elle nécessaire ? Ne suffit-il pas de comparer la cellule en question (ACol) avec Tab[ACol].ReadOnly ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 for i := 0 to XStringGrid1.ColCount-1 do
@+ Claudius
Partager