Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

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 05-09-2006 11:45:50

Jmix90  
Fils caché du concombre masqué
Award: ccm
Lieu: palaiseau
Date d'inscription: 02-07-2006
Messages: 50
Pépites: 7,739
Banque: 1,524,736,884,608,251
Site web

[SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Bonjour,


C'est Un user Event qui va trouver des solutions dans la table pour les proposé à l'utilisateur. Cela fonctionne comme la barre d'adresse d'IE ou Firefox...
La partie proposée est mise en surbrillance.

En éspérant que ca serve à quelqu'un.

Si on peut l'adapter sous forme de Fonction je veux bien qu'on m'explique !

Voila le code de l'event:

Code: pb

//------------------------------------------------------------------------------------- 
//  FUNCTION:           ue_propose_solution_dddw
//
//  DESCRIPTION:        Propose des solutions a l'utilisateur dans une DDDW 
//                                en fonction du texte déjà entré...
//
//  VARIABLES:          ls_colonne_parent_nom        - nom de la colonne en cours dans la DW parent
//                      ls_colonne_fils_nom          - nom de la colonne en cours dans la DW fille   
//                      ls_colonne_fils_type         - Type de valeur dans la DDDW en cours
//                ls_txt_utilisateur           - Texte entré par l'utilisateur
//                ls_txt_trouve                - Solution trouvé dans la table
//                ll_row                - Ligne ou se trouve la 1ere solution trouvée
//                dwc_liste                    - Pointeur vers la DDDW visée
//
//  RETURNS:            
//
//  AUTHOR:            
//------------------------------------------------------------------------------------- 


String ls_colonne_parent_nom,ls_colonne_fils_nom,ls_colonne_fils_type,ls_txt_utilisateur,ls_txt_trouve
long ll_row
DataWindowChild dwc_liste


//Récupère le nom de la colonne courante 
ls_colonne_parent_nom = This.getcolumnname()

//On vérifie que l'on est bien dans un DDDW
IF dw_fiche_info.getChild(ls_colonne_parent_nom,dwc_liste)=1 THEN
  
  //Récupère le nom et le type de la colonne courante dans le DDDW
  ls_colonne_fils_nom = This.describe(ls_colonne_parent_nom + ".dddw.DisplayColumn")
  ls_colonne_fils_type = dwc_liste.describe(ls_colonne_fils_nom + ".coltype")
  
  //On ne traite que les DDDW de type "char"
  IF left(ls_colonne_fils_type,4)="char" THEN
    
    IF  trim(This.GetText()) ="" THEN return 
    
    //On récupère le texte entré par l'utilisateur - pas le texte en surbrillance
    ls_txt_utilisateur = trim(left(This.GetText(), len(This.GetText()) - This.selectedlength()))
    
    messagebox("cool","cool1")
    //On recherche le texte dans la DDDW
    ll_row=dwc_liste.Find( ls_colonne_fils_nom +" LIKE '" +ls_txt_utilisateur +"%'", 1, dwc_liste.RowCount())
    
    //On va afficher la solution en mettant en surbrillance le texte proposé, permettant à l'utilisateur de modifier la partie proposée
    IF ll_row > 0 THEN
      ls_txt_trouve= dwc_liste.GetItemString(ll_row,ls_colonne_fils_nom)
      This.setText(ls_txt_trouve)
      This.SelectText(Len(ls_txt_utilisateur)+1, Len(ls_txt_trouve))
      dwc_liste.scrolltorow (ll_row)
      dwc_liste.selectrow (ll_row,TRUE)
    END IF
    
  END IF
END IF

Je l'utilise avec l'event d'ID pbm_dwnkey avec ce code :

Code: pb

IF Key <> KeyBack! AND Key <> keyEnter! THEN This.Event ue_propose_solution_dddw()

Voila un petit exemple de ce que ca donne, j'ai tapé "ISA" et la DDDW me propose "ISAAC ASIMOV" :

http://img233.imageshack.us/img233/1532/exemple01nt0.jpg

Dernière modification par Jmix90 (05-09-2006 12:15:32)


Jmix 90
Webmaster/Codeur junior
Trucs et astuces informatiques: http://www.lexique-du-net.com!

Hors ligne

 

#2 05-09-2006 11:49:31

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Mais, tres bonne initiative !!!!!


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#3 03-10-2006 14:33:35

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

'lut

J'ai essayé ce petit bout de code et tout ne fonctionne pas comme il faudrait

Quand je saisis une lettre dans ma dropdown, j'ai bien le premier mot trouvé qui s'affiche et le reste des lettres qui est sélectionné mais le curseur se met à la fin du mot donc quand je saisis une nouvelle lettre, ça écrit à la fin du mot

Hors ligne

 

#4 03-10-2006 14:41:53

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Jmix90 : cool, tres bonne idée et merci.

Steph, on attends ta correction

Dernière modification par shahin (03-10-2006 14:42:13)


never let people work on more than one thing at once.

Hors ligne

 

#5 03-10-2006 15:10:35

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Ca doit venir du ID pbm_dwnkey que je pige pas

Est-ce qu'il faut affecter cet ID à l'événement "ue_propose_solution_dddw" ou utiliser un événement existant qui possède cet ID (comme key) ?

*** EDIT 1 ***
En fait, j'ai une fenêtre qui contient une datawindow et ma dropdown est dans cette datawindow. Et le seul événement avec l'ID pbm_dwnkey est le key sur la fenêtre mais je ne peux pas récupérer les lettres tapées sur la datawindow

*** EDIT 2 ***
Bon, j'ai crée un événement avec l'ID pbm_dwnkey mais ça marche toujours pas au top
Quand je lance l'appli en mode debug, ça marche bien mais dès que je lance en mode normal, ça déconne
Je saisis une lettre et rien ne se passe par contre si après je tape sur la flèche droite, le mot s'affiche.

Dernière modification par Steph (03-10-2006 15:43:02)

Hors ligne

 

#6 04-10-2006 21:41:51

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Voici ma correction... A tester ! 

Code: pb

//------------------------------------------------------------------------------------- 
//  FUNCTION:           ue_propose_solution_dddw
//
//  DESCRIPTION:        Propose des solutions a l'utilisateur dans une DDDW 
//                                en fonction du texte déjà entré...
//
//  VARIABLES:          ls_colonne_parent_nom        - nom de la colonne en cours dans la DW parent
//                      ls_colonne_fils_nom          - nom de la colonne en cours dans la DW fille   
//                      ls_colonne_fils_type           - Type de valeur dans la DDDW en cours
//                                ls_txt_utilisateur           - Texte entré par l'utilisateur
//                                ls_txt_trouve                - Solution trouvé dans la table
//                                ll_row                              - Ligne ou se trouve la 1ere solution trouvée
//                                dwc_liste                    - Pointeur vers la DDDW visée
//
//  RETURNS:            
//
//  AUTHOR:            
//------------------------------------------------------------------------------------- 


String ls_colonne_parent_nom,ls_colonne_fils_nom,ls_colonne_fils_type,ls_txt_utilisateur,ls_txt_trouve
long ll_row
DataWindowChild dwc_liste


//Récupère le nom de la colonne courante 
ls_colonne_parent_nom = This.getcolumnname()

//On vérifie que l'on est bien dans un DDDW
IF this.getChild(ls_colonne_parent_nom,dwc_liste)=1 THEN
    
    //Récupère le nom et le type de la colonne courante dans le DDDW
    ls_colonne_fils_nom = This.describe(ls_colonne_parent_nom + ".dddw.DisplayColumn")
    ls_colonne_fils_type = dwc_liste.describe(ls_colonne_fils_nom + ".coltype")
    
    //On ne traite que les DDDW de type "char"
    IF left(ls_colonne_fils_type,4)="char" THEN
        
        IF    trim(This.GetText()) ="" THEN return 
        
        //On récupère le texte entré par l'utilisateur - pas le texte en surbrillance
        ls_txt_utilisateur = trim(left(This.GetText(), len(This.GetText()) - This.selectedlength()))
        
        //On recherche le texte dans la DDDW
        ll_row=dwc_liste.Find( ls_colonne_fils_nom +" LIKE '" +ls_txt_utilisateur +"%'", 1, dwc_liste.RowCount())
        
        //On va afficher la solution en mettant en surbrillance le texte proposé, permettant à l'utilisateur de modifier la partie proposée
        IF ll_row > 0 THEN
            ls_txt_trouve= dwc_liste.GetItemString(ll_row,ls_colonne_fils_nom)
            This.setText(ls_txt_trouve)
            This.SelectText(Len(ls_txt_utilisateur)+1, Len(ls_txt_trouve))
            dwc_liste.scrolltorow (ll_row)
            dwc_liste.selectrow (ll_row,TRUE)
        END IF
        
    END IF
END IF

et dans l'evenement EDITCHANGED de la datawindow

Code: pb

integer li_asci

FOR li_asci = 65 to 90
  IF KeyDown(li_asci) THEN
    This.PostEvent ("ue_propose_solution_dddw")
    EXIT
  END IF
NEXT

FOR li_asci = 48 to 57
  IF KeyDown(li_asci) THEN
    This.PostEvent ("ue_propose_solution_dddw")
    EXIT
  END IF
NEXT

IF keydown(keyNumPad0!) OR keydown(keyNumPad1!) OR keydown(keyNumPad2!) OR&
  keydown(keyNumPad3!) OR keydown(keyNumPad4!) OR keydown(keyNumPad5!) OR&
  keydown(keyNumPad6!) OR  keydown(keyNumPad7!) OR keydown(keyNumPad8!) OR&
  keydown(keyNumPad9!) THEN
  This.PostEvent ("ue_propose_solution_dddw")
END IF

Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#7 05-10-2006 12:39:15

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Marche pas mieux

Ce que je trouve bizarre c'est quand on tape la 2ème lettre, le programme entre 2 fois dans l'événement EDITCHANGED.
Le premier coup avec la 1ère lettre saisie et le deuxième coup avec le mot complet trouvé et on donc ça rajoute la 2ème lettre à la fin du mot


Est-ce qu'il existe une fonction PB permettant de transformer un int en sa représentation ascii ??
Genre 65 en A.

Hors ligne

 

#8 05-10-2006 12:42:46

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

bizarre, car ca marche tres bien chez moi...
autant sous pb6.5 que pb7



tu l'as fait sur une datawindow simple ou héritée ?
car s'il y a d'autres scripts, la...


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#9 05-10-2006 13:06:44

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Ma fenêtre est héritée d'une autre.
La datawindow est une datawindow héritée mais l'ancêtre n'a pas de code sur l'EDITCHANGED
Dessus, j'ai des champs ainsi que des dropdown.

Elle ressemble à ça :
http://img246.imageshack.us/img246/848/datawindowcv7.th.jpg

Dernière modification par Steph (05-10-2006 13:13:49)

Hors ligne

 

#10 05-10-2006 13:20:57

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

essayes de faire le test sur une fenetre non héritée, et une datawindow non héritée.
moi,c'est ce que j'ai fait.


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#11 05-10-2006 13:38:30

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Bon je dois rater quelque chose parce que ça n'a pas l'air de marche non plus
Quand je saisie la 1ère lettre, ça fonctionne mais dès la 2ème, ça m'affiche le 1er mot de la liste

Bon, je vais reprendre depuis le début.

*** EDIT ***
Le user event, il doit être mis où ? Dans la fenêtre ? dans la datawindow ? ...

Dernière modification par Steph (05-10-2006 14:42:23)

Hors ligne

 

#12 05-10-2006 16:21:20

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

dans la datawindow...

voila un exemple  ici
comme ca, tu pourras voir par toi meme...

A++


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#13 06-10-2006 08:24:51

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Merci

J'ai fait pareil mais ça marche toujours pas
Je sèche...tant pis

Hors ligne

 

#14 06-10-2006 08:30:24

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

ce qui voudrait dire que suivant les differentes versions de pb, ca ne reagit pas pareil ?
c'est fou ca !
si d'autres personnes peuvent confirmer avec leur version de powerbuilder...  merci d'avance


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#15 06-10-2006 08:41:41

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Je me suis p'tet mal exprimé mais avec ta fenêtre ça fonctionne bien.
Je dois avoir quelque chose qui pose problème dans ma datawindow.

Est-ce que le fait d'avoir 2 champs (le nom et l'identifiant) dans la requête de ma dropdown peut foutre le bordel ?

*** EDIT 1 ***
Dans ta fenêtre, au lieu d'appeler ta dropdown (dddw_nom), j'appelle la mienne et ça ne fonctionne pas. J'en déduis que soit ma dropdown est foireuse, soit le fait d'avoir 2 champs dans la requête pose problème.

*** EDIT 2 ***
J'ai refait une dropdown à partir de ma table mais avec un seul champ et ça fonctionne.
Donc , je confirme que ça ne fonctionne pas quand on a plusieurs champs dans la requête de la dropdown

Dernière modification par Steph (06-10-2006 08:49:15)

Hors ligne

 

#16 06-10-2006 08:57:55

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

je confirme que cela fonctionne bien !
je l'ai fait avec 2 champs.

Il faut juste que le champ soit un varchar() et nom un id.
mais dans la dddw, tu peux afficher plusieurs colonnes. ca ne pose pas de probleme.

comment est construit ta datawindow et la datawindow dddw ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#17 06-10-2006 09:08:04

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

La dddw est une requête simple (d_dddw_liste_produit) :

Code: sql

SELECT "DB_PRODUIT"."LB_LONG", "DB_PRODUIT"."IS_PRODUIT"
FROM    "DB_PRODUIT"  
ORDER BY "DB_PRODUIT"."LB_LONG" ASC  



