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 |
|
|
| KGF_dll - nouvelles versions | |
|
+8JL35 Marc papydall Jicehel Yannick pascal10000 Minibug Klaus 12 participants | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 15:33 | |
| La fonction DesignerFunction avec le code 2 désélectionne l'objet que tu passes en paramètre, via OBJECT_INTERNAL().. Dans mon programme de démo, je le fais dans le sous-programme desel qui est activé par un clic dans la liste des objets sélectionnés (mais peu importe ce mécanisme - ce qui importe, c'est de récupérer la valeur de OBJECT_INTERNAL de l'objet que tu veux sélectionner): - Code:
-
desel: s$ = item_read$(101,item_index(101)) n% = val(s$) res% = dll_call4("DesignerFunction",2,handle(parent%),n%,0) res% = dll_call4("DesignerFunction",3,handle(101),0,0) return Tu vois qu'ici, n% est la valeur entière correspondant à la ligne dans la liste qui a été cliquée, donc bel et bien le OBJECT_INTERNAL de l'objet. Essaie dans ma démo de mukti-sélectionner plusieurs objets, puis de cliquer sur une des lignes de la liste ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 15:52 | |
| Oui c'est bien ce que je fais, mais parfois il y a un blocage. Je ne comprends pas ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 16:15 | |
| Essaie comme ceci: - Code:
-
label click dim res%, parent% , n% , s% button 1 : LEFT 1,50 : TOP 1,50 : CAPTION 1,"TEST 1" : on_click 1,click button 2 : LEFT 2,50 : TOP 2,100 : CAPTION 2,"TEST 2" : on_click 2,click button 3 : LEFT 3,50 : TOP 3,150 : CAPTION 3,"TEST 3" : on_click 3,click
LIST 5 : LEFT 5,200 : TOP 5,50 : HEIGHT 5,200
dll_on "KGF.dll"
end
click: parent% = object_parent(number_click) IF COUNT(5)>0 FOR n%=1 TO COUNT(5) IF object_internal(number_click)=VAL(ITEM_READ$(5,n%)) res%=dll_call4("DesignerFunction",2,handle(parent%),object_internal(number_click),0) res%=dll_call4("DesignerFunction",3,handle(5),0,0) return END_IF NEXT n% END_IF res% = dll_call4("DesignerFunction",4,handle(parent%),object_internal(number_click),0) res%=dll_call4("DesignerFunction",3,handle(5),0,0) return C'est plus simple. En fait, tu mélangeais la version "mono" avec la version "multi" de la sélection. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 16:23 | |
| En reprenant ton code j'ai toujours un blocage sur certains objets. Je clique a de nombreuses reprises sur les 3 boutons sans ordre précis A un moment certains objets ne se désélectionnent plus ! Je dois sélectionner un objet non sélectionner pour désélectionner les autres. C'est étrange As tu testé le programme ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 16:32 | |
| Oui, j'avais testé. Mais en effet, en cliquant souvent et dans n'importe quel ordre, j'arrive à reproduire le phénomène. Je corrige... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 16:50 | |
| Nouvelle version: KGF.dll V5.44 du 22/11/2015
Nouveautés: - module Designer: correction d'un bug dans DesigenrFunction code 2
Modules modifiés: KGF.dll
La doc est inchangée. Les sources sont à jour.
Voilà - le bug sur le bloquage en suppression est résolu ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 17:01 | |
| OK Klaus !
Je viens de maltraiter les objets durant plusieurs minutes et tout va bien maintenant ! Merci. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 17:09 | |
| @Cosmos70: sur mon WebDav, j'ai mis une version spéciale de KGF.dll que j'ai nommée KGF_test.dll. Et j'ai adapté le programme de démo pour "piéger" l'élément perturbateur. Fais marcher cela, en utilisant le bouton "Complet", et dis-moi quel est le dernier élément affiché dans le mémo, au moment du plantage: - Code:
-
' test_GetPrinterInformation.bas
label test0, test1
dim res%, i%
width 0,screen_x button 1 : caption 1,"Complet" : on_click 1,test0 button 2 : caption 2,"Réduit" : on_click 2,test1 : left 2,100 memo 3 : bar_both 3 : top 3,40 : full_space 3 : height 3,height(3)-40 : top 3,40
dll_on "KGF_test.dll"
end
test0: for i%=1 to 17 res% = dll_call2("GetPrinterQueueInformation",i%,handle(3)) display pause 1000 next i% return
' res% = dll_call2("GetPrinterQueueInformation",0,handle(3)) return test1: res% = dll_call2("GetPrinterQueueInformation",1,handle(3)) return
As-tu eu l'occasion de faire cela ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 17:53 | |
| Nouvelle version: KGF.dll V5.45 du 22/11/2015
Nouveautés: - GetPrinterQueueInformation: gérer le cas des champs absents
Modules modifiés: KGF.dll KGF.chm
La doc et les sources sont à jour.
J'ai traité correctement le cas où certains champs sont illisibles ou absents, selon les versions de Windows. Dans la ligne résultante, le champ sera toujours présent, mais avec le signe "?" comme données.
@Cosmos70: Ne t'embête pas avec KGF_test.dll. Reprends simplement la nouvelle version de KGF.dll, et dans le programe de démo ci-après, utilise le bouton "Complet". Puis, tu défiles le résultat et tu me signales les noms pour lesquels des données sont le point d'interogation. Cela m'aidera à voir plus clair. | |
| | | Invité Invité
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 20:16 | |
| Je viens de rentrer, voici le résultat.
avec GreenCloud JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,
avec HP Deskjet 2050 series JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,
Maintenant c'est la soupe !
Je vois que dans les deux cas GreenCloud Printer n'est pas dans la liste, alors qu'elle y est dans le sélecteur d'imprimante. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 21:31 | |
| GreenCloud printer est un driver d'imprimante virtuelle. La transmission du fichier à imprimer vers GreenCloud est très rapide. Est-ce que tu vois le job d'impression dans la file d'attente de Windows, alors qu'il n'apparaît pas dans la liste proposée par la DLL ? CE que tu vois comme résultat de ma fonction, ce sont les impressions "en attente" de fin d'édition, celles déjà commencées et pas terminées ainsi que celles pas encore commencées. Mais ce qui est déjà transmis à GreenCloud, c'est déjà "terminé"pour Windows, et donc plus disponbible dans la file d'attente, et je ne peux donc pas l'afficher. Je n'ai aucun moyen de savoir ce qui se passe à l'intérieur de GreenCloud. Si, à partir de GrrenCloud, tu l'envoies sur la HP ou la Canon, alors cela apparaîtra à nouveau, jusqu'au moment de fin d'impression. | |
| | | Invité Invité
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 22:20 | |
| Ce que je comprend est: que GreendCloud n'apparait. On voit le résultat de l'impression une fois que j'ai cliqué sur imprimer, dans ce drivers, alors on voit que l'impression est en cours dans HP GeskJet 2050: Voici ce que j'ai copié: - Spoiler:
JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=Impression en cours,Name=HP Deskjet 2050 J510 series,PagesPrinted=0,PrintStatus=OK,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=Impression en cours,Name=HP Deskjet 2050 J510 series,PagesPrinted=0,PrintStatus=OK,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=Impression en cours,Name=HP Deskjet 2050 J510 series,PagesPrinted=0,PrintStatus=OK,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=Impression en cours,Name=HP Deskjet 2050 J510 series,PagesPrinted=0,PrintStatus=OK,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=?Name=HP Deskjet 2050 J510 series (Copie 1),PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1,JobStatus=Impression en cours,Name=HP Deskjet 2050 J510 series,PagesPrinted=0,PrintStatus=OK,TotalPages=1,JobStatus=?Name=Canon MG6400 series Printer,PagesPrinted=0,PrintStatus=UNKNOWN,TotalPages=1, ---------------
Ce qui veut dire que les impressions vont s'accumuler sur GreenCloud jusqu'à ce que celui-ci s'ouvre, et que je clique sur imprimer. Ce qui veut dire que si je ralenti pas l'impression d'une manière ou d'une autre, il va y avoir un blocage par Greendcloud, vu la limitation des pages. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 23:48 | |
| Je n'ai pas vraiment de solution pour ça... Dans la DLL, je ne peux pas savoir du tout ce qui se passe dans GreenCloud. Et de toutes façons, tu gère cela manuellement, dans GreenCloud.
Donc, pour moi,il n'y a qu'une solution: compter les pages dans le programme aoolication, et lorsqu'une limite raisonnable est atteinte, afficher un message avec demande de confirmation avant de continuer. Ainsi, lorsque le lot est prêt, tu peux intervenir dans GreenCloud. Et lorsque ce dernier a fini, tu valides le message dans le programme Panoramic pour cintinuer.
Désolé, mais là, on est dans un domaine qui est inaccessible à la DLL. | |
| | | Invité Invité
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 0:13 | |
| Lorsque j'ai vu le résultat, c'est ce que j'ai compris. Pour tester vraiment à fond, il faudrait que j'imprime 10 pages, et j'ai presque plus d'encre avec HP Desket. Donc le résultat je le connaitrait lorsque j'aurai fini d'instaler un kit d'encre continu sur la canon. J'ai géré comme cela pour l'instant (c'es qu'une partie du code: - Code:
-
impression(0) : imprimer = imprimer+1 if imprimer > 9 repeat res% = dll_call2("GetPrinterQueueInformation",1,handle(8)) tx$ = item_read$(8,1) : pause 1000 until instr( tx$,"JobStatus=Impression en cours") > 0 or scancode = 27 if scancode = 27 if message_confirmation_yes_no("on annule l'impression") = 1 then sortie=1:exit_repeat end_if imprimer = 0 end_if debut = bas+1 bas = debut + lig_maxi-1 : if bas > fin then bas = fin wait 1000 until bas = fin if sortie = 1 then exit_for A propos, il faut que je mette 1 ou 0 dans la dll pour ce cas précis? |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 0:19 | |
| Dans les deux cas, le paramètre JobStatus est retourné. Donc, pour réduire les données et garder quelque chose de plus lisible, il suffit de passer 1 à la fonction. | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 7:32 | |
| bjr klaus
Dans la section gridfonction peut tu donner un exemple pour utilisé Act% /saisie directe dans le GRID/ 0|1
j'utilise cette procédure res% = dll_call6("GridFunction",object_internal(6),1,2-1,x%-1,RGB%,FRGB%) qui fonctionne mais je souhaite que la case 2/1 du grid soit interdit à la saisie merci
Ps: il faudrait que tu complète plus d'exemple dans l'aide pour les actions de gridfonction | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 10:05 | |
| - Citation :
- res% = dll_call6("GridFunction",object_internal(6),1,2-1,x%-1,RGB%,FRGB%)
C'est d'ailleurs équivalent à - Code:
-
res% = dll_call6("GridFunction",object_internal(6),1,0,0,0,0) car les autres paramètres sont ignorés pour le code 1. Effectivement, cela autorise la saisie directement dans les cellules. Mais c'est une autorisation générale de saisie, quelque soit la cellule. A ce jour, il n'y a aucun mécanisme permettant d'exclure une cellule de cette autorisation. Solutioin: n'utilise pas cette possibilité, mais procède de la manière suivante: 1. définis un ON_CLICK sur le GRID 2. définis un EDIT N, invisible, avec un évènement ON_CHANGE 3. dans la routine évènement, détermine la cellule choisie 4. positionne l'EDIT N exactement par-dessus la cellule, place le contenu de la cellule dedans, rends-le visible et donne-lui le focus 5. dans la routine ON_CHANGE du EDIT N, contrôle la saisie et mets à jour la cellule du GRID Evidemment, si dans (3), tu découvres que la cellule ne devrait pas être saisie, ne passe pas en (4)... - Citation :
- il faudrait que tu complète plus d'exemple dans l'aide pour les actions de gridfonction
Pourquoi pas ? Donne-moi des idées d'exemple que tu souhaites trouver - je verrai ce que je pourrai faire. As-tu étudié le programme de démo que j'avais publié pour le GRID ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 23 Nov 2015 - 10:27 | |
| Je viens me mêler de la conversation pour prêcher la bonne parole du Mag. Lorsque tu fais un tuto, exemple plus complet de la doc courte, nous avons un souci. Celui ci se perd dans le flot des conversations et des interventions sur d' autres fonctions de la dll. Peut être serait il plus facile à retrouver si tu en faisait un petit article pour le mag en plaçant un lien vers son emplacement sur le forum pour ceux qui veulent bénéficier des conversations. Tu l' avais très bien fait pour ISAM. Un Tuto n' est pas figé, tu peux garder ton source et le mettre à jour en fonction des évolutions, corrections de bug, etc... Pour moi, il suffit de me le signaler quand on le place sur le webdav, en nommant tout simplement le fichier par un préfixe "MAJ_nom_du_fichier". A ce moment là, je remplace l' ancien par le nouveau au lieu de l' ajouter. Bon, je sors... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 10:43 | |
| @Pascal1000: Pour ton problème de non-saisie dans certaines cellules: Est-ce que, si je te donne le moyen d'interdire le clic dans certaines cellules, ça pourrait être une solution ? | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 12:14 | |
| bien sur klaus que ça peut me servir j'ai tenté avec un si x%=1 then return cela ne marche pas même en faisant x%=1 then res% = dll_call6("GridFunction",object_internal(6),1,0,2,x%,0) cela ne marche pas
le grid est formé comme ceci
grid 6 parent 6,2 top 6,2 width 6,178 height 6,330 grid_row 6,1 : ' enleve row fix grid_column 6,2 grid_column_width 6,88 grid_row_height 6,21 grid_row 6,13 on_click 6,gridedit
mrc d'avance | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 13:44 | |
| - Citation :
- même en faisant
x%=1 then res% = dll_call6("GridFunction",object_internal(6),1,0,2,x%,0) cela ne marche pas Qu'est-ce que tu veux dire par cela ? De toutes façons, comme je l'ai dit dans un post précédent, la fonction GridFunction avec le code 1 ignore les autres paramètres sauf par1%. Donc, ton code set identique à - Citation :
- même en faisant
x%=1 then res% = dll_call6("GridFunction",object_internal(6),1,0,0,0,0) cela ne marche pas Je ne vois pas ce que le x% et le 2 pourraient avoir comme influence... Mais tel quel, celle ligne désactive la saisie dans les cellules du grid. Pour autoriser, il faut faire: - Code:
-
res% = dll_call6("GridFunction",object_internal(6),1,1,0,0,0) Je crée un moyen de se positionner sur certaines cellules - ce sera bientôt dans la nouvelle version. | |
| | | pascal10000
Nombre de messages : 812 Localisation : Troyes Date d'inscription : 05/02/2011
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 14:59 | |
| klaus j'ai trouvé une parade qui à l'air d'être la bonne
gridedit: x%=grid_y_to_row(6,mouse_y_position(6)) if x%=1 res% = dll_call6("GridFunction",object_internal(6),1,0,0,0,0) else res% = dll_call6("GridFunction",object_internal(6),1,1,0,0,0) end_if return pourquoi n'y ai-je pas pensé avant? le 2 je l'ai pris pour paramètre 2 eme colonne c p'têt une erreur, et x% pour la rangée puisque avec 2-1,x%-1 j'ai pris le même raisonnement de res% = dll_call6("GridFunction",object_internal(6),1,2-1,x%-1,RGB%,FRGB%) voilà pourquoi ça a ptêt aucun rapport. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 15:13 | |
| C'est une bonne idée: désactiver ou réactiver l'éditeur cellulaire lors d'un clic dans une cellule. Mais il reste un problème: si tu te déplaces dans le GRID avec les flèches, tu peux tomber sur la cellule interdite en saisie. Et est-ce que ton mécanisme la protège dans ce cas ? Pas sûr !
Je suis en train de finaliser une version qui permet de définir un nombre non limité de zones rectangulaires protégées (sur lesquelles on ne pourra pas se posionner). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 15:24 | |
| Nouvelle version: KGF.dll V5.46 du 23/11/2015Nouveautés: - GridFunction: ajout code opération 12Modules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Ce nouveau code permet de définir un rectangle de cellules"protégées". Ce sont des cellules dans lesquelles on ne peut pas positionner le curseur, ni en clioquant dessus, ni en se déplaçant par les flèches. On peut définir autant de rectangles que nécessaire. Ces rectangles peuvent se chevaucher. Voici une démo. Pour une meilleure visibilité, les deux rectangles protégés sont colorés: - Code:
-
' test_GridFunction_code_12.bas
' Ce programme teste le code 12 de GridFunction. ' Ce code permet de définir des rectangles dans un GRID ' pour lesquels la sélection est interdite.
dim res%, l%, c%, RGB%
width 0,680 : height 0,320 grid 1 : full_space 1 : grid_row 1,10 : grid_column 1,10 for l%=1 to 10 for c%=1 to 10 grid_write 1,l%,c%,str$(l%)+","+str$(c%) next c% next l%
display
dll_on "KGF.dll"
' première zone interdite res% = dll_call6("GridFunction",object_internal(1),12,3,2,5,3) ' seconde zone interdite res% = dll_call6("GridFunction",object_internal(1),12,7,4,8,5)
' activer les couleurs personnalisées res% = dll_call6("GridFunction",object_internal(1),8,1,0,0,0)
RGB(255,200,200) for l%=2 to 3 for c%=3 to 5 ' couleur de la première zone interdite res% = dll_call6("GridFunction",object_internal(1),2,c%,l%,RGB%,RGB%) next c% next l%
RGB(200,200,255) for l%=4 to 5 for c%=7 to 8 ' couleur de la première zone interdite res% = dll_call6("GridFunction",object_internal(1),2,c%,l%,RGB%,RGB%) next c% next l%
end
sub RGB(R%,G%,B%) : ' produire une valeur RGB valide RGB% = (B%*256+R%)*256+G% end_sub
Voici ce que ça donne à l'écran: | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Nov 2015 - 20:51 | |
| Nouvelle version: KGF.dll V5.47 du 23/11/2015Nouveautés: - nouvelle fonction GetGridCellMapModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cette fonction permet de récupérer la liste des cellules "normales" et "protégées" par Gridfunction code 12. Cela permet de visualiser, après une série de définitions de rectangles de protection, comment est organisé le GRID. Voici le programme démo: - Code:
-
' test_GridFunction_code_12.bas
' Ce programme teste le code 12 de GridFunction. ' Ce code permet de définir des rectangles dans un GRID ' pour lesquels la sélection est interdite.
dim res%, l%, c%, RGB%, s$
width 0,690 : height 0,310 grid 1 : width 1,660 : height 1,260 grid_row 1,10 : grid_column 1,10 for l%=1 to 10 for c%=1 to 10 grid_write 1,l%,c%,str$(l%)+","+str$(c%) next c% next l%
width 0,920 memo 2 : width 2,200 : left 2,width(1)+20 height 2,height(1) : font_name 2,"Courier" display
dll_on "KGF.dll"
' première zone interdite res% = dll_call6("GridFunction",object_internal(1),12,3,2,5,3) ' seconde zone interdite res% = dll_call6("GridFunction",object_internal(1),12,7,4,8,5)
' activer les couleurs personnalisées res% = dll_call6("GridFunction",object_internal(1),8,1,0,0,0)
RGB(255,200,200) for l%=2 to 3 for c%=3 to 5 ' couleur de la première zone interdite res% = dll_call6("GridFunction",object_internal(1),2,c%,l%,RGB%,RGB%) next c% next l%
RGB(200,200,255) for l%=4 to 5 for c%=7 to 8 ' couleur de la première zone interdite res% = dll_call6("GridFunction",object_internal(1),2,c%,l%,RGB%,RGB%) next c% next l%
' chercher la map du grid s$ = string$(3000," ") res% = dll_call2("GetGridCellMap",object_internal(1),adr(s$)) text 2,trim$(s$)
end
sub RGB(R%,G%,B%) : ' produire une valeur RGB valide RGB% = (B%*256+R%)*256+G% end_sub
Et le résultat: Essayez de cliquer dans les zones colorées, ou cliquez à côté et essayez d'aller dans ces zones avec les flèches... ça reste parfaitement protégé ! Non parce que c'est coloré, mais parce que ces deux rectangles ont été définis comme zones protégées, ce qui se voit dans le plan latéral par les "P" (retournés par la DLL). | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |