Pour l'élégance de ton code, ceci serait plus agréable :
1 2 3
| if ((Acol>=1) and (Acol<=7))
then CanSelect:=false
else canselect:=true; |
ou bien encore :
1 2 3
| if (Acol in [1,2,3,4,5,6,7])
then CanSelect:=false
else canselect:=true; |
Ou bien encore :
CanSelect:=not (Acol in [1,2,3,4,5,6,7]);
Sinon, n'oublie pas que la numérotation des colonnes s'effectue de 0 à N-1.
Donc celà suppose dans ton code que :
- tu as 8 colonnes
- et que l'on peut sélectionner la première colonne.
Sinon, pour en revenir à ta première question : comment empêcher le curseur de passer dans certaines cellules en tabulant ?
Dans la propriété Options, tu mets goTabs à false
Pour activer le passage d'une cellule à une autre avec la touche de Tabulation tu mets la propriété à true.
Ou sinon, si tu veux que ça tabule que sur la première colonne, tu code l'évènement du OnKeyDown comme ceci :
1 2 3 4 5 6 7 8 9
| procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=VK_TAB) then
begin
StringGrid1.row:=(StringGrid1.row+1) mod (StringGrid1.RowCount);
StringGrid1.col:=0;
end;
end; |
Et le code qui t'as été donné pour OnSelectCell :
1 2 3 4 5
| procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
CanSelect:=not (Acol in [1,2,3,4,5,6,7]);
end; |
Partager