IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres langages Discussion :

[OpenEdge Architect] Problème de focus sur UltraGrid


Sujet :

Autres langages

  1. #1
    Candidat au Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut [OpenEdge Architect] Problème de focus sur UltraGrid
    Bonjour,

    Je débute en technologies Progress (quelques jours...) et je suis déjà confronté à un problème que je n'aurais jamais cru pouvoir affronter après avoir trouvé ça simplissime dans d'autres technologies.

    Voilà mon problème :
    j'ai une UltraGrid et je dois changer de focus (cellule sélectionnée) lorsque j'appuie sur entrée.
    Je pense avoir trouvé la plupart des choses qui me sont utiles... sauf comment affecter le focus physiquement à la cellule. Et c'est assez problématique.
    Quelqu'un dans sa toute bonté aurait-il une piste à me donner?
    Merci.

    Voici ce qui est déjà fait :
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    /*------------------------------------------------------------------------------
    			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. /*Lignes*/
    		DEFINE VARIABLE in_Col AS INTEGER NO-UNDO. /*Colonnes*/
    	    /*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*/
    	    
    	    
    	    /* affichage du keycode de la touche pressée, à effacer après le tests.*/
    	    ASSIGN in_KC = e:KeyValue.
    	    MESSAGE "KeyCode de la touche pressée : " in_KC SKIP 
    	               "TabIndex      = " grd_Customer:TabIndex SKIP 
    	               "Index colonne = " grd_Customer:ActiveCell:Column:Index SKIP
    	               "Index ligne   = " grd_Customer:ActiveRow:Index VIEW-AS ALERT-BOX.
    	               
    	               
    	               /* C'est pas le tabIndex qui bouge*/
    	    
    	    /* KeyValue étant en lecture seule, on ne peut pas lui ré-affecter la valeur soouhaitée :
    	        ENTER = 13 / RIGHT = 39 / TAB = 9 
    	        ------> ne pas utiliser 39 dans ce cas. Si la cellule est active on n'en sort pas*/
    	    /* IF in_KC = 13 THEN e:KeyValue = 39. ----> Impossible */
    	    
    	  
            
            /*ASSIGN in_ColIndex = grd_Customer:c*/
            DEFINE VARIABLE in_indexCol AS INTEGER NO-UNDO.
            ASSIGN in_indexCol = grd_Customer:ActiveCell:Column:Index.
            ASSIGN in_indexCol = in_indexCol + 1.
     
    
    	    IF in_KC = 13 THEN
    	    
    	    
    
    
    		
    		
    		RETURN.
    
    	END METHOD.
    Merci de votre aide !
    Fichiers attachés Fichiers attachés

  2. #2
    Candidat au Club
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bon voilà ce que ça donne, au cas où quelqu'un en aurait besoin :
    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
    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.

Discussions similaires

  1. Problème de Focus sur un WindowsFormsHost.
    Par Sokhz dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 14/09/2009, 18h09
  2. Problème de Focus sur des TextBox
    Par Oberown dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/10/2008, 17h18
  3. Problème de focus sur un CDateTimeCtrl
    Par fantomchris dans le forum MFC
    Réponses: 4
    Dernier message: 15/10/2008, 15h04
  4. Problème de focus sur fenêtre d'erreur
    Par Djoul dans le forum VBScript
    Réponses: 1
    Dernier message: 08/07/2008, 17h24
  5. Problème de Focus sur un JTextField à l'ouverture de la fenêtre
    Par nicofromChina dans le forum Composants
    Réponses: 2
    Dernier message: 19/01/2007, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo