Cellule StringGrid en mode édition

senv Messages postés 18 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 6 septembre 2015 - 24 févr. 2010 à 16:03
 Utilisateur anonyme - 26 févr. 2010 à 14:36
Bonjour,

Je voudrais que le curseur pour éditer du texte vienne se placer dans une cellule spécifique d'un stringGrid après un clic sur un bouton et ainsi éviter de sélectionner la cellule et recliquer dessus pour l'éditer.

En fait, la cellule spécifique concerne la dernière ligne ajoutée et une colonne qui sera toujours la même. Existe-t-il un moyen de connaître la dernière ligne ajoutée dans le stringGrid et de garder le curseur dessus sachant qu'à chaque ajout, la grille est triée alphabétiquement aussitôt après selon une colonne. (Donc la dernière ligne de la grille n'est pas forcément la dernière ligne ajoutée).

Apparemment il faut utiliser les options goEditing et goAlwaysShowEditor...

Mais comment dois-je m'y prendre pour que, lorsque je clique sur le bouton "ajouter" (qui ajoute une ligne dans le stringGrid), à la ligne ajoutée et à une colonne donnée, la cellule passe en mode édition ?

J'ai essayé de rajouter le code suivant à la suite du code du bouton :

GrilleSaisieProjet.Options:=GrilleSaisieProjet.Options+[goEditing,goAlwaysShowEditor];


mais je dois mal l'utiliser

Pouvez-vous m'aider s'il vous plaît ?

3 réponses

Utilisateur anonyme
25 févr. 2010 à 10:31
Salut

Citation de l'aide de Delphi (Touche F1 )


Spécifie divers paramètres d'affichage et de comportement de la grille.

type

TGridOption = (goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking);

TGridOptions = set of TGridOption;

property Options: TGridOptions;

Description

Affectez une valeur à la propriété Options pour définir les paramètres souhaités de la grille. Options est un ensemble pouvant contenir les valeurs suivantes :

Valeur Signification

goFixedVertLine Des traits verticaux sont dessinés pour séparer les colonnes figées de la grille.
goFixedHorzLine Des traits horizontaux sont dessinés pour séparer les lignes figées de la grille.
goVertLine Des traits verticaux sont dessinés pour séparer les colonnes mobiles de la grille.
goHorzLine Des traits horizontaux sont dessinés pour séparer les lignes mobiles de la grille.
goRangeSelect Les utilisateurs peuvent sélectionner en une seule fois une plage de cellules. L'indicateur goRangeSelect n'est pas pris en compte si Options inclut goEditing.

goDrawFocusSelected La cellule détenant la focalisation d'entrée est dessinée avec une couleur de mise en évidence particulière, comme les cellules sélectionnées ne détenant pas la focalisation. Si goDrawFocusSelected n'est pas activé, la cellule détenant la focalisation se distingue par un rectangle de focalisation et non par une couleur d'arrière-plan particulière.
goRowSizing Les lignes mobiles peuvent être redimensionnées individuellement.
goColSizing Les colonnes mobiles peuvent être redimensionnées individuellement.

goRowMoving Les lignes mobiles peuvent être déplacées en utilisant la souris.
goColMoving Les colonnes mobiles peuvent être déplacées en utilisant la souris.
goEditing Les utilisateurs peuvent éditer le contenu des cellules. Si goEditing est inclus dans Options, goRangeSelect n'a aucun effet.
goTabs Les utilisateurs peuvent parcourir les cellules de la grille en utilisant Tab et Maj+Tab.
goRowSelect Des lignes entières sont sélectionnées et pas des cellules individuelles. Si goRowSelect est inclus dans Options, goAlwaysShowEditor n'a aucun effet.

goAlwaysShowEditor La grille est verrouillée en mode modification. L'utilisateur n'a pas besoin d'utiliser Entrée ou F2 pour inverser EditorMode. Si Options n'inclut pas goEditing, goAlwaysShowEditor n'a aucun effet. Si Options inclut goRowSelect, goAlwaysShowEditor n'a aucun effet.
goThumbTracking L'image de la grille est actualisée quand l'utilisateur fait glisser le curseur de défilement. Si goThumbTracking n'est pas inclus, l'image ne s'actualise que lorsque l'utilisateur relâche le curseur à une nouvelle position.


Je ne vois pas ou tu as pu lire que goEditing ou goAlwaysShowEditor te permettent de faire une telle chose.

La seule façon de le faire est de créer une variable globale à laquelle tu assignes l'index de la ligne ajoutée, valeur qui devra être modifiée dans ta procédure de trie. A chaque clique de ton bouton, tu n'aura qu'a sélectionner la ligne dont l'index correspond à ta variable
0
senv Messages postés 18 Date d'inscription lundi 15 janvier 2007 Statut Membre Dernière intervention 6 septembre 2015
26 févr. 2010 à 10:18
déjà, merci de me consacrer du temps.

Je ne vois pas ou tu as pu lire que goEditing ou goAlwaysShowEditor te permettent de faire une telle chose.


ici :
goAlwaysShowEditor La grille est verrouillée en mode modification. L'utilisateur n'a pas besoin d'utiliser Entrée ou F2 pour inverser EditorMode. Si Options n'inclut pas goEditing, goAlwaysShowEditor n'a aucun effet.


actuellement j'arrive à sélectionner automatiquement la cellule que je veux éditer mais je voudrais qu'elle passe automatiquement en mode édition pour que je saisisse du texte sans avoir à cliquer auparavant dessus.

sauriez-vous me dire comment faire s'il vous plaît ?
0
Utilisateur anonyme
26 févr. 2010 à 14:36
Salut,

Je cite ta question :

Existe-t-il un moyen de connaître la dernière ligne ajoutée dans le stringGrid et de garder le curseur dessus sachant qu'à chaque ajout, la grille est triée alphabétiquement aussitôt après selon une colonne.


GoEditing et GoAlwaysShowEditor ne te permettent pas de sélectionner la dernière ligne ajoutée (Surtout que cette dernière est triée) :


Pour GoEditing

Les utilisateurs peuvent éditer le contenu des cellulesquote] Ainsi GoEditing te permet d'éditer l'ensemble des cellules de ton StringGrid mais pas uniquement la cellule sélectionnée. Mais cela n'induit aucunement que la dernière cellule ajoutée sera automatiquement sélectionnée.


Pour goAlwaysShowEditor

[quote]La grille est verrouillée en mode modification.
Donc rien avoir avec une quelconque sélection.

Une piste ? Je t'en ai donné une . Mais en regardant de plus près la bète tu as déjà 99% des outils à ta disposition


1)Définir une variable globale :

Index_ColCell_Adding,Index_RowCellAdding:Integer;

2)
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
begin
  Index_ColCell_Adding:=ACol;
  Index_RowCellAdding:=ARow;
end;


Quand on ajoute ou modifie le contenu d'une cellule on définit sa ligne et sa colonne.

3)
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  Index_ColCell_Adding:=ACol;
  Index_RowCellAdding:=ARow;
end;


Quand on sélectionne une cellule on définit sa ligne et sa colonne.

4)
procedure TForm1.StringGrid1RowMoved(Sender: TObject; FromIndex,
  ToIndex: Integer);
begin
  Index_RowCellAdding:=ToIndex;
end;



5)
procedure TForm1.StringGrid1ColumnMoved(Sender: TObject; FromIndex,
  ToIndex: Integer);
begin
begin
  Index_ColCellAdding:=ToIndex;
end;



6)
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  StringGrid1.Row:=Index_RowCellAdding;
  StringGrid1.Col:=Index_ColCellAdding;
end;
0