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: Re: KGF_dll - nouvelles versions Dim 24 Jan 2016 - 2:48 | |
| KGF.dll V5.80 du 23/01/2016
Nouveautés: - nouveau jeu de 6 fonctions pour gérer la communication entre programmes, sur la machine locale, mais également en réseau local ou même en réseau distant
Modules modifiés: KGF.dll KGF.chm
La doc et les sources sont à jour.
Cette version, totalement indépendante des deux fonctions IPC qui continuent d'exister, va beaucoup plus loin dans la gestion des messages circulant entre programmes. Les messages peuvent atteindre 65535 caractères (sans zéro binaire !) et peuvent être envoyés à des programmes résidant sur des machines distantes, en réseau. On peut créer autant de boites à lettre qu'on veut, et ces boites peuvent contenir chacune un nombre non limité de messages. Ces messages s'empilent dans une boite, et sont lus dans leur ordre d'arrivée (pile FIFO - First In First Out). Je poste un exemple d'utilisation comme application client/serveur dans la rubrique des sources et utilitaires à partager. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: KGF_dll - nouvelles versions Dim 24 Jan 2016 - 9:12 | |
| Bravo Klaus et j'espère que ces nouvelles fonctions vont être mise en application par toi ou quelqu'un d'autre pour des tas d'applications. On peut imaginer des jeux se jouant à deux sur deux machines différentes (une sur laquelle tournerait le serveur et le client et l'autre qu'avec le client se connectant au serveur en réseau) Une bataille navale par exemple, un pendu pour lequel le plus rapide gagne, un tetris, un monde en 3D ou 2 personnages ou tanks s'affrontent ? Mais aussi des applications par exemple éducative avec un serveur "professeur" et des clients "éléves" qui doivent répondre aux exercices ? Enfin on verra bien les idées et les applications qui vont en découler. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 24 Jan 2016 - 12:09 | |
| KGF.dll V5.81 du 24/01/2016
Nouveautés: - correction d'un bug dans la fonction SearchPatternInBinaryFile
Modules modifiés: KGF.dll
La doc est inchangée. Les sources sont à jour.
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 24 Jan 2016 - 16:45 | |
| KGF.dll V5.82 du 24/01/2016
Nouveautés: - nouvelle fonction SearchPatternInBinaryFileEx
Modules modifiés: KGF.dll KGF.dll
La doc et les sources sont à jour.
La nouvelle fonction SearchPatternInBinaryFileEx est une extension de la fonction SearchPatternInBinaryFile déjà existante, avec des fonctionnalitées étendues. Elle est documentée sur la page de la fonction SearchPatternInBinaryFile | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 26 Jan 2016 - 15:45 | |
| KGF.dll V5.83 du 26/01/2016
Nouveautés: - correction d'un bug dans la gestion des fichiers binaires (cas de plusieurs fichiers ouverts simultanément)
Modules modifiés: KGF.dll
La doc est inchangée. Les sources sont à jour. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Fév 2016 - 18:52 | |
| KGF.dll V5.85 du 08/02/2016Nouveautés: - complément dans la gestion de l'objet ImageList - nouvel objet TreeViewModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. L'objet ImageList est complétée par deux fonctions qui permettent de sauvegarder le contenu d'un tel objet dans un seul fichier, et de le recharger. Ceci permet de constituer une liste de beaucoup d'images de tout type (bmp, jpg, gif, png, ico, ...) et de n'utiliser ensuite qu'un seul fichier. Rapide et moins lourd. Et le nouvel objet TreeView va utiliser de tels fichiers de sauvegarde d'objets ImageList. L'objet TreeView est quelque chose que je voulais faire depuis longtemps. Et je me suis heurté à des difficultés techniques pendant des mois, et je viens juste de les surmonter. Donc, profitez du résutat ! C'est un objet du type de liste des dossiers d'un explorateur de fichiers: une liste arborescente, repliable, où chaque ligne représente un "noeud". Dans un explorateur, les lignes contiennent les noms des dossiers et/ou fichiers. Ici, on donne les libellés qu'on peut, on définit sa structure, et on peut même fournir justement une sauvegarde des images d'un objet ImageList pour avoir des icônes pour chaque ligne. Je vous invite de jeter un oeil sur la doc (section "Objets"). En tout cas, voici un petit outil permettant de collectionner des images dans un ImageList, puis de le sauvegarder dans un fichier DAT. On peut aussi, plus tard, recharger le fichier DAT et lui ajouter d'autres images: - Code:
-
' test_ImageList.bas
label close0, nouveau, charger, sauver, fermer, uneimage
dim res%, f$, IL%, w%, h%
on_close 0,close0
alpha 1 : top 1,10 : left 1,10 : caption 1,"Largeur:" spin 2 : top 2,10 : left 2,60 : width 2,70 : min 2,12 : max 2,1024 : position 2,16 alpha 3 : top 3,10 : left 3,200 : caption 3,"Hauteur:" spin 4 : top 4,10 : left 4,250 : width 4,70 : min 4,12 : max 4,1024 : position 4,16
button 11 : top 11,40 : left 11,10 : caption 11,"Nouveau" : on_click 11,nouveau button 12 : top 12,40 : left 12,110 : caption 12,"Charger" : on_click 12,charger button 13 : top 13,40 : left 13,210 : caption 13,"Sauver" : on_click 13,sauver button 14 : top 14,40 : left 14,310 : caption 14,"Fermer" : on_click 14,fermer
button 21 : top 21,70 : left 21,110 : caption 21,"Image" : on_click 21,uneimage
open_dialog 31 save_dialog 32
dll_on "KGF.dll"
end
close0: if IL%<>0 then IL% = dll_call1("DeleteImageList",IL%) return nouveau: if IL%<>0 then IL% = dll_call1("DeleteImageList",IL%) w% = position(2) h% = position(4) IL% = dll_call2("CreateImageList",w%,h%) return charger: filter 31,"Fichier *.dat|*.dat" f$ = file_name$(31) if f$="_" then return if lower$(right$(f$,4))<>".dat" then f$ = f$ + ".dat" if file_exists(f$)=0 message "N'existe pas" return end_if res% = dll_call2("LoadImageList",IL%,adr(f$)) message "Résultat: "+str$(res%) return
sauver: filter 32,"Fichier *.dat|*.dat" f$ = file_name$(32) if f$="_" then return if lower$(right$(f$,4))<>".dat" then f$ = f$ + ".dat" if file_exists(f$)=1 if message_confirmation_yes_no("Existe déjà. Remplacer ?")<>1 then return end_if res% = dll_call2("SaveImageList",IL%,adr(f$)) message "Résultat: "+str$(res%) return
fermer: IL% = dll_call1("DeleteStringList",IL%) return uneimage: filter 31,"" f$ = file_name$(31) if f$="_" then return res% = dll_call4("AddImageToImageList",IL%,adr(f$),0,0) : ' 0,0 = pas de transparence ! message "Résultat: "+str$(res%) return
C'est ce programme que j'ai utilisé pour fabriquer un fichier DAT contenant 5 icônes carrés de 16x16 pixels (pour les tests, de simples carrés de couleur sufffisent...), et avec ça, j'ai fait le programme de test suivant pour l'objet TreeView: - Code:
-
' test_treeview.bas
label close0
dim res%, TV1%, txt$, ind%, child%, img$ dim M1% : m1% = 0 - 1
dll_on "KGF.dll"
on_close 0,close0
img$ = "C:\Users\klausgunther\Documents\Mes projets\Mes projets Delphi\KGF\TestImageList.dat" TV1% = dll_call6("CreateTreeView",handle(0),40,10,200,300,adr(img$)) res% = dll_call5("ResizeTreeView",TV1%,40,10,400,300) res% = dll_call5("ResizeTreeView",TV1%,M1%,M1%,M1%,M1%)
txt$ = "Racine" ind% = dll_call3("AddTreeViewRootNode",TV1%,adr(txt$),1) txt$ = "Enfant 1" child% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),2) txt$ = "Enfant 1a" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),3) res% = dll_call2("SelectTreeViewNode",TV1%,ind%) txt$ = "Enfant 2" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),4) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion devant enfant 1" if res%<=child% then child% = child% + 1 res% = dll_call4("InsertTreeViewNode",TV1%,0,adr(txt$),5) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion après enfant 1" res% = dll_call4("InsertTreeViewNode",TV1%,1,adr(txt$),4) ' res% = dll_call2("SelectTreeViewNode",TV1%,child%) ' res% = dll_call1("DeleteTreeViewNode",TV1%)
' res% = dll_call1("DeleteTreeView",TV1%)
end
close0: res% = dll_call1("DeleteTreeView",TV1%) return
Voici une capture d'écran: Sympa, ce qu'on peut faire en Panoramic, non ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 8 Fév 2016 - 18:56 | |
| Bravo Klaus ! Ce nouvel objet treeview va simplifier l' interface de beaucoup de nos applications/logiciels/programmes ( au choix ). | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Fév 2016 - 19:00 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 8 Fév 2016 - 19:08 | |
| Panoramic le mag du moins son serveur principal a aussi été attaqué. Je ne sais pas encore si l' adresse principale est redevenu accessible, je n' avais plus de connexion depuis hier avec la tempête, et ma première visite est pour le forum, mais j' ai aussi du créer un site miroir. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 8 Fév 2016 - 20:09 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 8 Fév 2016 - 20:59 | |
| Klaus, Sur quel système d' exploitation a tu codé la dll ? Je n' arrive plus à faire une Imagelist et encore moins afficher l' objet treeview... | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Fév 2016 - 23:26 | |
| Bonsoir Klaus,
Pareil pour moi, je ne vois pas comment mettre en oeuvre cet objet treeview de KGF ??? Il me serai surement très pratique pour GPP... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Fév 2016 - 23:33 | |
| Ben, je sous sous W10, mais j'utilise toujours mon vieux Delphi 6 Personal Edition en mode 32 bits, tout ce qui a de plus banal. Ca devrait même marcher sous XP... les APIs utilisés sont exactement les mêmes. Je n'utilise rien de propre à W10. Tous les outils de production de Delphi (l'IDE, le compilateurs, les librairies), tout est du 13 Juin 2001... on ne parlait même pas encode de Vista. EDIT Pour faire marcher TreeView, si vous n'avez pas le fichier de données pour l'objet ImageList, remplacez la ligne 13: - Code:
-
TV1% = dll_call6("CreateTreeView",handle(0),40,10,200,300,adr(img$)) par - Code:
-
TV1% = dll_call6("CreateTreeView",handle(0),40,10,200,300,0) ce qui a pour effet d'annuler les icônes, ou prenez le fichier TestImageList.dat dans mon WebDav, dossier DLLs\. Mais avec le petit outil publié ci-dessus, vous pouvez fabriquer le vôtre, avec le nombre d'icônes que vous voulez. J'ai choisi des icônes de 16x16 pixels, mais vous pouvez prendre 24x24 ou 32x32 - c'est une question visuelle, uniquement. Bien sûr, comme d'habitude, il faudra adapter le chemin... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Fév 2016 - 23:51 | |
| Oups... je viens de me rendre compte qu'il n'aimais pas le coup du zéro à la place du nom du fichier, en dernier paramètre. Ceci est corrigé, si vous rechargez à partir du WebDav ou du site miroir. La version savs icône donne ceci: et voici le code, modifié en la seule ligne 13: - Code:
-
' test_treeview.bas
label close0
dim res%, TV1%, txt$, ind%, child%, img$ dim M1% : m1% = 0 - 1
dll_on "KGF.dll"
on_close 0,close0
img$ = "C:\Users\klausgunther\Documents\Mes projets\Mes projets Delphi\KGF\TestImageList.dat" TV1% = dll_call6("CreateTreeView",handle(0),40,10,200,300,0) : ' adr(img$)) res% = dll_call5("ResizeTreeView",TV1%,40,10,400,300) res% = dll_call5("ResizeTreeView",TV1%,M1%,M1%,M1%,M1%)
txt$ = "Racine" ind% = dll_call3("AddTreeViewRootNode",TV1%,adr(txt$),1) txt$ = "Enfant 1" child% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),2) txt$ = "Enfant 1a" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),3) res% = dll_call2("SelectTreeViewNode",TV1%,ind%) txt$ = "Enfant 2" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),4) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion devant enfant 1" if res%<=child% then child% = child% + 1 res% = dll_call4("InsertTreeViewNode",TV1%,0,adr(txt$),5) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion après enfant 1" res% = dll_call4("InsertTreeViewNode",TV1%,1,adr(txt$),4) ' res% = dll_call2("SelectTreeViewNode",TV1%,child%) ' res% = dll_call1("DeleteTreeViewNode",TV1%)
' res% = dll_call1("DeleteTreeView",TV1%)
end
close0: res% = dll_call1("DeleteTreeView",TV1%) return
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 8 Fév 2016 - 23:53 | |
| J'avais signalé que le site normal a un problème suite à une attaque DOS sur leur serveur. Il faut prendre mon WebDav dossier DLLs, ou mon site miroir. Les deux liens sont dans la signature de tous mes posts. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mar 9 Fév 2016 - 0:02 | |
| Ok merci Klaus ca fonctionne ! Je regarderai cela en détail plus tard.
Juste une question : lors d'un click sur l'arborescence y a t il moyen de récupérer la chaîne sélectionnée ? Merci et bonne nuit ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 9 Fév 2016 - 0:05 | |
| Content que ça marche ! D'ailleurs, l'hébergeur de mon site principal vient de débloquer son serveur, j'ai mis mon site à jour dans la foulée, et tout est rentré dans l'ordre. Tu dis: - Code:
-
lors d'un click sur l'arborescence y a t il moyen de récupérer la chaîne sélectionnée ? Je suis en train de faire les interactions dans le sens TreeView=>Panoramic, et ça viendra bientôt. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 9 Fév 2016 - 2:24 | |
| KGF.dll V5.86 du 09/02/2016Nouveautés: - nouvelle fonction SetTreeViewEventReceiverModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cette fonction permet de créer ou supprimer un lien entre un objet TreeView existant et un EDIT Panoramicqui recevra les messages des évènements. On ON_CHANGE sur cet EDIT (invisible en général) permet de réagir sur les évènements. Voici le programme de démo, avec interception du clic et du double-click: - Code:
-
' test_treeview.bas
label close0, TV1_event
dim res%, TV1%, txt$, ind%, child%, img$ dim M1% : m1% = 0 - 1
dll_on "KGF.dll"
on_close 0,close0
edit 17 : hide 17 : on_change 17,TV1_event
img$ = "C:\Users\klausgunther\Documents\Mes projets\Mes projets Delphi\KGF\TestImageList.dat" TV1% = dll_call6("CreateTreeView",handle(0),40,10,200,300,adr(img$)) res% = dll_call5("ResizeTreeView",TV1%,40,10,400,300) res% = dll_call5("ResizeTreeView",TV1%,M1%,M1%,M1%,M1%)
txt$ = "Racine" ind% = dll_call3("AddTreeViewRootNode",TV1%,adr(txt$),1) txt$ = "Enfant 1" child% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),2) txt$ = "Enfant 1a" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),3) res% = dll_call2("SelectTreeViewNode",TV1%,ind%) txt$ = "Enfant 2" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),4) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion devant enfant 1" if res%<=child% then child% = child% + 1 res% = dll_call4("InsertTreeViewNode",TV1%,0,adr(txt$),5) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion après enfant 1" res% = dll_call4("InsertTreeViewNode",TV1%,1,adr(txt$),4) ' res% = dll_call2("SelectTreeViewNode",TV1%,child%) ' res% = dll_call1("DeleteTreeViewNode",TV1%)
' res% = dll_call1("DeleteTreeView",TV1%)
res% = dll_call3("SetTreeViewEventReceiver",TV1%,1,handle(17))
width 0,width(0) + 300 memo 18 : left 18,610 : width 18,200 : height 18,400 : bar_both 18
end
close0: res% = dll_call1("DeleteTreeView",TV1%) return TV1_event: item_add 18,"TV1: "+text$(17) return
@Ygeronimi: Tu as relevé à juste titre une erreur dans la doc pour CreateStringList. Elle a bien 2 paramètres, les deux derniers dans la version "4 paramètres" ont été supprimés. On retrouve ces 2 paramètres dans la fonction AddImageToImageList, pour pouvoir gérer la transparence séparément pour chaque image. Je corrigerai ce problème de doc pour la prochaine fois. Mais regarde le code mon programme de démo des ImageList, que je remets ici: - Code:
-
' test_ImageList.bas
label close0, nouveau, charger, sauver, fermer, uneimage
dim res%, f$, IL%, w%, h%
on_close 0,close0
alpha 1 : top 1,10 : left 1,10 : caption 1,"Largeur:" spin 2 : top 2,10 : left 2,60 : width 2,70 : min 2,12 : max 2,1024 : position 2,16 alpha 3 : top 3,10 : left 3,200 : caption 3,"Hauteur:" spin 4 : top 4,10 : left 4,250 : width 4,70 : min 4,12 : max 4,1024 : position 4,16
button 11 : top 11,40 : left 11,10 : caption 11,"Nouveau" : on_click 11,nouveau button 12 : top 12,40 : left 12,110 : caption 12,"Charger" : on_click 12,charger button 13 : top 13,40 : left 13,210 : caption 13,"Sauver" : on_click 13,sauver button 14 : top 14,40 : left 14,310 : caption 14,"Fermer" : on_click 14,fermer
button 21 : top 21,70 : left 21,110 : caption 21,"Image" : on_click 21,uneimage
open_dialog 31 save_dialog 32
dll_on "KGF.dll"
end
close0: if IL%<>0 then IL% = dll_call1("DeleteImageList",IL%) return nouveau: if IL%<>0 then IL% = dll_call1("DeleteImageList",IL%) w% = position(2) h% = position(4) IL% = dll_call2("CreateImageList",w%,h%) return charger: filter 31,"Fichier *.dat|*.dat" f$ = file_name$(31) if f$="_" then return if lower$(right$(f$,4))<>".dat" then f$ = f$ + ".dat" if file_exists(f$)=0 message "N'existe pas" return end_if res% = dll_call2("LoadImageList",IL%,adr(f$)) message "Résultat: "+str$(res%) return
sauver: filter 32,"Fichier *.dat|*.dat" f$ = file_name$(32) if f$="_" then return if lower$(right$(f$,4))<>".dat" then f$ = f$ + ".dat" if file_exists(f$)=1 if message_confirmation_yes_no("Existe déjà. Remplacer ?")<>1 then return end_if res% = dll_call2("SaveImageList",IL%,adr(f$)) message "Résultat: "+str$(res%) return
fermer: IL% = dll_call1("DeleteStringList",IL%) return uneimage: filter 31,"" f$ = file_name$(31) if f$="_" then return res% = dll_call4("AddImageToImageList",IL%,adr(f$),0,0) : ' 0,0 = pas de transparence ! message "Résultat: "+str$(res%) return
EDIT La doc est corrigée... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 9 Fév 2016 - 3:39 | |
| Pour les évènements avec TreeView: un évènement double_click génère systématiquement un évènement click avant le double-click. Ceci peu être indésirable si l'on ne veut traiter que le double clic. Voici une astuce pour éliminer ce simple clic parasite, tout en reconnaissant un simple clic normal: - Code:
-
' test_treeview.bas
label close0, TV1_event, timout
dim res%, TV1%, txt$, ind%, child%, img$, ClickFlag%, s$ dim M1% : m1% = 0 - 1
dll_on "KGF.dll"
on_close 0,close0
edit 17 : hide 17 : on_change 17,TV1_event timer 16 : timer_off 16 : timer_interval 16,200 : on_timer 16,timout
img$ = "C:\Users\klausgunther\Documents\Mes projets\Mes projets Delphi\KGF\TestImageList.dat" TV1% = dll_call6("CreateTreeView",handle(0),40,10,200,300,adr(img$)) res% = dll_call5("ResizeTreeView",TV1%,40,10,400,300) res% = dll_call5("ResizeTreeView",TV1%,M1%,M1%,M1%,M1%)
txt$ = "Racine" ind% = dll_call3("AddTreeViewRootNode",TV1%,adr(txt$),1) txt$ = "Enfant 1" child% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),2) txt$ = "Enfant 1a" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),3) res% = dll_call2("SelectTreeViewNode",TV1%,ind%) txt$ = "Enfant 2" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),4) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion devant enfant 1" if res%<=child% then child% = child% + 1 res% = dll_call4("InsertTreeViewNode",TV1%,0,adr(txt$),5) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion après enfant 1" res% = dll_call4("InsertTreeViewNode",TV1%,1,adr(txt$),4) ' res% = dll_call2("SelectTreeViewNode",TV1%,child%) ' res% = dll_call1("DeleteTreeViewNode",TV1%)
' res% = dll_call1("DeleteTreeView",TV1%)
res% = dll_call3("SetTreeViewEventReceiver",TV1%,1,handle(17))
width 0,width(0) + 300 memo 18 : left 18,610 : width 18,200 : height 18,400 : bar_both 18
end
close0: res% = dll_call1("DeleteTreeView",TV1%) return TV1_event: s$ = text$(17) if left$(s$,7)="double_" timer_off 16 ClickFlag% = 0 item_add 18,"TV1: "+s$ else ClickFlag% = 1 timer_on 16 end_if return
timout: timer_off 16 if ClickFlag%=1 ClickFlag% = 0 item_add 18,"TV1: "+s$ end_if return
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: KGF_dll - nouvelles versions Mar 9 Fév 2016 - 7:20 | |
| Bonjour Klaus.
Je viens de tester le clic, ça fonctionne très bien ! merci | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 9 Fév 2016 - 12:33 | |
| Chez moi, la version sans icone fonctionne mais j' ai un souci avec la creation d' imagelist. J' ai repris ton utilitaire et chaque fois que je veux ajouter une image j' ai un res%=-1. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 9 Fév 2016 - 13:26 | |
| Avec cet utilitaire, tu procèdes comme suit: 1. cliquer sur "Nouveau" ==> on crée un nouvel objet ImageList vide (objet non visuel !) 2. cliquer sur "Charger" ==> dialogue d'ouverture pour chercher un fichier de sauvegarde d'une ImageList (prendre le fichier TestImageList.dat sur mon WebDav, dossier DLLs\), ou ignorer cette étape pour construire une ImageList nouvelle. Avec mon fichier, cette étape retourne 5 (il y a déjà 5 images dans ce fichier). 3. pour chaque image à ajouter, cliquer sur le bouton "Image" ==> un dialogue d'ouverture permet de choisir un fichier image (dont les dimensions doivent correspondre à celles indiquées dans les objets SPIN en haut de la fenêtre !!!!!!). La fonction retourne le nombre d'images chargées, après l'ajout. 4. cliquer sur le bouton "Sauver" pour enregistrer le contenu de l'ImageList sur disque, sous la forme d'un fichier utilisable par le bouton "Charger".
Le bouton "Fermer" efface tout ce qui est en mémoire, sans sauvegarder.
Si tu suis ces étapes, ça doit marcher. MAis attention: il faut absolument que toutes, je tous bien TOUTES, les images d'une même ImageList aient les mêmes dimensions. Ceci est vérifié par la fonction d'ajout, et elle retourne -1 si ce n'est pas le cas. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 9 Fév 2016 - 15:23 | |
| KGF.dll V5.87 du 09/02/2016Nouveautés: - création dune version CreateTreeViewEx de CreateTreeView pour mieux gérer le double-clickModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Ceci rend inutile de gérer soi-même, par un timer, la reconnaissance du simple clic "parasite" dans le cas d'un double-click. Donc, on a maintenant: - CreateTreeView = comme avant - CreateTreeViewEx = identique, sauf élimination du simple clic dans le cas d'un double-clic Voici le programme de démo, permettant de choisir la version au lancement du programme: - Code:
-
' test_treeview.bas
label close0, TV1_event
dim res%, TV1%, txt$, ind%, child%, img$, ClickFlag%, s$ dim M1% : m1% = 0 - 1
dll_on "KGF.dll"
on_close 0,close0
edit 17 : hide 17 : on_change 17,TV1_event
img$ = "C:\Users\klausgunther\Documents\Mes projets\Mes projets Delphi\KGF\TestImageList.dat" if message_confirmation_yes_no("Optimiser le double-clic ?")=1 TV1% = dll_call6("CreateTreeViewEx",handle(0),40,10,200,300,adr(img$)) else TV1% = dll_call6("CreateTreeView",handle(0),40,10,200,300,adr(img$)) end_if
res% = dll_call5("ResizeTreeView",TV1%,40,10,400,300) res% = dll_call5("ResizeTreeView",TV1%,M1%,M1%,M1%,M1%)
txt$ = "Racine" ind% = dll_call3("AddTreeViewRootNode",TV1%,adr(txt$),1) txt$ = "Enfant 1" child% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),2) txt$ = "Enfant 1a" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),3) res% = dll_call2("SelectTreeViewNode",TV1%,ind%) txt$ = "Enfant 2" res% = dll_call3("AddTreeViewChildNode",TV1%,adr(txt$),4) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion devant enfant 1" if res%<=child% then child% = child% + 1 res% = dll_call4("InsertTreeViewNode",TV1%,0,adr(txt$),5) res% = dll_call2("SelectTreeViewNode",TV1%,child%) txt$ = "Insertion après enfant 1" res% = dll_call4("InsertTreeViewNode",TV1%,1,adr(txt$),4) ' res% = dll_call2("SelectTreeViewNode",TV1%,child%) ' res% = dll_call1("DeleteTreeViewNode",TV1%)
' res% = dll_call1("DeleteTreeView",TV1%)
res% = dll_call3("SetTreeViewEventReceiver",TV1%,1,handle(17))
width 0,width(0) + 300 memo 18 : left 18,610 : width 18,200 : height 18,400 : bar_both 18
end
close0: res% = dll_call1("DeleteTreeView",TV1%) return TV1_event: item_add 18,"TV1: "+text$(17) return
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 9 Fév 2016 - 20:17 | |
| Avec le mode d' emploi tout va tout de suite mieux... Par contre, pour "treeview" j' ai un message de type "Panoramic a cessé de fonctionner..." lors de la fermeture par la croix. Je pense qu' il faut ajouter la fonction "KillProcessByHandle" au label close0...non ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mer 10 Fév 2016 - 0:03 | |
| Oui, pour le moment... Ce problème est déjà corrigé dans la version que laquelle je suis en train de travailler et qui viendra prochainement. En attendant, c'est la solution. | |
| | | 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
| |
| |
| |