Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| Problème de bouton qui ne réagit plus. | |
| | Auteur | Message |
---|
Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème de bouton qui ne réagit plus. Lun 23 Nov 2015 - 17:30 | |
| Bonjour. Le code suivant fonctionne parfaitement. Par contre, lorsqu'il est lancé depuis mon programme principal, le fait de cliquer sur le bouton ne provoque, de façon intermittente, aucune réaction !! Je pense que le problème vient des lignes suivantes: command_target_is 0 hide 1Lorsque les deux lignes sont inversées, le problème disparaît ! - Code:
-
' Version du 23 nov 2015.
dll_on "kgf"
dim dtp1%, hnd%, res%
label quitter, change_dtp
inactive 0
form 1 hnd%=handle(1) res%=dll_call2("SetMinimizeMaximize",hnd%,0) res%=dll_call2("SetCloseBox",hnd%,0) command_target_is 1
button 2 parent 2,1 caption 2,"quitter" on_click 2,quitter
edit 3 hide 3 dtp1%=dll_call6("DTP",1,handle(1),handle(3),140,200,1) on_change 3,change_dtp
end
change_dtp:
return
quitter: res%=dll_call6("DTP",2,dtp1%,0,0,0,0)
command_target_is 0 hide 1 ' command_target_is 0 return | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 23 Nov 2015 - 17:53 | |
| @ Pedro,
Pourquoi, "Command_Target_is 0" ?
Si tous tes objets du form 0 sont créés, tu ne devrais plus avoir besoin de passer les commandes.
Je pense que tu as commencé ton projet il y a très longtemps et que la commande "Parent" n' existait pas à ce moment là. Mais, rien ne t' empêche de l' utiliser maintenant et fini les "Command_target_is" pour créer des objets. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème de bouton qui ne réagit plus. Lun 23 Nov 2015 - 18:01 | |
| Bonjour.
@Klaus.
Et voilà que le problème recommence, moi qui croyais être sauvé !!
Mais, lorsque je mets en commentaire la ligne permettant d'effacer l'objet DTP, plus de problème dans ce cas.
Merci de ton aide.
La commande utilisée est la suivante:
res%=dll_call6("DTP",2,dtp1%,0,0,0,0) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème de bouton qui ne réagit plus. Lun 23 Nov 2015 - 18:09 | |
| Voici une version annotée: - Code:
-
' Version du 23 nov 2015.
dll_on "kgf"
dim dtp1%, hnd%, res%
label quitter, change_dtp
inactive 0
form 1 : left 1,300 hnd%=handle(1) res%=dll_call2("SetMinimizeMaximize",hnd%,0) res%=dll_call2("SetCloseBox",hnd%,0) command_target_is 1
button 2 ' parent 2,1 : ' <=== inutile - command_target_is a déjà fait le boulot caption 2,"quitter" on_click 2,quitter
command_target_is 0 : ' <=== pour que l'EDIT soit affecté à form 0 edit 3 hide 3 dtp1%=dll_call6("DTP",1,handle(1),handle(3),140,200,1) on_change 3,change_dtp
end
change_dtp:
return
quitter: res%=dll_call6("DTP",2,dtp1%,0,0,0,0)
' command_target_is 0 : ' <=== totalement inutile hide 1 ' command_target_is 0 : ' <=== totalement inutile to_foreground 0 : ' <== pour éviter la perte déagréabl de visibilité return 1. Si tu utilises COMMAND_TARGET_IS, il ne faut plus utiliser PARENT... 2. le EDIT caché pour le DTP devrait être attaché à le form 0, pas à la form 1 3. mettre des COMMAND_TARGET_IS dans une routine évènement est fortement déconseillé (le résultat dépend alors des actions de l'utilisateur et n'est plus prévisible). 4. de façon générale, évite COMMAND_TARGET_IS et utilise systématiquement PARENT. Cela fera une commande supplémentaire pour chaque objet, mais a le mérite d'être parfaitement clair, lisible et prévisible. | |
| | | Pedro
Nombre de messages : 1596 Date d'inscription : 19/01/2014
| Sujet: Problème de bouton qui ne réagit plus. Lun 23 Nov 2015 - 18:29 | |
| Bonsoir.
Merci Klaus de toutes ces explications très claires.
Cependant, je suis obligé d'utiliser command_target_is sur la form interne, car celle-ci comporte des menus.
La commande 'main_menu' ne pouvant pas être reliée à une form interne par la commande parent. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème de bouton qui ne réagit plus. Lun 23 Nov 2015 - 18:34 | |
| Dans ce cas, Pedro, fais COOA?D_TARGET_IS, MAIN_MENU, puis immdiatement COMMAND_TARGET_IS retournvers form 0. Et tu fais le reste avec PARENT. | |
| | | Contenu sponsorisé
| Sujet: Re: Problème de bouton qui ne réagit plus. | |
| |
| | | | Problème de bouton qui ne réagit plus. | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |