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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| /*------------------------------------------------------------------------------
Purpose: Dans l'InitializeLayout, penser à activer une Cellule.
Si aucune cellule n'est activée, alors la fonction de tabulation avec la touche Entrée ne peut pas marcher.
Notes:
------------------------------------------------------------------------------*/
@VisualDesigner.
METHOD PRIVATE VOID grd_Customer_InitializeLayout( INPUT sender AS System.Object, INPUT e AS Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs ):
/* Déclarations des variables */
DEFINE VARIABLE in_Row AS INTEGER NO-UNDO. /*Ligne en cours*/
DEFINE VARIABLE in_indexCol AS INTEGER NO-UNDO. /* Colonne en cours */
DEFINE VARIABLE myCell AS Infragistics.Win.UltraWinGrid.UltraGridCell NO-UNDO. /* instance d'un objet Cellule pour manipulation dans la grid*/
DEFINE VARIABLE myRow AS Infragistics.Win.UltraWinGrid.UltraGridRow NO-UNDO. /* Pareil pour la */
/* INITIALISATIONS */
ASSIGN in_Row = 0.
ASSIGN in_indexCol = 0.
ASSIGN myRow = THIS-OBJECT:grd_Customer:Rows[in_Row].
ASSIGN myCell = myRow:Cells[in_indexCol].
THIS-OBJECT:grd_Customer:ActiveCell = myCell.
RETURN.
END METHOD.
/*------------------------------------------------------------------------------
Purpose: Gestion de la tabulation avec la touche entrée.
Notes:
------------------------------------------------------------------------------*/
@VisualDesigner.
METHOD PRIVATE VOID grd_Customer_KeyDown( INPUT sender AS System.Object, INPUT e AS System.Windows.Forms.KeyEventArgs ):
/* Déclarations des variables */
DEFINE VARIABLE in_Row AS INTEGER NO-UNDO. /*Ligne en cours*/
/*DEFINE VARIABLE ch_Editeur AS CHARACTER NO-UNDO.*/ /* editeur pour mettre en gras le nom de la colonne où se trouve l'index.....*/
DEFINE VARIABLE in_KC AS INTEGER NO-UNDO. /* KeyCode en numérique 0-9*/
DEFINE VARIABLE in_nbCols AS INTEGER NO-UNDO. /* Longueur de la grid dans le sens Colonnes, pour calculer le moment où il faut changer de ligne*/
DEFINE VARIABLE in_indexCol AS INTEGER NO-UNDO. /* Colonne en cours */
DEFINE VARIABLE myCell AS Infragistics.Win.UltraWinGrid.UltraGridCell NO-UNDO. /* instance d'un objet Cellule pour manipulation dans la grid*/
DEFINE VARIABLE myRow AS Infragistics.Win.UltraWinGrid.UltraGridRow NO-UNDO. /* Pareil pour la ligne*/
/* INITIALISATIONS */
ASSIGN in_nbCols = THIS-OBJECT:grd_Customer:ActiveColScrollRegion:Height.
ASSIGN in_KC = e:KeyValue.
ASSIGN in_indexCol = grd_Customer:ActiveCell:Column:Index.
ASSIGN in_indexCol = in_indexCol + 1.
ASSIGN in_Row = grd_Customer:ActiveCell:Row:Index.
/*
IF in_KC = 13 AND THIS-OBJECT:grd_Customer:*/
/* le KeyCode que retourne un ordinateur équipé de Windows quand on appuie sur Enter est = 13 */
IF in_KC = 13 THEN DO:
/* Si on se trouve sur la dernière colonne de la ligne active, il faut passer à la ligne suivante, sinon, plantage*/
IF in_indexCol = 18 THEN DO:
ASSIGN in_indexCol = 0.
ASSIGN in_row = in_row + 1.
ASSIGN myRow = THIS-OBJECT:grd_Customer:Rows[in_Row].
ASSIGN myCell = myRow:Cells[in_indexCol].
THIS-OBJECT:grd_Customer:ActiveCell = myCell.
END.
/* Tant qu'on est sur la même ligne*/
ELSE DO:
ASSIGN myRow = THIS-OBJECT:grd_Customer:Rows[in_Row].
ASSIGN myCell = myRow:Cells[in_indexCol].
THIS-OBJECT:grd_Customer:ActiveCell = myCell.
END.
END.
/*
Trucs à faire :
1 -> positionner la cellule active dans la partie visible de la fenêtre
? 2 -> vérifier le bug de la touche TAB, comment le reproduire? -> ça le fait plus.
3 -> pour le maintient de l'appli, ne pas mettre le nb de colonnes en dur, mais trouver comment on
calcule grd_Customer.Columns.Length(); ???
OK 4 -> Activer la cellule (0,0) au moment du load, sinon ça peut planter.
Ou alors activer la première cellule de la ligne active au moment où on reçoit un KeyCode 13.
5 -> Fonction de validation de la cellule saisie en fonction du retour de la BDD
*/
RETURN.
END METHOD. |
Partager