J'ai une table qui a l'IS_PRODUIT en clé secondaire.
Après j'ai créé une datawindow avec tous les champs de cette table et pour le champ produit, je fais une dropdown à partir de d_dddw_liste_produit et j'ai mis lb_long dans display column et is_produit dans data column.

Hors ligne

 

#18 06-10-2006 09:12:13

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

voila pourquoi ca ne fonctionne pas...
il faut que la jointure entre la colonne et la dddw soit un libellé char et non un id_long...
à ce qu'il me semble...


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#19 06-10-2006 09:19:51

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Oui mais moi ma jointure ne se fait pas par un varchar...donc je vais pas pouvoir utiliser ce truc
Ou alors en trouvant une parade

En tout cas, merci de tes recherches.
Si t'étais pas l'admin, je t'aurais donné des pépites :D

Ca me parait bizarre quand même
Pourquoi ça marche bien avec la première lettre et pas avec les autres.
Je pense qu'il y a un autre problème, à partir de la 2ème lettre, il passe 2 fois dans l'événement et je pense que c'est ça qui fout la pagaille.

Dernière modification par Steph (06-10-2006 09:32:03)

Hors ligne

 

#20 11-10-2006 15:24:54

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Bon, j'ai trouvé une bidouille qui à l'air de faire fonctionner le bordel avec ma dropdown

Donc, dans le EDITCHANGED de la datawindow :

Code: pb

Integer li_asci

IF li_test = 1 THEN
  // Lettres A à Z
  FOR li_asci = 65 to 90
    IF KeyDown(li_asci) THEN
      This.PostEvent ("ue_propose_solution_dddw")
      EXIT
    END IF
  NEXT

  // Chiffres 0 à 9
  FOR li_asci = 48 to 57
    IF KeyDown(li_asci) THEN
      This.PostEvent ("ue_propose_solution_dddw")
      EXIT
    END IF
  NEXT

  // Chiffres 0 à 9 du pavé numérique + caractères spéciaux (espace, -, *, (, ), +, /, ., ', ")
  IF KeyDown(KeyNumPad0!)  OR KeyDown(KeyNumPad1!)  OR KeyDown(KeyNumPad2!)  OR &
    KeyDown(KeyNumPad3!)  OR KeyDown(KeyNumPad4!)  OR KeyDown(KeyNumPad5!)  OR &
    KeyDown(KeyNumPad6!)  OR KeyDown(KeyNumPad7!)  OR KeyDown(KeyNumPad8!)  OR &
    KeyDown(KeyNumPad9!)  OR KeyDown(KeySpaceBar!) OR KeyDown(KeyDash!)     OR &
    KeyDown(KeySubtract!) OR KeyDown(Key8!)        OR KeyDown(KeyMultiply!) OR &
    KeyDown(Key0!)        OR KeyDown(Key9!)        OR KeyDown(KeyEqual!)    OR &
    KeyDown(KeyAdd!)      OR KeyDown(KeySlash!)    OR KeyDown(KeyDivide!)   OR &
    KeyDown(KeyPeriod!)   OR KeyDown(KeyDecimal!)  OR KeyDown(KeyQuote!) THEN
    This.PostEvent ("ue_propose_solution_dddw")
  END IF

  li_test = 2
END IF

Créer un événement sur la datawindow avec le EVENT ID : pbm_dwnkey et mettre

Code: pb

li_test = 1

L'événement ue_propose_solution_dddw est identique à la version de base (voir posts précédents)

Ne pas oublier de déclarer li_test dans les variables d'instances

Par contre, j'ai rajouté des caractères spéciaux pour la saisie mais la recherche ne fonctionnent pas pour certains et je trouve pas pourquoi :
* : celui près de la touche entrée (celui du pavé numérique fonctionne bien)
'  : l'apostrophe
espace : quand je tape espace, le caractère n'est même pas ajouté dans le champ et donc on peut pas continuer la saisie.

Dernière modification par Steph (11-10-2006 15:25:55)

Hors ligne

 

#21 16-10-2006 15:10:26

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Personne n'a une idée pour mes caractères qui ne fonctionnent pas ??

* : celui près de la touche entrée (celui du pavé numérique fonctionne bien)
'  : l'apostrophe
espace : quand je tape espace, le caractère n'est même pas ajouté dans le champ et donc on peut pas continuer la saisie (sauf si on tape un autre caractère bien sûr ;))

Hors ligne

 

#22 17-10-2006 08:14:17

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

Il me semble qu'il existe un exemple de codage de ce genre, dans C:\Program Files\Sybase\PowerBuilder xxx\Code Examples\Example App

A toi de trouver le code....
Je ferai un peu de recherche, dès que j'aurai un peu plus de temps.

A+


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#23 17-10-2006 09:47:39

Steph  
crazy gamer
Lieu: Paris
Date d'inscription: 08-09-2006
Messages: 154
Pépites: 99,825
Banque: 11,934,987,430,796,550

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

J'ai commencé à jeter un oeil mais pour le moment je trouve pas grand chose qui correspond.

Hors ligne

 

#24 17-10-2006 21:37:22

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

peut-etre "w_select_from_list" ?


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

#25 18-10-2006 14:25:30

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [SOURCE] Proposer des solutions a l'utilisateur dans une DDDW ...

essayes cette solution !

importe ce fichier , c'est un user datawindow

Code: pb

$PBExportHeader$u_basedw.sru
forward
global type u_basedw from datawindow
end type
end forward

type us_ddkeysrch from structure
    string textcol
    datawindowchild dw
    string srchcol
    string datacol
    string prevtext
end type

global type u_basedw from datawindow
int Width=494
int Height=361
int TabOrder=1
boolean LiveScroll=true
event ue_ddkeysrch pbm_custom01
event ue_dwnkey pbm_dwnkey
end type
global u_basedw u_basedw

type variables
Protected:
   us_ddkeysrch istr_ddkeysrch[]
   boolean ib_ddkeysrch = false
   integer  ii_ddkeysrch_cnt
end variables

forward prototypes
public subroutine uf_ddkeysrch ()
public subroutine uf_setddkeysrch (string vs_textcol, string vs_srchcol, string vs_datacol)
end prototypes

on ue_ddkeysrch;if ib_ddkeysrch then uf_DDKeySrch()
end on

on ue_dwnkey;this.PostEvent("ue_ddkeysrch")
end on

public subroutine uf_ddkeysrch ();string  ls_col, ls_srch, ls_found
integer  li_idx, li_len
long    ll_row, ll_found
date    ld_found
datetime  ldt_found
time    lt_found

Yield()

/************************/
/* Ignore movement keys */
/************************/
CHOOSE CASE true
  CASE KeyDown(keyDelete!), KeyDown(keyBack!), KeyDown(keyTab!), KeyDown(keyEnter!)
    return
  CASE KeyDown(keyDownArrow!), KeyDown(keyUpArrow!), KeyDown(keyLeftArrow!), KeyDown(keyRightArrow!)
    return
END CHOOSE

