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 | |
|
+13The Gamer Nardo26 silverman Minibug Pedro mindstorm pascal10000 Jicehel papydall Jean Claude JL35 Yannick Klaus 17 participants | |
Auteur | Message |
---|
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 - 2:50 | |
| Nouvelle version: KGF.dll V5.42 du 22/11/2015Nouveautés: - nouvelle fonction GetPrinterQueueInformationModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cette nouvelle fonction retourne dans un mémo Panoramic la liste des tâches présentes dans la file d'attente des imprimantes, soit en version complète, soit en version restrainte. Il y aura une ligne par tâche, et chaque information est présentée sous forme de nom=valeur, séparées par des virgules. Ainsi, un exemple de retour en version restrainte est: - Citation :
- JobStatus=Erreur | Impression en cours,Name=hp psc 1310 series,PagesPrinted=0,PrintStatus=Error,TotalPages=4,
On voit qu'on a l'identification de l'imprimante, on sait que l'impression est en erreur, qu'aucune page n'est actuellement complètement imprimée et qu'il y a 4 pages au total. Voici le programme de démo: - Code:
-
' test_GetPrinterInformation.bas
label test0, test1
dim res%
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.dll"
end
test0: res% = dll_call2("GetPrinterQueueInformation",0,handle(3)) return test1: res% = dll_call2("GetPrinterQueueInformation",1,handle(3)) return
| |
| | | Invité Invité
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 8:24 | |
| Merci pour ta réaction. Reste à pouvoir télécharger. Depuis 2 jours, après l'ouverture d'une page, la box plante. Je ne sais pas si ce sont les pluies diluviennes qu'il y a eux à ce moment là qui en est la cause. |
| | | Invité Invité
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 9:14 | |
| J'ai réussi à télécharger. Je reçois une erreur dans les deux cas: Exception EinOutError in module KGF.dll at 0023CB96. Avec ou sans GreendCloud Printer.
Il n'y a pas d'urgence. J'aurai surement du mal de regarder aujourd'hui. |
| | | 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 - 9:51 | |
| Etonnant... Chez moi, je n'ai aucun problème. Serait-ce un problème de version de Windows ? Est-ce que quelqu'un d'autre pourrait essayer le petit programme de démo ci-dessus ? Pour cela, lancer le programme, puis lancer une édition et cliquer sur un des boutons "Complet" ou "Réduit". On doit obtenir des informations sur la file d'attente dans le mémo. Merci à tous les testeurs de bonne volonté... | |
| | | 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 - 10:50 | |
| Bonjour a tous les deux ! J'ai pris la dernière version de KGF et lancé le prog ci-dessus. J'ai ensuite tapé quelques caractères dans la fenêtre et appuyé sur les boutons Complet et Réduit. Ai je bien fais le test ? En tous cas, je n'ai eu aucun message d'erreur ! Edit : Je viens je comprendre ! J'ai lancé une impression et ensuite j'ai cliqué sur les boutons et j'ai bien eu des infos sur la file d'attente et aucune erreur ! @Klaus, concernant la multi-sélection des objets c'est une excellente idée. Je suis du coup juste un peu déboussolé dans GPP sur la manière de gérer le menu objet. Je vais repenser tout le système grâce a cette nouvelle approche mais le seul problème, c'est que je ne sais pas encore comment ? trop de questions se bousculent... Je vais surement mettre en stand by quelques temps et réfléchir a tout cela ! As tu d'autres idées en tête sur l'évolution de ces commandes car si je savais je pourrais peut être anticipé ma manière de faire et de gérer le menu objet ? Merci Klaus | |
| | | Invité Invité
| Sujet: Re: KGF_dll - nouvelles versions Dim 22 Nov 2015 - 11:22 | |
| J'ai eu 10 minutes pour tester. J'ai d'abord vérifié la version: 542 je crois d'aujourd'hui. J'ai lancé une impression du source de l'éditeur Panoramic, puis le programme. J'ai toujours la même erreur. Windows 7 Édition Familiale Premium. Eh oui, j'ai pas encore mis sous W10! |
| | | 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 - 11:34 | |
| @Minibug: Merci d'avoir testé. Rappelle-moi sous quelle version de Windows tu es ?
En ce qui concerne l'évolution du module désigner, je n'ai pas d'autres projets pour le moment. Je suis arrivé au bout de ce que j'imaginais de faire. Si, il y a bien encore quelque chose, mais ça ne remet pas en cause le concept général: lors de la multi-séléction, je vais limiter la sélection à des objets ayant le même parent. Et dès qu'on sélectionnera un objet avec un parent différent, je déselectionnerai automatiquement tout ce qui est sélectionné, et je prends le nouvel objet comme premier d'une nouvelle multi-sélection.
Dans mon petit programme de démo, j'affiche une fenêtre à droite montrant la liste des objets contenus dans la sélection. Tu as bien compris bien sûr que c'est pour la démo. L'objet LIST de cette fenêtre est chargé par DesignerFuunction code 3, et cette LIST peut très bien être cachée par HIDE ou placée en-dehors de la vue de l'écran. C'est juste pour avoir l'information - au programmeur de gérer le contenu ensuite. | |
| | | 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 - 11:49 | |
| Je suis sous Win 7.32
Concernant la multi-sélection de designer, ton idée m'intéresse Klaus.
Par contre au lieu de garder un simple et un multi pourquoi ne pas garder seulement le multi. Mais par contre faire en sorte que lorsqu'un objet cliqué qui est déjà sélectionné soit désélectionné. tu vois le principe... En fait il s'agit d'une sélection-désélection automatique des objets dans la DLL.
Comme cela tu fais d'une pierre deux coups, plus besoin des 2 fonctions puisque tout se gére depuis la LIST. et comme tu dis après au programmeur de savoir ce qu'il veux en faire ! | |
| | | 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 - 11:53 | |
| Je vois. Par déaut, on serait en simple sélection, et on passerait en multi-sélection en enfonçant la touche Control... C'est certainement faisable. @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
| |
| | | 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 - 12:11 | |
| J'étais plutôt dans l'idée suivante : - Code:
-
label click dim res%, parent% , n% button 1 : LEFT 1,50 : TOP 1,50 : CAPTION 1,"TEST" : on_click 1,click
dll_on "D:\BASIC\GPP\systeme\dll\KGF.dll"
end
click: parent% = object_parent(number_click) IF n%=0 n%=1 : res%=dll_call3("RegisterObjectForDesigner",handle(parent%),object_internal(number_click),0) ELSE n%=0 : res% = dll_call0("UnregisterObjectFromDesigner") END_IF return Mais gérer par la DLL et le tout en multi sélection ! | |
| | | 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 - 12:53 | |
| Nouvelle version: KGF.dll V5.43 du 22/11/2015
Nouveautés: - module Designer: en mode multi-sélection, trois modifications importantes: 1. la touche Control est utilisée dans le sens habituel de Windows pour étendre la sélection: le nouvel objet sélectionné sera ajouté à la sélection existante si Control est enfoncé. Sinon, la sélection existante est annulée et le nouvel objet est sélectionné comme seul objet 2. si le nouvel objet a un parent différent des objets éventuellement déjà sélectionnés, alors la sélection actuelle est annulée et le nouvel objet est sélectionné comme seul objet. 3. nouveau code action 4 pour DesignerFunction. Code 4 est identique à code 1, mais passe en mode multi-sélection (simule Control enfoncé).
Modules modifiés: KGF.dll KGF.chm
La doc et les sources sont à jour.
Ceci permet, en mode multi-sélection, de travailler comme en mode "objet seul" sans enfoncer la touche Control, et passer en multi-sélection en gardant Control enfoncé pendant les clics. Ou alors choisir ce mode par programme en utilisant uniquement DesignerFunction, et d'abandonner RegisterObjectForDesigner. Le fonctionnement devient ainsi très intuitif ! | |
| | | 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 - 14:03 | |
| Klaus, au secours ! Regarde le court programme ci_dessous : - 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 "D:\BASIC\GPP\systeme\dll\KGF.dll"
end
click: parent% = object_parent(number_click) s%=0 IF COUNT(5)<>0 MESSAGE HANDLE(number_click) FOR n%=1 TO COUNT(5) IF HANDLE(number_click)=VAL(ITEM_READ$(5,n%)) THEN res% = dll_call4("DesignerFunction",2,handle(parent%),object_internal(number_click),0) : s%=1 NEXT n% END_IF IF s%=0 THEN res% = dll_call4("DesignerFunction",4,handle(parent%),object_internal(number_click),0) res% = dll_call4("DesignerFunction",3,handle(5),0,0) return Pourquoi le handle des boutons ne corresponds pas au numeros du list ? | |
| | | 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 - 14:34 | |
| Parce que le contenu du mémo donne les valeurs de OBJECT_INTERNEL(N) des objets N sélectionnés, pas leur handle ! Regarde 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) s%=0 IF COUNT(5)<>0 MESSAGE OBJECT_INTERNAL(number_click) : ' HANDLE(number_click) FOR n%=1 TO COUNT(5) IF HANDLE(number_click)=VAL(ITEM_READ$(5,n%)) THEN res% = dll_call4("DesignerFunction",2,handle(parent%),object_internal(number_click),0) : s%=1 NEXT n% END_IF IF s%=0 THEN res% = dll_call4("DesignerFunction",4,handle(parent%),object_internal(number_click),0) res% = dll_call4("DesignerFunction",3,handle(5),0,0) return | |
| | | 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 - 14:42 | |
| D'accord, je n'avais pas relevé cette subtilité dans la DLL. Mais quelle est la raison de ce choix Klaus ? Pourquoi ne pas choisir le handle comme d'habitude. Est ce plus simple pour toi ou par limitation technique avec Panoramic ? J'avoue que ça ne change rien pour moi, c'est juste par curiosité ! Merci Klaus, je teste de nouveau avec les bons paramètres. | |
| | | 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 - 15:11 | |
| Pourquoi OBJECT_INTERNAL et non HANDLE ? Pour 2 raisons techniques, qui ont d'ailleursd été la raison pour laquelle j'avais demandé à Jack de réaliser cette fonction: 1. il y a des objets visuels dans Panoramic qui n'ont pas de handle. Eh oui, un PICTURE ou un ALPHA, par exemple, ne sont pas des contrôles "fenêtrés", mais de simples objets graphiques dont l'affichage doit être assuré par leur parent et non par Windows directement. Et en particulier, comme il n'y a pas de handle, on ne peut pas faire SEND_MESSAGE vers un tel objet. 2. la fonction OBJECT_INTERNAL(), comme HANDLE(), retourne une valeur 32 bits. Mais dans ce cas, il s'agit d'un pointeur vers une définition de l'objet, dont ne handle (si existant) n'est qu'une des multiples proprités. Par contre, cela donne accès directement à certaines propriétés dont j'ai besoin pour le designer: top, left, width, height par exemple. En Delphi, cela se programme comme suit: - Code:
-
function MaFonction(obj: TControl):integer; stdcall; export; var xtop, xleft, xwidth, ywidth: integer; begin xtop := obj.top; xleft := obj.Left; ... obj.Top := ... ... result := 0; end; On peut même connaître le type de l'objet par obj.ClassName ce qui retourne une chaîne de caractères du type TButton, TMemo, TLabel (c'est un ALPHA) etc. Si je n'avais pas OBJECT_INTERNAL, je n'aurais jamais pu faire le designer pour tous les objets visuels. | |
| | | 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:25 | |
| Je comprends mieux ! Dis moi, crois tu qu'il soit possible d'ajouter a ta DLL la désélection d'un objet déjà séléctionné ? En gros lors d'un clic, ça sélectionne l'objet, puis lors d'un autre clic ça désélectionne l'objet, etc... Tous ça dans le mode multi-sélection bien sûr ! C'est ce que j'essaie de mettre en oeuvre mais cela ne fonctionne pas comme je le souhaite. Il y a parfois des blocages sur les objets sélectionnés. Je ne sais pas pourquoi ? Voici le code : - 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 "D:\BASIC\GPP\systeme\dll\KGF.dll"
end
click: parent% = object_parent(number_click) s%=0 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) s%=1 : EXIT_FOR END_IF NEXT n% ELSE res%=dll_call0("UnregisterObjectFromDesigner") END_IF IF s%=0 THEN res% = dll_call4("DesignerFunction",4,handle(parent%),object_internal(number_click),0) res%=dll_call4("DesignerFunction",3,handle(5),0,0) return ------- https://panoramic.1fr1.net/viewtopic.forum?t=4619 | |
| | | 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
| |
| |
| |