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 |
---|
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: KGF_dll - nouvelles versions Lun 23 Jan 2017 - 9:30 | |
| - Klaus a écrit:
Sur mon WebDav, il y a maintenant un dossier Cheetah. Il contient Cheetah4.dll (pour ceux qui veulent s'en servir sans KGF.dll, à partir de FreeBasic par exemple)
Je vais regarder. Ce pourrait être intéressant pour FBPano, et notamment pour les utilisateurs comme Ouf_ça_passe qui veulent faire de l'informatique de gestion. Quel est l'avantage de Cheetah par rapport à SQLite ? EDIT : D'après le forum FreeBASIC, il semble que Cheetah ne soit pas compatible Linux or cette compatibilité est une exigence de FBPano ! Je vais donc me replier sur SQLite. | |
| | | 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 Jan 2017 - 10:36 | |
| Voici un lien vers un wrapper PureBasic pour Cheetah: https://sourceforge.net/p/cheetahdatabase/patches/1/Donc, ça marche sous Linux... J'ai regardé SQL qui est cependant beaucoup plus lourd. Cheetah n'a pas toute la machinerie lourde qe QUERY, etc. Regarde le descriptif fait pour Cheetah -simple et facile mettre en oeuvre. J'ai pour le moment testé les fonctions avec le format DBASE (qui me suffit pour les types de données Panoramic !) et ça marche parfaitement: multi-clé, mémos, etc. EDIT Oups... j'ai compris le problème av ec Linux. La DLL étant écrite en PowerBasic, il faudrait la recompiler avec une version PowerBasic pour Linux. Or, il n'y en a pas. J'ai mentionné PureBasic qui tourne bien sous Linux, et il y a un wrapper pour Cheetah en PureBasic, mais, malheureusement, cela ne sezrt à rien si l'on ne peut pas avoir la DLL (ou ce qui sert d'équivalent soud Linux). Dont acte - pas de Cheetah sous Linux. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Jan 2017 - 12:24 | |
| Petit souci dans la doc Cheetah.
dim res%, base$, HandleBase% ... base$ ="disk="+"MaBase.dbf" res% = dll_call1("CheetahCloseDatabase",adr(HandleBase%))
if res%<>0 message "Erreur Cheetah en fermeture: "+str$(res%)
le petit morceau en gras rouge n' y est pas et sans cela ne fonctionne pas, res%=>1002. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Jan 2017 - 15:33 | |
| Merci, Ygeronimo. En fait, il y avait une double erreur dans la doc: - CheetahCloseDatabase n'a pas du tout besoin de la variable base$ - CheetahOpenDatabase par contre l'utilise, et là, cette variable présentait bien le défaut que tu as signalé.
Cheetah.chm est corrigé sur le WebDav. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 24 Jan 2017 - 21:30 | |
| Rien de grave Klaus. Je m' en suis rendu compte en comparant l' exemple de la doc qui ne fonctionnait pas chez moi avec ton exemple dans le dossier Cheetah. D' autres bricoles trainent sur kgf.chm mais il faut que je fasse une liste quand je les recroise. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 24 Jan 2017 - 21:46 | |
| La doc est tellement énorme (on a maintenant 965 fonctions !) que de telles choses peuvent parfaitement se produire. Dès que j'en suis averti, je corrige. Merci à tous ceux qui auront le réflexe de signaler des anomalies dans la doc. Je viens d'ailleurs ouvrir un fil de discussion spécifique, réservé aux signalements des erreurs dans la documentation. Je t'invite, ainsi que tous les Panoramiciens de bonne volonté, de se servir de ce fil de discussion spécifique pour signaler les anomalies de la documentation. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 3 Fév 2017 - 2:38 | |
| Nouvelle version: KGF.dll V7.15 du 03/02/2017Nouveautés: - Nouvelle fonction GetAllWindowsByTitleModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cette fonction est similaire à GetWindowByTitle, sauf qu'elle retourne la liste des handles et titres de toutes les fenêtres correspondant au critère, dans un mémo. Je l'utilise par exempe pour gérer les petites fenêtres aucxiliaires de uTorrent. Lorsqu'on soumet un torrent à uTorrent, et si l'on a configuré uTorrent pour demander une confirmation, alors il affiche une fenêtre pour chaque torrent demandé, en faisant tourner l'icône d'attente (la flèche tournante en cercle, sous W10) dans la barre d'état en bas. Et lorsque le torrent est trouvé, il affiche le contenu et attend une validation. Sauf que si l'on a soumis plusieurs torrents, l'écran est vite obstrué par ces fenêtres et on n'y voit plus clair. J'ai donc créé un petit outil qui va chercher toutes ce fenêtres et les affiche dans des mémos. On bouton permet ensuite de les organiser de sorte à optimiser l'espace, mais en gardant toujours le signal d'activité visible. Voici le code: - Code:
-
' PlacerFenetresUTorrent.bas
label recharger, ajuster_gauche, ajuster_droite, repartir, tout_droite, tout_gauche
dim x_partie_gauche% : x_partie_gauche% = 0 - 550 dim x_partie_droite% : x_partie_droite% = 790
dim res%, titre$, s$, i%, hnd%, x%(100),y%(100), gauche%, haut%, largeur%, hauteur%
full_space 0 memo 1 : left 1,10 : width 1,250 : height 1,400 : bar_both 1 list 2 : left 2,width(1)+10 : height 2,height(1) : width 2,60 list 3 : left 3,left(2)+width(2)+10 : height 3,height(1) : width 3,60
memo 11 : left 11,left(3)+width(3)+30 : width 11,250 : height 11,400 : bar_both 11 list 12 : left 12,left(11)+width(11)+10 : height 12,height(11) : width 12,60 list 13 : left 13,left(12)+width(12)+10 : height 13,height(11) : width 13,60
memo 21 : left 21,left(13)+width(13)+30 : width 21,250 : height 21,400 : bar_both 21 list 22 : left 22,left(21)+width(21)+10 : height 22,height(21) : width 22,60 list 23 : left 23,left(22)+width(22)+10 : height 23,height(21) : width 23,60
button 51 : top 51,height(11)+10 : left 51,left(1) : caption 51,"Recharger" : on_click 51,recharger button 52 : top 52,height(11)+10 : left 52,left(11) : caption 52,"Ajuster" : on_click 52,ajuster_gauche button 53 : top 53,height(11)+10 : left 53,left(21)+width(21)-width(53) : caption 53,"Ajuster" : on_click 53,ajuster_droite button 54 : top 54,height(11)+10 : left 54,left(51)+120 : caption 54,"<-Répartir->" : on_click 54,repartir button 55 : top 55,height(11)+10 : left 55,left(11)+width(11)-width(55) : caption 55,"Tout ==>" : on_click 55,tout_droite button 56 : top 56,height(11)+10 : left 56,left(21) : caption 56,"<== Tout" : on_click 56,tout_gauche
width 0,left(23)+width(23)+50 height 0,top(51)+80
dll_on "KGF.dll"
charger()
end
recharger: charger() return
ajuster_gauche: ajuster(11,x_partie_gauche%,40) return ajuster_droite: ajuster(21,x_partie_droite%,40) return repartir: repartir() gosub ajuster_gauche gosub ajuster_droite return tout_droite: deplacer(1) return
tout_gauche: deplacer(2) return
sub ajuster(mem%,lft%,delta%) dim_local y%, i%, s$, hnd% if count(mem%)=0 then exit_sub y% = screen_y - 520 for i%=1 to count(mem%) s$ = item_read$(mem%,i%) hnd% = val(left$(s$,instr(s$,"=")-1)) res% = DLL_call6("ChangeWindowSize",hnd%,1,lft%,y%,0,0) res% = DLL_call2("WindowTopMost",hnd%,1) res% = DLL_call2("WindowTopMost",hnd%,0) y% = y% - delta% next i% charger() end_sub
sub repartir() dim_local i%,d% if count(1)=0 then exit_sub clear 11 clear 12 clear 13 clear 21 clear 22 clear 23 i% = 0 d% = 0 while i%<count(1) i% = i% + 1 if d%=0 item_add 11,item_read$(1,i%) item_add 12,item_read$(2,i%) item_add 13,item_read$(3,i%) else item_add 21,item_read$(1,i%) item_add 22,item_read$(2,i%) item_add 23,item_read$(3,i%) end_if d% = 1 - d% end_while end_sub
sub charger() clear 1 clear 2 clear 3 clear 11 clear 12 clear 13 clear 21 clear 22 clear 23 titre$ = " - Ajouter un nouveau torrent" hnd% = dll_call3("GetAllWindowsByTitle",1,adr(titre$),handle(1)) if count(1)=0 then exit_sub
i%=0 while i%<count(1) i% = i% + 1 s$ = item_read$(1,i%) if instr(s$,"Ne répond pas")>0 item_delete 1,i% i% = i% - 1 else hnd% = val(left$(s$,instr(s$,"=")-1))
res% = DLL_call5("GetFormMetrics",hnd%,adr(gauche%),adr(haut%),adr(largeur%),adr(hauteur%)) x%(i%) = gauche% y%(i%) = haut% item_add 2,str$(gauche%) item_add 3,str$(haut%)
if gauche%<0 item_add 11,s$ item_add 12,str$(gauche%) item_add 13,str$(haut%) else item_add 21,s$ item_add 22,str$(gauche%) item_add 23,str$(haut%) end_if end_if end_while end_sub
sub deplacer(sens%) dim_local i% if count(1)=0 then exit_sub clear 11 clear 12 clear 13 clear 21 clear 22 clear 23 select sens% case 1: ' tout à droite for i%=1 to count(1) item_add 21,item_read$(1,i%) item_add 22,item_read$(2,i%) item_add 23,item_read$(3,i%) next i% case 2: ' tout à gauche for i%=1 to count(1) item_add 11,item_read$(1,i%) item_add 12,item_read$(2,i%) item_add 13,item_read$(3,i%) next i% end_select gosub ajuster_gauche gosub ajuster_droite end_sub
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 5 Fév 2017 - 10:44 | |
| Nouvelle version: KGF.dll V7.16 du 05/02/2017
Nouveautés: - TabObjectFunction code 3: si le paramètre ntab%<0, alors retourner le nombre de tabs existants - AddTabObjectTab: retourner le numéro du tab ajouté si réussite
Modules modifiés: KGF.dll KGF.chm
La doc et les sources sont à jour. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Fév 2017 - 1:14 | |
| Merci Klaus !
Je suis toujours de prêt ta DLL qui est un véritable couteau suisse pour PANORAMIC.
@tous Elle est LE complément idéal de PANORAMIC. De plus, elle a sa documentation très claire, très bien structurée, bref, très pédagogique. Elle fonctionne parfaitement bien. Elle est extrêmement rapide. Elle est exempte de bug et, bien sûr, de virus ! Je n’ai jamais pu la mettre en défaut. Je suis loin d’avoir utilisé et testé toutes les nombreuses fonctions qu’elle contient, mais à chaque fois que j’ai été confronté à un problème, c’était dû à une mauvaise syntaxe, ou une mauvaise compréhension de la fonction utilisée, ou une erreur de chronologie dans le déroulement du programme, ou bien encore un malheureux timer qui intervenait au mauvais moment… En programmation, les erreurs possibles sont nombreuses et on a vite fait d’accuser à tort KGF.DLL ! Ah, j’allais oublier : le S.A.V. , ou plutôt le S.A.P. (P pour Partage). Klaus est toujours là pour répondre promptement à tous ! C’était ma pensée sincère du soir. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Fév 2017 - 1:28 | |
| Nouvelle version: KGF.dll V7.17 du 06/02/2017Nouveautés: - nouvelle fonction SynchroniseListBoxesModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cette fonction permet enfin de synchroniser deux objets LIST, de sorte à afficher la ligne d'un même numéro comme première ligne de deux objets LIST ! On peut: - décaler les deux objets LIST à un même numéro de ligne - décaler la deuxième liste de sorte à afficher le même numéro de ligne que la première liste Pour un exemple, voir https://panoramic.1fr1.net/t5115-liste-des-dossiers-speciaux-de-windows#62691@Marc37: Merci beaucoup pour ce bel éloge ! Pas de bug - je ne pourrais pas le garantir. Par contre, dès qu'un bug est identifie, je m'engage à réparer au plus vite ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Fév 2017 - 10:44 | |
| Voici une démonstration de la puissance de la nouvelle fonction SynchronizeListBoxes. Le programme affiche une SCROLL_BAR verticale, calibrée de 1 à 1000. Il y a également 3 objets LIST, affichant, respecivvement les valeurs décimales de 1 à 1000, leurs équivalents eh hexa, et une représentation textuelle. La SCROLL_BAR permet de décaler les 3 listes de façon synchrone, en sélectionnant toujours l'élément visible en haut des objets LIST. Un clic dans un des objets LIST sélectionne automatiquement les lignes correspondantes dans les deux autres objets LIST. Si l'on a désynchronisé les 3 objets LIST à l'aide de leurs ascenseurs respectifs, un click dans un de ces objets les resynchonise automatiquement sur l'objet LIST cliqué. Tout ceci est vraiment une fonctionnalité qui manquait à Panoramic ! Voici le code: - Code:
-
' demo_SynchronizeListBoxes.bas
' Ce programme permet de montrer les possibilités de la fonction SynchronizeListBoxes.
label scroll, clic11, clic12, clic13
dim res%, ind%, i%
dll_on "KGF.dll"
full_space 0 scroll_bar 1 : left 1,10 :top 1,10 : height 1,20 : width 1,height(0)-100 : vertical 1 min 1,1 : max 1,1000 : position 1,1 : on_change 1,scroll alpha 2 : top 2,10+height(1)+10 : left 2,10 : caption 2,"1"
list 11 : top 11,10 : left 11,40 : width 11,60 : height 11,height(1) : on_click 11,clic11 list 12 : top 12,10 : left 12,110 : width 12,60 : height 12,height(1) : on_click 12,clic12 list 13 : top 13,10 : left 13,180 : width 13,150 : height 13,height(1) : on_click 13,clic13
for i%=1 to 1000 item_add 11,str$(i%) item_add 12,hex$(i%) item_add 13,str$(i%)+" (dec) = "+hex$(i%)+" (hexa)" next i%
end
scroll: ind% = position(1) caption 2,str$(ind%) res% = dll_call2("SelectListBoxItem",handle(11),ind%) res% = dll_call2("SelectListBoxItem",handle(12),ind%) res% = dll_call2("SelectListBoxItem",handle(13),ind%) res% = dll_call3("SynchronizeListBoxes",ind%,handle(11),handle(12)) res% = dll_call3("SynchronizeListBoxes",0,handle(11),handle(13)) return
clic11: ind% = item_index(11) res% = dll_call2("SelectListBoxItem",handle(12),ind%) res% = dll_call2("SelectListBoxItem",handle(13),ind%) res% = dll_call3("SynchronizeListBoxes",0,handle(11),handle(12)) res% = dll_call3("SynchronizeListBoxes",0,handle(11),handle(13)) return
clic12: ind% = item_index(12) res% = dll_call2("SelectListBoxItem",handle(11),ind%) res% = dll_call2("SelectListBoxItem",handle(13),ind%) res% = dll_call3("SynchronizeListBoxes",0,handle(12),handle(11)) res% = dll_call3("SynchronizeListBoxes",0,handle(12),handle(13)) return
clic13: ind% = item_index(13) res% = dll_call2("SelectListBoxItem",handle(11),ind%) res% = dll_call2("SelectListBoxItem",handle(12),ind%) res% = dll_call3("SynchronizeListBoxes",0,handle(13),handle(11)) res% = dll_call3("SynchronizeListBoxes",0,handle(13),handle(12)) return
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 6 Fév 2017 - 13:09 | |
| Voilà un outils de plus dans le couteau suisse... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Fév 2017 - 13:58 | |
| Nouvelle version: KGF.dll V7.18 du 06/02/2017Nouveautés: - nouvelle fonction ScrollGridModules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Cette fonction permet de décaler l'affichage d'un objet GRID de sorte à choisie la ligne et/ou la colonne qui s'affichera dans le coin en haut à gauche de la partie visible du GRID. C'est l'action des ascenseurs du GRID, mais contrôlée par programme. En voici une démo: - Code:
-
' demo_ScrollGridToRow.bas
label decaler
dim i%, res%
dll_on "KGF.dll"
full_space 0
grid 1 : width 1,800 : height 1,600 grid_row 1,300 : grid_column 1,100
alpha 10 : top 10,10 : left 10,830 : caption 10,"Ligne:" alpha 11 : top 11,40 : left 11,830 : caption 11,"Colonne:" spin 20 : top 20,10 : left 20,880 : width 20,60 : min 20,0 : max 20,300 : position 20,1 spin 21 : top 21,40 : left 21,880 : width 21,60 : min 21,0 : max 21,100 : position 21,1 button 30 : top 30,70 : left 30,880 : caption 30,"Décaler" : on_click 30,decaler
for i%=1 to 300 grid_write 1,i%,1,"R"+str$(i%) next i% for i%=1 to 200 grid_write 1,1,i%,"C"+str$(i%) next i%
end
decaler: res% = dll_call3("ScrollGrid",handle(1),position(20),position(21)) return
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 6 Fév 2017 - 17:17 | |
| Bien vu Klaus, on va pouvoir visualiser la partie du grid sur laquelle on travaille. Le couteau suisse kgf ne va plus tenir dans une poche... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 6 Fév 2017 - 19:20 | |
| Nouvelle version: KGF.dll V7.19 du 06/02/2017Nouveautés: -SyneditFunction: nouveau code opération 39Modules modifiés: KGF.dll KGF.chmLa doc et les sources sont à jour. Ce code prend en paramètre le handle d'un objet MEMO (qui peut être caché par HIDE, mais qui doit avoir l'attribut BAR_BOTH. La fonction retourne alors, dans ce mémo, 9 lignes de texte. Chaque ligne contient un seul nombre qui est le numéro de ligne pour le raccourci (bookmark) correspondant. Si un raccourci n'est pas défini, la valeur passée dans le mémo est zéro (0). Essayez le programme suivant: rentrer quelques lignes de texte dans le Synedit à gauche, définir quelques raccourcis, puis cliquer le bouton "test". On voit apparaître les numéros de ligne dans le mémo de droite. - Code:
-
' test_Synedit_Marqueur.bas
label change, close0, test
dim res%, SE%
dll_on "KGF.dll"
res% = dll_call0("SyneditInitialize") on_close 0,close0
edit 1 : hide 1 : on_change 1,change
SE% = dll_call2("SyneditCreate",handle(0),handle(1)) res% = dll_call5("SyneditGeometry",SE%,10,10,400,300)
res% = dll_call3("SyneditFunction",SE%,1,1)
button 2 : top 2,350 : left 2,10 : caption 2,"test" : on_click 2,test memo 3 : top 3,10 : left 3,450 : width 3,100 : height 3,400 : bar_both 3
end
change: caption 0,text$(1) return close0: res% = dll_call1("KillProcessByHandle",handle(0)) return test: res% = dll_call3("SyneditFunction",SE%,39,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 Lun 6 Fév 2017 - 21:24 | |
| | |
| | | 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
| |
| |
| |