/***************************************************************************************/
/* Since multiple columns could be setup for dynamic key searching, there is an array  */
/* of the columns currently setup. Search the array for the entry that matches the    */
/* current column.                                              */
/***************************************************************************************/
ls_col = this.GetColumnName()
FOR li_idx = 1 TO ii_ddkeysrch_cnt
  if istr_ddkeysrch[li_idx].textcol = ls_col then
    /******************************************************************/
    /* Get the typed value from the edit box and find a match for it  */
    /* in the dropdown list.                            */
    /******************************************************************/
    ls_srch = Lower(this.GetText())
    li_len  = Len(ls_srch)
    if li_len < 1 then Return
    ll_row = istr_ddkeysrch[li_idx].dw.Find("lower(left(" &
        + istr_ddkeysrch[li_idx].srchcol + ", " + String(li_len) &
        + ")) = '" + ls_srch + "'", 1, istr_ddkeysrch[li_idx].dw.RowCount())
    if ll_row < 1 then Return

    /*************************************************************************************/
    /* Find the datatype of the data column in the dddw. Use the correct GetItem... call */
    /* to retrieve the value and then use SetText to place it in the edit box.         */
    /*************************************************************************************/
    CHOOSE CASE True
      CASE Left(istr_ddkeysrch[li_idx].dw.Describe(istr_ddkeysrch[li_idx].datacol + ".coltype"), 4) = "char"
        ls_found = istr_ddkeysrch[li_idx].dw.GetItemString(ll_row, istr_ddkeysrch[li_idx].datacol)
        this.SetText(ls_found)
      CASE istr_ddkeysrch[li_idx].dw.Describe (istr_ddkeysrch[li_idx].datacol + ".coltype") = "number"
        ll_found = istr_ddkeysrch[li_idx].dw.GetItemNumber(ll_row, istr_ddkeysrch[li_idx].datacol)
        this.SetText(String (ll_found))
      CASE istr_ddkeysrch[li_idx].dw.Describe (istr_ddkeysrch[li_idx].datacol + ".coltype") = "date"
        ld_found = istr_ddkeysrch[li_idx].dw.GetItemDate(ll_row, istr_ddkeysrch[li_idx].datacol)
        this.SetText(String (ld_found))
      CASE istr_ddkeysrch[li_idx].dw.Describe (istr_ddkeysrch[li_idx].datacol + ".coltype") = "datetime"
        ldt_found = istr_ddkeysrch[li_idx].dw.GetItemDateTime(ll_row, istr_ddkeysrch[li_idx].datacol)
        this.SetText(String (ldt_found))
      CASE istr_ddkeysrch[li_idx].dw.Describe (istr_ddkeysrch[li_idx].datacol + ".coltype") = "time"
        lt_found = istr_ddkeysrch[li_idx].dw.GetItemTime(ll_row, istr_ddkeysrch[li_idx].datacol)
        this.SetText(String (lt_found))
    END CHOOSE

    /***********************************************************************************/
    /* Select the text from the current position to the end.                    */
    /* The next keystroke will erase the selection and substitute the typed character. */
    /***********************************************************************************/
    This.SelectText(li_Len + 1, 150)
    EXIT
  end if
NEXT

end subroutine

public subroutine uf_setddkeysrch (string vs_textcol, string vs_srchcol, string vs_datacol);ib_ddkeysrch = true
ii_ddkeysrch_cnt++

/*********************************************************************/
/* Add an entry to the array of columns that are currently setup    */
/* for dynamic key searching. Obtain a pointer to the child        */
/* datawindow of the column and set the transaction object for it.  */
/* Also keep track of the search column and data column so we      */
/* know which columns to search and retrieve when a value is typed.  */
/*********************************************************************/
istr_ddkeysrch[ii_ddkeysrch_cnt].textcol = vs_textcol
this.GetChild(vs_textcol, istr_ddkeysrch[ii_ddkeysrch_cnt].dw)
istr_ddkeysrch[ii_ddkeysrch_cnt].dw.SetTransObject(SQLCA)
istr_ddkeysrch[ii_ddkeysrch_cnt].srchcol = vs_srchcol
istr_ddkeysrch[ii_ddkeysrch_cnt].datacol = vs_datacol
end subroutine

Apres, tu herites cet objet datawindow dans ta fenetre.
pour le branchement, tu mets ca au constructor :

Code: pb

uf_SetDDKeySrch("nom_de_ta_colonne", "nom_de_ta_colonne_dddw", "nom_de_ta_colonne_dddwdisplay")

Dis moi si ca fonctionne bien...

ce script vient de  http://stanner.com/pitstop


Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22