Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 01-02-2011 10:25:36

sbouvetJD  
Chasseur d'y voir ?
Lieu: LYON
Date d'inscription: 29-03-2007
Messages: 185
Pépites: 147,483,921
Banque: 13,317,684,827,902,405
Site web

Positionnement du curseur dans une zone de saisie

Bonjour,

J'aimerai lorsque l'utilisateur saisit une donnée dans un champ, proposer la solution la plus approchante, et positionner le curseur là où la saisie utilisateur se termine. Or, avec le SelectText, le curseur se positionne en fin de sélection. Une idée ?

Code: pb

...
This.setText(ls_donnee_trouvee) // ECRIT LE TEXTE CORRESPONDANT
This.SelectText(Len(ls_texte_saisi) + 1, Len(ls_donnee_trouvee) - Len(ls_texte_saisi)) // SELECTIONNE LE TEXTE EN COMPLEMENT ET POSITIONNE LE CURSEUR EN FIN DE LIGNE

Hors ligne

 

#2 01-02-2011 10:45:48

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Positionnement du curseur dans une zone de saisie

Bonjour, petite méthode de sioux, à tester.
1) tu positionnes ton curseur à la fin du texte à sélectionner (selecttext( pos_fin, 0) )
2) tu envoies un keybd_event touche shift (appui uniquement), ensuite tu envoies N fois un shift flêche gauche (appui + relâche) et enfin tu envoies un shift (relâche)

keybd_event -> http://pbadonf.fr/forum/viewtopic.php?id=32

EDIT : tu envoies N fois un flêche gauche ;)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 01-02-2011 13:19:05

sbouvetJD  
Chasseur d'y voir ?
Lieu: LYON
Date d'inscription: 29-03-2007
Messages: 185
Pépites: 147,483,921
Banque: 13,317,684,827,902,405
Site web

Re: Positionnement du curseur dans une zone de saisie

Bon, ben j'ai opté pour une solution plus visuelle :
Ma DDWN contenant mes données a l'option "Always Show List" cochée, ainsi que le "Allow Edit". En effet si je mets cette option à "No" dans ma condition "If ldwc_data.RowCount() = 1", mon RowCount() passe à 0 (?).
Sur l'évènement editchanged de ma datawindow :

Code: pb

/*****************************************************************************/
/*** EVENEMENT : dw_1.EditChanged                                          ***/
/*****************************************************************************/
DatawindowChild ldwc_data
String ls_texte

Choose Case dwo.Name
  Case "my_column"
    This.getChild("my_column", ldwc_data)
    ldwc_data.setFilter("")
    ldwc_data.Filter()
    
    ls_texte = Lower(This.getText())  // TEXTE SAISI
    
    ldwc_data.setFilter("LOWER(my_displayed_value) LIKE ~"" + ls_texte + "%~"")
    ldwc_data.Filter()
      
    If ldwc_data.RowCount() > 0 Then
      If ldwc_data.RowCount() = 1 Then
        This.setItem(row, "my_column", ldwc_data.getItemString(1, "my_bound_value"))
      End If
    End If
End Choose

Dernière modification par sbouvetJD (01-02-2011 13:19:22)

Hors ligne

 

#4 01-02-2011 14:55:06

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Positionnement du curseur dans une zone de saisie

ah avec 1 dddw -> http://pbadonf.fr/forum/viewtopic.php?pid=968#p968 (plusieurs variantes, à voir)


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 01-02-2011 15:00:31

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: Positionnement du curseur dans une zone de saisie

Bonjour,

Je pense que tu as une dddw en autoretrieve et que tu réalises une saisie sur une datawindow (form) qui elle même n'a pas fait l'objet d'un retrieve (pas d'affichage de correspondance nécessaire entre la datawindow et le dddw) . Le programme ne trouve donc pas nécessaire de faire l'autoretrieve à part si tu as besoin visuellement des données en cochant "Always Show List".

Si tu ne veux pas cocher "Always Show List", je pense qu'il faut dans ton cas forcer le retrieve de ta dddw : ldwc_data.Retrieve().

Hors ligne

 

#6 01-02-2011 15:54:31

sbouvetJD  
Chasseur d'y voir ?
Lieu: LYON
Date d'inscription: 29-03-2007
Messages: 185
Pépites: 147,483,921
Banque: 13,317,684,827,902,405
Site web

Re: Positionnement du curseur dans une zone de saisie

Oui mais du coup ça me fait un aller-retour vers la DB, pas forcément nécessaire... Je vais voir la réaction de l'utilisateur final (je fais tester la version alpha cette semaine)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22