|
Obliger l'utilisateur à lire un texte |
Iniciado por yves.piot.83, 12,oct. 2004 13:45 - 15 respuestas |
| |
| | | |
|
| |
Publicado el 12,octubre 2004 - 13:45 |
Bonjour à toutes et à tous,
Je veux obliger l'utilisateur à "lire" un texte important un peu à la façon de la licence Windev, où il faut aller tout en bas du texte par l'ascenseur pour pouvoir continuer.
Je sais que cela existe, dans un exemple ?, un assistant ? je n'arrive plus à retrouver.
Merci de votre aide Yves |
| |
| |
| | | |
|
| | |
| |
Publicado el 12,octubre 2004 - 17:10 |
Yves.83 avait prétendu :
Bonjour à toutes et à tous,
Je veux obliger l'utilisateur à "lire" un texte important un peu à la façon de la licence Windev, où il faut aller tout en bas du texte par l'ascenseur pour pouvoir continuer.
Je sais que cela existe, dans un exemple ?, un assistant ? je n'arrive plus à retrouver.
Merci de votre aide Yves
utilise le même principe alors.....
par exemple :
- crée une table dans laquelle le texte à lire sera affiché, donc pas de trait de séparation entre les lignes, même couleur pour les lignes impaires et paires - crée un champ texte invisible contenant ton texte à faire lire
- dans l'init de la table, tu remplis celle-ci à partir du champ texte caché du style
NbCaractère est un entier = x // nb de caractère par ligne que tu veux ligne est une chaine pos est un entier = 1 tantque vrai ligne = milieu(CHAMPTEXTE,pos,NBcaractère) si ligne = "" alors sortir tableajoute(MATABLE,ligne) pos += NbCaractère fin
- dans le traitement "affichage d'une ligne" de la table
si MATABLE = tableoccurence(MATABLE) alors // on a affiché la derniere ligne // donc ici on met le traitement rendant actif ce qu'on veut fin
pas testé, mais ça doit être un truc du genre |
| |
| |
| | | |
|
| | |
| |
Publicado el 12,octubre 2004 - 17:26 |
Merci Bertrand pour cette réponse très détaillée,
Je pense que c'est tout à fait adaptable, néanmoins j'ai oublié de préciser que j'utilisais un champ RTF pour bien attirer l'attention de l'utilisateur. Cela reste possible mais ça complique ...
Sinon je pensais qu'il existait une fonction, une propriété ou une façon de gérer l'ascenseur pour savoir si on l'avait descendu entièrement.
Merci encore Yves |
| |
| |
| | | |
|
| | |
| |
Publicado el 12,octubre 2004 - 18:16 |
Bonjour cher Ami !
Voici la procédure à suivre pour resoudre ton problème. 1- Cré un document Word contenant le texte à lire et enregistre le en format RTF. 2- Dans ton projet, cré une fenêtre sur laquelle tu ajoute un champ texte de type RTF. Nomme ce champ "SAIS_DESCRIPTION" 3- A l'initialisation de la fenêtre que tu viens de créer, insert le code ci-dessous
// chargement du fichier RTF de description SI PAS RTFCharge(SAIS_DESCRIPTION,"LettreAlire.rtf") ALORS Erreur("Impossible d'ouvrir le fichier de description.",ErreurInfo()) FIN
NB: Le document RTF doit être dans le repertoire par default du projet. |
| |
| |
| | | |
|
| | |
| |
Publicado el 12,octubre 2004 - 18:55 |
Merci pour cette réponse mais le champ contient le texte dans l'onglet 'Contenu' le problème n'est pas là mais dans le sujet de mon premier post à savoir comment être sûr que l'utilisateur ai tout lu. Salutations Yves
"GNADJE BI YOUAN ANDRE" <youanandre@yahoo.fr> a écrit dans le message de news: 416bddd7@news.pcsoft.fr...
Bonjour cher Ami !
Voici la procédure à suivre pour resoudre ton problème. 1- Cré un document Word contenant le texte à lire et enregistre le en
format RTF. > 2- Dans ton projet, cré une fenêtre sur laquelle tu ajoute un champ texte de type RTF.
Nomme ce champ "SAIS_DESCRIPTION" 3- A l'initialisation de la fenêtre que tu viens de créer, insert le code ci-dessous
// chargement du fichier RTF de description SI PAS RTFCharge(SAIS_DESCRIPTION,"LettreAlire.rtf") ALORS Erreur("Impossible d'ouvrir le fichier de description.",ErreurInfo()) FIN
NB: Le document RTF doit être dans le repertoire par default du projet.
|
| |
| |
| | | |
|
| | |
| |
Publicado el 12,octubre 2004 - 20:59 |
Yves.83 a écrit :
Bonjour à toutes et à tous,
Je veux obliger l'utilisateur à "lire" un texte important un peu à la façon de la licence Windev, où il faut aller tout en bas du texte par l'ascenseur pour pouvoir continuer.
Je sais que cela existe, dans un exemple ?, un assistant ? je n'arrive plus à retrouver.
Merci de votre aide Yves
De tete je n'en suis pas sure , mais il te faut verifier si l'ascenseur a une variable qui detecte quand il est en bas du texte a voir avec l'aide en ligne , si c'est le cas quand tu ouvre ta fenetre tu met ton bouton fermer ou suivant en grise et tu test si ton utilisateur fait fonctionner l'ascenceur , si c'est le cas ton test positionne ton boutton fermer ou suivant a Actif est le tour est joué.
Bon dev et a + |
| |
| |
| | | |
|
| | |
| |
Publicado el 12,octubre 2004 - 22:13 |
Tjrs dans la logique du couriel que je t'ai fais parvenir. Tu initialise le bouton de fermeture de la fenêtre à "INACTIF" puis dans le code du champ d'affichage du texte, zone de code "ENTREE DE..." tu rends de nouveau ACTIF le bouton dès que l'utilisateur click dans ce champ pour poursuivre sa lecture.
Espérant t'avoir aidé ! |
| |
| |
| | | |
|
| | |
| |
Publicado el 13,octubre 2004 - 02:43 |
La notion de bouton grisé ou inactif rendu actif : pas de problème
Par contre un clic dans l'ascenseur ne déclanche pas le code d'entrée du champ mais cela m'a poussé à chercher dans les codes supplémentaires à ajouter à un champ et derrière les 3 points 'plus de traitements' j'ai trouvé "Ascenseur vertical" Evènement WM_VSCROLL je me suis dis Sauvé !!
Pas tout à fait parce que je n'ai pas le moyen de savoir si on est arrivé au bout du texte, simplement, je vais me dépanner pour l'instant en comptant 2 à 3 clic sur l'ascenseur, mais c'est quand même énervant de ne pas pouvoir le gérer plus finement.
Merci encore pour vos contributions Yves
"GBADJE BI YOUAN ANDRE" <youanandre@yahoo.fr> a écrit dans le message de news: 416c1571$1@news.pcsoft.fr...
Tjrs dans la logique du couriel que je t'ai fais parvenir. Tu initialise
le bouton de fermeture de la fenêtre à "INACTIF" puis dans le code du champ d'affichage du texte, zone de code "ENTREE DE..." tu rends de nouveau ACTIF le bouton dès que l'utilisateur click dans ce champ pour poursuivre sa lecture.
Espérant t'avoir aidé !
|
| |
| |
| | | |
|
| | |
| |
Publicado el 13,octubre 2004 - 10:53 |
Aide : Manipuler un ascenseur par programmetion:
Récupérer la position d'un ascenseur utilisez la syntaxe suivante :
<Position> = <Nom Ascenseur>
Dans l'ascenseur "A chaque modification" mettre le code suivant :
_lnPosition est un entier = <Nom Ascenseur> //Récupére la valeur
si _lnPosition = <Val Max Ascenseur> alors Bouton..visible vrai fin |
| |
| |
| | | |
|
| | |
| |
Publicado el 13,octubre 2004 - 11:33 |
D'accord pour la manipulation d'un ascenseur, j'avais bien exploré l'aide avant, mais un ascenseur de champ texte multiligne n'est pas manipulable de cette manière ( à ma connaissance).
D'autre part si je place un ascenseur externe, comment faire défiler le texte dans le champ à partir de cet ascenseur. Sans que cela devienne une usine à gaz.
Merci pour la réponse Yves
"E. Rossi" <er@belsoft.be> a écrit dans le message de news: 416cc7b8$1@news.pcsoft.fr...
Aide : Manipuler un ascenseur par programmetion:
Récupérer la position d'un ascenseur utilisez la syntaxe suivante :
<Position> = <Nom Ascenseur>
Dans l'ascenseur "A chaque modification" mettre le code suivant :
_lnPosition est un entier = <Nom Ascenseur> //Récupére la valeur
si _lnPosition = <Val Max Ascenseur> alors Bouton..visible vrai fin
|
| |
| |
| | | |
|
| | |
| |
Publicado el 13,octubre 2004 - 17:12 |
Bonjour, Un exemple complet a été livré avec la LST N°40 page 23. L'exemple reprend l'affichage d'une licence dans une fenêtre avec l'activation du bouton Valider quand tout le texte a été lu. La programmation est plus compliquée qu'il n'y paraît: dans l'exemple il est fait appel aux API GetScrollingPos (position en cours) et GetScrollingRange (position maximum) AE
"Yves.83" <yves.piot.83@wanadoo.fr> a écrit dans le message de news:416b9ef2$1@news.pcsoft.fr...
Bonjour à toutes et à tous,
Je veux obliger l'utilisateur à "lire" un texte important un peu à la façon de la licence Windev, où il faut aller tout en bas du texte par l'ascenseur pour pouvoir continuer.
Je sais que cela existe, dans un exemple ?, un assistant ? je n'arrive plus à retrouver.
Merci de votre aide Yves
|
| |
| |
| | | |
|
| | |
| |
Publicado el 13,octubre 2004 - 18:12 |
Merci Alain
Je savais bien que j'avais déjà lu quelque chose comme cela mais je ne suis pas remonté aussi loin, 1er trim 2000 ça nous rajeunit pas tout ça, on venait juste d'échapper au BUG de l'an 2000.
Je vais appliquer ça en espèrant qu'il n'y ait pas d'incompatibilité avec WD8 et XP
Merci encore Yves
"Alain E" <ae_NOSPAM_@crefia.com> a écrit dans le message de news: 416d2121$1@news.pcsoft.fr...
Bonjour, Un exemple complet a été livré avec la LST N°40 page 23. L'exemple reprend l'affichage d'une licence dans une fenêtre avec l'activation du bouton Valider quand tout le texte a été lu. La programmation est plus compliquée qu'il n'y paraît: dans l'exemple il
est > fait appel aux API GetScrollingPos (position en cours) et GetScrollingRange
(position maximum) AE
|
| |
| |
| | | |
|
| | |
| |
Publicado el 13,octubre 2004 - 18:53 |
Décidemment j'ai pas de chance sur ce coup là !
J'ai le CD de la LST 40 sensé me sauver !! et impossible d'ouvrir le projet exemple WDLicence ni avec WD5.5 ni WD8 ça me répond que ce n'est pas une fenêtre Windev en 5.5 et en 8 il n'ouvre rien.
Est-ce que ce serait du WD4 ? Non !!!!
Donc est-ce que quelqu'un pourrait me documenter sur les fonctions suivantes : AppelDLL32("user32", "GetScrollInfo" , hWnd, n, &lpScrollInfo) AppelDLL32("user32", "GetScrollPos" , hwnd, nBar) AppelDLL32("user32", "GetScrollRange" , hwnd, nBar, &lpMinPos, &lpMaxPos)
hwnd -> Handle de l'objet mais le reste ?!?!?
Merci d'avance yves
"Yves.83" <yves.piot.83@wanadoo.fr> a écrit dans le message de news: 416d2f23$1@news.pcsoft.fr...
Merci Alain Je savais bien que j'avais déjà lu quelque chose comme cela mais je ne suis pas remonté aussi loin, 1er trim 2000 ça nous rajeunit pas tout ça, on venait juste d'échapper au BUG de l'an 2000. Je vais appliquer ça en espèrant qu'il n'y ait pas d'incompatibilité avec WD8 et XP Merci encore Yves "Alain E" <ae_NOSPAM_@crefia.com> a écrit dans le message de news: 416d2121$1@news.pcsoft.fr... Bonjour, Un exemple complet a été livré avec la LST N°40 page 23. L'exemple
reprend
l'affichage d'une licence dans une fenêtre avec l'activation du bouton Valider quand tout le texte a été lu. La programmation est plus compliquée qu'il n'y paraît: dans l'exemple il est fait appel aux API GetScrollingPos (position en cours) et GetScrollingRange (position maximum) AE
|
| |
| |
| | | |
|
| | |
| |
Publicado el 13,octubre 2004 - 21:50 |
Rebonjour, Pour ton information j'ai ouvert le projet avec Windev 7.5 et j'ai accepté la migration 5.5 vers 7.5 Tout s'est passé sans aucun problème. Il y a eu simplement 2 warnings m'indiquant qu'il "risquait" y avoir des problèmes avec les dll version 16 bits mais tout s'est bien passé en lançant le test. Arrès il a suffi de recompiler sous Windev 8. Je suis sous Win XP Pro. Essaie de faire comme moi. Si ça ne marche pas je pourrai éventuellement t'envoyer le projet recompilé sous Windev 8 (pas sur le forum bien sûr) Alain
"Yves.83" <yves.piot.83@wanadoo.fr> a écrit dans le message de news:416d38bc@news.pcsoft.fr...
Décidemment j'ai pas de chance sur ce coup là ! J'ai le CD de la LST 40 sensé me sauver !! et impossible d'ouvrir le projet exemple WDLicence ni avec WD5.5 ni WD8 ça me répond que ce n'est pas une fenêtre Windev en 5.5 et en 8 il n'ouvre rien. Est-ce que ce serait du WD4 ? Non !!!! Donc est-ce que quelqu'un pourrait me documenter sur les fonctions suivantes : AppelDLL32("user32", "GetScrollInfo" , hWnd, n, &lpScrollInfo) AppelDLL32("user32", "GetScrollPos" , hwnd, nBar) AppelDLL32("user32", "GetScrollRange" , hwnd, nBar, &lpMinPos, &lpMaxPos) hwnd -> Handle de l'objet mais le reste ?!?!? Merci d'avance yves "Yves.83" <yves.piot.83@wanadoo.fr> a écrit dans le message de news: 416d2f23$1@news.pcsoft.fr... Merci Alain Je savais bien que j'avais déjà lu quelque chose comme cela mais je ne suis pas remonté aussi loin, 1er trim 2000 ça nous rajeunit pas tout ça, on venait juste d'échapper au BUG de l'an 2000. Je vais appliquer ça en espèrant qu'il n'y ait pas d'incompatibilité avec WD8 et XP Merci encore Yves "Alain E" <ae_NOSPAM_@crefia.com> a écrit dans le message de news: 416d2121$1@news.pcsoft.fr... Bonjour, Un exemple complet a été livré avec la LST N°40 page 23. L'exemple reprend
l'affichage d'une licence dans une fenêtre avec l'activation du bouton Valider quand tout le texte a été lu. La programmation est plus compliquée qu'il n'y paraît: dans l'exemple il
est fait appel aux API GetScrollingPos (position en cours) et GetScrollingRange (position maximum) AE
|
| |
| |
| | | |
|
| | |
| |
Publicado el 14,octubre 2004 - 01:01 |
Je n'avais pas installer l'exemple de la LST40 mais simplement copié ceci explique cela. J'ai enfin mon code pour gérer l'ascenseur de manière précise, il me reste maintenant à l'adapter à l'utilisation de la roulette souris et aux flèches bas et PageDown
Merci encore Alain de m'avoir fait ouvrir les yeux Yves
"Alain E" <ae_NOSPAM_@crefia.com> a écrit dans le message de news: 416d622e@news.pcsoft.fr...
Rebonjour, Pour ton information j'ai ouvert le projet avec Windev 7.5 et j'ai accepté la migration 5.5 vers 7.5 Tout s'est passé sans aucun problème. Il y a eu simplement 2 warnings m'indiquant qu'il "risquait" y avoir des problèmes avec les dll version 16 bits mais tout s'est bien passé en lançant le test. Arrès il a suffi de recompiler sous Windev 8. Je suis sous Win XP Pro. Essaie de faire comme moi. Si ça ne marche pas je pourrai éventuellement t'envoyer le projet recompilé sous Windev 8 (pas sur le forum bien sûr) Alain |
| |
| |
| | | |
|
| | |
| |
Publicado el 14,octubre 2004 - 01:33 |
Pour ceux que cela intéresse voilà la solution mise en place
Créer la procedure locale CaptureAscenseur()
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>< PROCEDURE CaptureAscenseur() nPos, pnMin, pnMax, SB_VERT32 sont des entiers SB_VERT32 = 1
// récupère la position courante nPos = AppelDLL32("USER32","GetScrollPos",_EVE.hwnd,SB_VERT32) // récupère le nombre de ligne maximale AppelDLL32("USER32","GetScrollRange",_EVE.hwnd,SB_VERT32,&pnMin,&pnMax)
// On décompte la taille de la première page pnMax -= 325 // Taille à rechercher par tatonnement sur champ RTF SI nPos >= pnMax ALORS Info("ca y est") <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Dans le code du texte à lire ajouter les traitements supplémentaires suivants : Roulette souris Touche enfoncée Ascenseur vertical Dans chacun d'eux appeler la fonction CaptureAscenseur() et le tour est joué reste seulement à affiner la taille de la première page en plaçant une trace sur nPos et pnMax |
| |
| |
| | | |
|
| | | | |
| | |
|