FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Tout est tranquille
par Jean Claude Hier à 21:41

» Texte en gif animé
par JL35 Hier à 13:29

» BasicEditor
par Yannick Mer 20 Sep 2017 - 17:17

» Simuler l’appui d'une touche ou combinaison de touches.
par pascal10000 Lun 18 Sep 2017 - 19:30

» Utilisation de HVIEWER pour afficher des images
par papydall Lun 18 Sep 2017 - 17:43

» Panoramic et les gifs animés.
par papydall Lun 18 Sep 2017 - 16:32

» recover source
par pascal10000 Dim 17 Sep 2017 - 14:21

» Recent dans vos menu
par Jean Claude Sam 16 Sep 2017 - 11:41

» Comment centrer un texte 3D.
par pascal10000 Ven 15 Sep 2017 - 20:20

» Carte interface 16 entrées et 16 sorties
par Jicehel Ven 15 Sep 2017 - 16:30

» Version instantanée V 0.9.28i9 possédant l'objet SYNEDIT
par pascal10000 Ven 15 Sep 2017 - 16:20

» Compilateur FBPano
par jean_debord Ven 15 Sep 2017 - 9:59

» 1 (en analyse): 3D_TARGET_IS ne fonctionne pas sur 3D_TEXT
par Jack Jeu 14 Sep 2017 - 19:52

» Problème avec la 3D.
par Jack Jeu 14 Sep 2017 - 18:06

» Test de la 3D.
par mindstorm Mer 13 Sep 2017 - 19:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 KGF_dll - nouvelles versions

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : Précédent  1 ... 5, 6, 7 ... 23 ... 40  Suivant
AuteurMessage
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 24 Jan 2016 - 4: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5855
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 24 Jan 2016 - 11: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 24 Jan 2016 - 14: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Dim 24 Jan 2016 - 18: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 26 Jan 2016 - 17: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 8 Fév 2016 - 20:52

KGF.dll V5.85 du 08/02/2016

Nouveautés:
- complément dans la gestion de l'objet ImageList
- nouvel objet TreeView


Modules modifiés:
KGF.dll
KGF.chm


La 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 ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 8 Fév 2016 - 20:56

Bravo Klaus !

Ce nouvel objet treeview va simplifier l' interface de beaucoup de nos applications/logiciels/programmes ( au choix  Laughing ).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Lun 8 Fév 2016 - 21:00

Merci, Ygeronimi !

J'oubliais de dire: mon site principal http://klauspanoramic.comxa.com/index.html est inaccessible suite à une attaque DOS massive. Mon site miroir http://klauspanoramic.olympe.in/index.html est à jour, ainsi que le WebDav.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 8 Fév 2016 - 21: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.

Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 8 Fév 2016 - 22:09


scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 8 Fév 2016 - 22: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...
scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 1: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 1: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 1: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


Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 1: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 2: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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 2: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 4:24

KGF.dll V5.86 du 09/02/2016

Nouveautés:
- nouvelle fonction SetTreeViewEventReceiver

Modules modifiés:
KGF.dll
KGF.chm


La 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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 5: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

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 50
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 9:20

Bonjour Klaus.

Je viens de tester le clic, ça fonctionne très bien !
merci
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 9 Fév 2016 - 14: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.
scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 15: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mar 9 Fév 2016 - 17:23

KGF.dll V5.87 du 09/02/2016

Nouveautés:
- création dune version CreateTreeViewEx de CreateTreeView pour mieux gérer le double-click

Modules modifiés:
KGF.dll
KGF.chm


La 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 7991
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 9 Fév 2016 - 22:17

Avec le mode d' emploi tout va tout de suite mieux... Embarassed


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 ?
scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: KGF_dll - nouvelles versions   Mer 10 Fév 2016 - 2: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: KGF_dll - nouvelles versions   

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 6 sur 40Aller à la page : Précédent  1 ... 5, 6, 7 ... 23 ... 40  Suivant
 Sujets similaires
-
» Nouvelles versions éditeur et firmware FR3X
» Nouvelles versions de TC et TP
» Nouvelles versions de TypViewer 4.015 et suivantes
» Deux nouvelles versions de la Porsche 911 (type 991)
» Dacia : La Success Story Continue Avec Quatre Nouvelles Versions Et Séries Limitées

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: