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 |
|
|
| GestCompte | |
|
+4Minibug Klaus Jean Claude Yannick 8 participants | |
Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: GestCompte Mar 29 Mar 2016 - 16:00 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 29 Mar 2016 - 21:12 | |
| Ne te casse plus la tête, j' ai trouvé la solution dans un post datant de Mathusalem... Le Webdav est à jour... ...pour l' instant. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: GestCompte Mar 29 Mar 2016 - 23:53 | |
| Dois-je en conclure que ça marche ? J'en serais ravi - surtout que je suis pas mal pris par un autre truc qui traine depuis un moment, et qui est sur le train de se conclure... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 30 Mar 2016 - 0:14 | |
| Cela fonctionne... ( je serai inquiet de voir mon programme me tourner le dos et partir en courant ). Il y a une chose qui pourrait être bien, c' est une fonction ReadNextIsamRecordByKey. Car c' est ce que je croyais qu' il se fait avec ReadNextIsamRecord puisque je lui donnai tout comme pour ReadIsamRecordByKey. Mais en fait, non et là était mon erreur. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: GestCompte Mer 30 Mar 2016 - 0:39 | |
| - Citation :
- Car c' est ce que je croyais qu' il se fait avec ReadNextIsamRecord puisque je lui donnai tout comme pour
ReadIsamRecordByKey. Ben... c'est ce que cette fonction est supposée faire ! Normalement, la fonction ReadIsamRecordByKey met à jour la variable contenant la clé, su la clé lue n'est pas identique à celle demandée, ce qui devrait être rare. Mais en tout cas, ça fonctionne comme ça. Donc, il suffit tout simplement de présenter la même variable à ReadNextIsamRecord et le tour est joué. Tant que tu ne changes pas le numéro de la clé, ça devrait marcher. C'est ce que j'utilise dans mon logiciel de fiches de contact pour obtenir une liste des noms de tous les contacts... Voici l'extrait de la doc: - Citation :
- Cette fonction lit l'enregistrement suivant dans un fichier ISAM, en fonction du numéro de la clé passé en paramètre. Si l'enregistrement existe, il est lu et placé dans la variable contenant l'enregistrement. Une erreur est signalé en fin d'index.
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: GestCompte Mer 30 Mar 2016 - 10:58 | |
| Bonjour à tous, J'ai testé ce matin: Tout à l'air de bien fonctionner. Concernant la fonction de recherche, qui marche bien, personnellement je n'aurais pas séparé les dépenses des recettes (dans le combo des choix), ce qui permettrait d'avoir la différence (bien sure, du coup, il faut une colonne en plus pour le grid). C'est valable quelque soit le type de recherche choisi par l'utilisateur. Qu'en penses-tu ? Pour l'affichage Report n-1 dans le menu solde: j'ai 2 barres de défilement qui me bouche la vue des édit(s) et du bouton "Enregistrer". Voici la modification que j'ai faite à la sub RECUP_SOLDES_DEPART() pour adapter à Windows 10: - Code:
-
' ------------------------------------------------------------------------------ ' FENETRE DE RECUPERATION DES SOLDES DE DEBUT D EXERCICE ' ------------------------------------------------------------------------------
sub RECUP_SOLDES_DEPART() dim_local res% if object_exists(F_RecSoldAA%)=1 show F_RecSoldAA% else form F_RecSoldAA% height F_RecSoldAA%,150 width F_RecSoldAA%,350 top F_RecSoldAA%,(screen_y-height(F_RecSoldAA%))/2 left F_RecSoldAA%,(screen_x-width(F_RecSoldAA%))/2 caption F_RecSoldAA%,"Report N-1" alpha alphSRAA% parent alphSRAA%,F_RecSoldAA% top alphSRAA%,15 left alphSRAA%,5 caption alphSRAA%,"Solde Réel N-1 :" alpha alphSBAA% parent alphSBAA%,F_RecSoldAA% top alphSBAA%,45 left alphSBAA%,5 caption alphSBAA%,"Solde Banque N-1 :" edit ediSRAA% parent ediSRAA%,F_RecSoldAA% width ediSRAA%,80 top ediSRAA%,13 left ediSRAA%,width(F_RecSoldAA%)-(width(ediSRAA%)+40):' modifié pour W10
edit ediSBAA% parent ediSBAA%,F_RecSoldAA% width ediSBAA%,80 top ediSBAA%,43 left ediSBAA%,width(F_RecSoldAA%)-(width(ediSBAA%)+40):' modifié pour W10 button butSoldAA% parent butSoldAA%,F_RecSoldAA% top butSoldAA%,height(F_RecSoldAA%)-(height(butSoldAA%)+50):' modifié pour W10 left butSoldAA%,width(F_RecSoldAA%)-(width(butSoldAA%)+40):' modifié pour W10 caption butSoldAA%,"Enregistrer" cursor_point butSoldAA% on_click butSoldAA%,clic end_if FORMAT_NOMBRE(str$(SoldeReelAA)) text ediSRAA%,right$(string$(10," ")+RetFormat$,10) FORMAT_NOMBRE(str$(SoldeBankAA)) text ediSBAA%,right$(string$(10," ")+RetFormat$,10) res% = DLL_call2("WindowTopMost",handle(F_RecSoldAA%),1) end_sub
A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 30 Mar 2016 - 13:52 | |
| @ Klaus, Apparemment non, puisque je suis obligé de comparé le résultat de la recherche par ReadNextIsamRecord avec la valeur passée en paramètre... - Code:
-
' ------------------------------------------------------------------------------ ' REMPLISSAGE SUR RECHERCHE ' ------------------------------------------------------------------------------
sub RECHERCHE(it%) dim_local m%,res%,key$,sep$,N%,v$,fill$,op$,day$,tr$,lb$,md$,db$,ct$,p$,dc$,mois$,value$,i% N%=it% if NbrGS%>2 INIT_GRID_SEARCH() end_if res% = dll_call1("IsamFileIsOpen",Isam_ID%) if res%<0 m%=message_information_ok("Le fichier ISAM est fermé !") exit_sub end_if
if ISAM_inbase% >0 if N%=0 or N%=1 or N%=7 m%=message_information_ok("Vous devez sélectionner un mode.") exit_sub end_if ' DEPENSES if N%= 2 ' date sep$=" " value$=trim$(text$(ediSearch%)) SearchKeyValue%=2 key$=left$(Value$+string$(10," "),10) end_if if N%= 3 ' tiers sep$=" " value$=trim$(text$(CombTiersSearch%)) SearchKeyValue%=3 key$=left$(Value$+string$(20," "),20) end_if if N%= 4 ' mode de paieament sep$=" " value$=trim$(text$(combMdSearch%)) SearchKeyValue%=4 key$=left$(Value$+string$(4," "),4) end_if if N%= 5 ' montant sep$="*" value$=trim$(text$(ediSearch%)) FORMAT_NOMBRE(value$) Value$ = RetFormat$ SearchKeyValue%=5 key$=right$(string$(10,sep$)+Value$,10) end_if if N%= 6 ' pointage sep$=" " if checked(CheckSearch%)=1 : value$="X" : else : value$="" : end_if SearchKeyValue%=8 key$=left$(Value$+string$(3," "),3) end_if ' RECETTES if N%= 8 ' date sep$=" " value$=trim$(text$(ediSearch%)) SearchKeyValue%=2 key$=left$(Value$+string$(10," "),10) end_if if N%= 9 ' tiers sep$=" " value$=trim$(text$(CombTiersSearch%)) SearchKeyValue%=3 key$=left$(Value$+string$(20," "),20) end_if if N%= 10 ' mode de paiement sep$=" " value$=trim$(text$(combMdSearch%)) SearchKeyValue%=4 key$=left$(Value$+string$(4," "),4) end_if if N%= 11 ' montant sep$="*" value$=trim$(text$(ediSearch%)) FORMAT_NOMBRE(value$) Value$ = RetFormat$ SearchKeyValue%=6 key$=right$(string$(10,sep$)+Value$,10) end_if if N%= 12 ' pointage sep$=" " if checked(CheckSearch%)=1 : value$="X" : else : value$="" : end_if SearchKeyValue%=8 key$=left$(Value$+string$(3," "),3) end_if
' RECHERCHE ISAM_record$ = string$(ISAM_RecLen%," ") res% = dll_call4("ReadIsamRecordByKey",Isam_ID%,adr(ISAM_record$),SearchKeyValue%,adr(key$)) if res%>0 RecupValeursChampsEnrgt() if N%<7 and val(ValChpDebit$)>0 AddLineInGridSearch() else if N%>7 and Val(ValChpCredit$)> 0 AddLineInGridSearch() end_if end_if end_if while res% >0 ISAM_record$ = string$(ISAM_RecLen%," ") res% = dll_call4("ReadNextIsamRecord",Isam_ID%,adr(ISAM_record$),SearchKeyValue%,adr(key$)) if res% >0 if Value$ = trim$(key$) RecupValeursChampsEnrgt() if N%<7 and val(ValChpDebit$)>0 AddLineInGridSearch() else if N%>7 and Val(ValChpCredit$)> 0 AddLineInGridSearch() end_if end_if end_if end_if end_while ' masquage des objets hide CombTiersSearch% hide ediSearch% hide combMdSearch% hide CheckSearch% ' initialisation des objets text CombTypSearch%,"" text CombTiersSearch%,"" text ediSearch%,"" text combMdSearch%,"" mark_off CheckSearch% caption alphcaptvalSearch%,"" end_if end_sub
' ------------------------------------------------------------------------------
sub RecupValeursChampsEnrgt() dim_local res%,v$,fill$ ' opération v$=string$(5," ") : fill$ ="*" res% = dll_call5("ExtractIsamField",Isam_ID%,1,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpID$ = trim$(v$) ' date v$=string$(10," ") : fill$ =" " res% = dll_call5("ExtractIsamField",Isam_ID%,2,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpDate$ = trim$(v$) ' tiers v$=string$(20," ") : fill$ =" " res% = dll_call5("ExtractIsamField",Isam_ID%,3,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpTiers$ = trim$(v$) ' Libellé v$=string$(255," ") : fill$ =" " res% = dll_call5("ExtractIsamField",Isam_ID%,4,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpLib$ = trim$(v$) ' mode v$=string$(4," ") : fill$ =" " res% = dll_call5("ExtractIsamField",Isam_ID%,5,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpMode$ = trim$(v$) ' debit v$=string$(10," ") : fill$ ="*" res% = dll_call5("ExtractIsamField",Isam_ID%,6,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpDebit$ = trim$(v$) ' credit v$=string$(10," ") : fill$ ="*" res% = dll_call5("ExtractIsamField",Isam_ID%,7,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpCredit$ = trim$(v$) ' pointage v$=string$(3," ") : fill$ =" " res% = dll_call5("ExtractIsamField",Isam_ID%,8,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpPointe$ = trim$(v$) ' doc v$=string$(3," ") : fill$ =" " res% = dll_call5("ExtractIsamField",Isam_ID%,9,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpDoc$ = trim$(v$) ' mois v$=string$(3," ") : fill$ ="*" res% = dll_call5("ExtractIsamField",Isam_ID%,10,adr(ISAM_record$),adr(v$),adr(fill$)) ValChpMois$=trim$(v$) end_sub
' ------------------------------------------------------------------------------
sub AddLineInGridSearch() Grid_write gridSearch%,NbrGS%,1,right$(string$(5,"0")+ValChpID$,5) Grid_write gridSearch%,NbrGS%,2,ValChpDate$ Grid_write gridSearch%,NbrGS%,3,ValChpTiers$ Grid_write gridSearch%,NbrGS%,4,ValChpLib$ Grid_write gridSearch%,NbrGS%,5,ValChpMode$ Grid_write gridSearch%,NbrGS%,6,right$(string$(10," ")+ValChpDebit$,10) Grid_write gridSearch%,NbrGS%,7,right$(string$(10," ")+ValChpCredit$,10) Grid_write gridSearch%,NbrGS%,8,ValChpPointe$ Grid_write gridSearch%,NbrGS%,9,ValChpDoc$ NbrGS% = NbrGS%+1 Grid_row_insert gridSearch%,NbrGS% end_sub
@ Jean Claude, Les ascenseurs m' arrivent parfois entre le source executé dans Panoramic-Editor et la version Executable aussi. Quelques pixels en plus de marge et cela disparait. Ceci dit, je prends ta petite modif. Pour la séparation des débits et crédits, j' ai mis comme cela pour pouvoir compléter les recherches par d'autres clés plus tard et bien pouvoir visualiser ce que les enregistrements sont. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: GestCompte Mer 30 Mar 2016 - 15:29 | |
| - Citation :
- Apparemment non, puisque je suis obligé de comparé le résultat de la recherche par ReadNextIsamRecord avec
la valeur passée en paramètre... C'est plutôt normal non ? La fonction ReadNextIsamRecord lit l'enregistrement suivant, dans l'ordre de la même clé. Et il paraît normal que tu trouves un changement de clé, en général... Suppose la suite des enregistrements suivants, avec deux champs: nom et prénom. Le nom est la clé. Voici les enregistrements: Bordeaux, Jean Chevallier, Marie Dupund, Jacques Dupond, Pierre Fontaine, AlainTu fais une lecture avec la clé "Chevalier". Tu récupères donc "Chevalier, Marie". Maintenant un appel à ReadNextIsamRecord te donne "Dupund, Jacques". Normal, non ? Mais changement de clé... Ensuite, un appel à ReadNextIsamRecord te donne "Dupond, Pierre". Pas de changement de clé... Le prochain appel à ReadNextIsamRecord te donne "Fontaine, Alain". Changement de clé... Tu vois le principe ? Essaie de faire un petit code de quelques lignes: - ouvrir le fichier ISAM concerné - faire une lecture par clé d'un enregistrement quelconque - faire une boucle de ReadNextIsamRecord jusqu'à une erreur (res%<0), et affiche chaque fois la clé résultante, l'enregistrement et res% Ensuite, on pourra faire un diagnostic plus précis de ce qui ne va pas, ou de ce que tu as mal compris. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 30 Mar 2016 - 16:34 | |
| Dans mon cas, je fais une recherche des enregistrement sur une date ( par exemple ) étant donné que je passe les même paramètres à ReadIsamRecordByKey et ReadIsamNextRecord, je m' attends à ce que le premier me donne le premier enregistrement et l' autre le suivant avec la valeur de cette clé. Là si je suis à l' enregistrement 12, next me lit le 13 et ne s' occupe pas de la valeur passée en paramètres Si j' ai 14 enregistrements, le 1 et le 10 ont la même date, je fais une recherche sur la clé "date" avec la date en valeur
ReadIsamRecordByKey, me lit le 1
ReadIsamNextRecord, me lit le 2 et pas le 10 alors que je lui donne la même clé avec la même valeur à chercher. et c' est le fait de passer ces même paramètres qui m' a induit dans l' erreur. je m' attendais à ce qu' il se positionne directement au 10.
De toute façon, il n' y a rien de grave, c' est juste qu' il faut s' en rappeler quand on utilise cette fonction c' est tout. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: GestCompte Mer 30 Mar 2016 - 16:53 | |
| Franchement, Ygeronimi, ce n'est pas clair, ton histoire. Tu peux faire ce que j'ai suggéré ci-dessus ? Fais un petit code pour remplir un mémo avec les enregistrements lus séquentiellement (par NEXT), et tu verras bien ce qu'il te retourne.
Comment as-u codé la date ? Si tu veux avoir une lecture séquentielle selon la date, tu ne peux pas la mémoriser dans le format retourné par date$. Il faut la mémoriser dans un format aaaammjj ou aaaa/mm/jj, mais avec l'année codée sur 4 chiifres, me mois sur 2 chiffres et le jour sur 2 chiffres, avec des "0" devant les mois ou jours à un seul chiffre. Si tu ne fais pas cela, la lecture séquentielle fonctionnera techniquement, mais donnera des résultats auxquels tu ne t'attends pas, intuitivement. Exemple: si tu codes la date sellon le format date$, alors la date 1/04/2016 est avant lle 28/03/2016 etc. Sache que la comparaison se fait selon la chaîne de caractères, à partir de la gauche, caractère par caractère. Et c'est pourquoi l'année doit être au début, sur 4 caractères numériques, puis le mois sur 2 caractères, sous forme de "01", "02"..."12", et enfin le jour sous forme "01", "02"..."31". Toute autre représentation d'une date produira des résultats inattendus lors de la lecture séquentielle. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 30 Mar 2016 - 17:40 | |
| En fait, mon Pb viendrait plus de Res% que de la fonction elle même. le truc est que :
res% = 0 si fin d' index Res% > 0 N° enregistrement lu et donc toujours >0 même si key$ lu<>key$ passée
donc une boucle while res%>0 continue même si key$ lu<>key$ passée Res% devrait être <0 si key$ lu<>key$ passée | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: GestCompte Mer 30 Mar 2016 - 18:03 | |
| - Citation :
- donc une boucle while res%>0 continue même si key$ lu<>key$ passée
Non, Ygeronimi. Tu n'as pas compris le fonctionnement de cette fonction. La doc dit bien ce que ça fait: la lecture se produit séquentiellement selon la clé indiquée, jusqu'à la fin du fichier. Si tu veux faire ce qu'on appelle des "ruptures" en termes d'informatique de gestion, alors il te revient de coder toi-même ta condition de rupture. Comme par exemple le changement de valeur de la clé, mais ça peut être n'importe quoi d'autre. La fonction de lecture séquentielle n'est pas supposée "interpréter" les données. Elle te donne simplement l'enregistrement suivant, tel qu'il est pointé par les indexes. Mais qu'est-ce qui t'empêche de coder une SUB contenant cette fonction, et dans laquelle tu fais ton test, et tu positionnes une variable globale quelconque pour indiquer ta condition de fin ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 30 Mar 2016 - 18:22 | |
| Dans un sens, tant mieux, cela nous permet de rester maître sur la machine. Même si elle ne fait pas ce que je veux... Je viens de me rendre compte que ce qui me paraissait être un défaut pourrait bien me servir pour remplir mes grids au départ. Je viens de m' apercevoir que mes enregistrements étaient triés par ID et que la logique voudrait que visuellement ce soit par date. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: GestCompte Mer 30 Mar 2016 - 18:36 | |
| Eh bien, pas de problème si la date est également définie comme une clé... alors, pour remplir ton tableau, tu lis selon la clé "date" et non selon la clé "ID".
Dernière édition par Klaus le Mer 30 Mar 2016 - 18:55, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 30 Mar 2016 - 18:44 | |
| Effectivement. Bon, aller, Pause Ordi, je vais ouvrir des huîtres. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 2 Avr 2016 - 10:44 | |
| Mise à jour de GestCompte.zip sur mon webdav. Le programme utilise maintenant l' objet StringGrig de KGF.dll. oups... correction d' un bug. mise à jour 02/04/2016 à 11h35 | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 2 Avr 2016 - 14:25 | |
| Mise à jour du zip.
Possibilité de modifier les montant d' une opération sur N et N-1
Nouvelle mise à jour à 15h52 ( correctif ) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| | | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 4 Avr 2016 - 19:51 | |
| Je viens de mettre une dernière mise à jour de GestCompte. rien de neuf mais une sécurité dans le code grâce à la dernière version de KGF. Ce programme est améliorable dans ses fonctionnalités. Libre à vous de l' améliorer. Perso, je le mets en suspens, je me lance dans un programme qui pourrait m' être utile dans mon nouveau Job. | |
| | | Ouf_ca_passe
Nombre de messages : 285 Age : 76 Localisation : Villeneuve d'Ascq (59-Dpt du NORD) France Date d'inscription : 21/12/2015
| Sujet: Hé ben Mar 19 Avr 2016 - 18:13 | |
| Bonjour ygeronimi
J'ai vu que tu utilisais des DLLs pour développer. N'y a-t-il pas possibilité de réaliser avec uniquement des instructions PANORAMIC ? Déjà que j'ai bien du mal comme ça. Je vais pas passer aux DLLs. D'ailleurs, c'est quoi des DLLs. On les trouve où ? On les téléchargent, et puis après, on les met dans quel dossier du PC ?
Comme je n'y connais rien, je ne peux pas tester ton fichier et c'est pourtant ça que je voudrais faire (comme avec un tableur) mais je ne sais pas si GRID convient.
Bonne soirée aux PANORAMICIEN(NE)S | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 19 Avr 2016 - 18:26 | |
| GestCompte est faisable en Panoramic pur. Les objets que j' utilise de la dll de klaus, c' est pour un aspect plus "pro". Certains fonctions sont bien pratique aussi car elles me dispensent de quelques dizaines de lignes de code. Pour ce qui est d' une dll, c' est un fichier contenant des fonctions. Mais là, je ne suis pas le plus pédagogue pour t' expliquer clairement la chose et, pour débuter, il vaut mieux que tu te familiarises avec le langage Panoramic avant d' utiliser des dlls. Pour obtenir KGF.dll, c' est tout simple, il suffit d' aller sur le site Klaus et de la télécharger. Pour savoir où la mettre, c' est un peu comme tu le sens. Pour ma part, j' ai créé un dossier dans "C:\" du nom de la dll ce qui me donne "C:\KGF\KGF.dll" comme adresse de celle-ci. Je vais essayer de faire une version Tout Panoramic, mais je ne promets rien. J' attendais les évolutions du StringGrid pour me lancer avec KGF.dll. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: GestCompte Mar 19 Avr 2016 - 19:36 | |
| Les fichiers dll ont une extension qui se termine par .dll. DLL est l'acronyme de Dynamic Link Library, ce qu'on pourrait traduire par Bibliothèque de liens dynamiques. En règle générale un fichier DLL contient du code ou des ressources qui sont rendus disponibles à d'autres applications, il a tendance à faciliter la vie du développeur. Lorsqu'une application sollicite un fichier DLL il est d'abord recherché dans le répertoire utilisé par cette application, puis dans les répertoires inclus dans la variable d'environnement de chemin de windows. Votre système d’exploitation Windows est fourni avec une multitude de fichiers DLL. Ils sont dans C:\Windows\System32Afficher ce dossier pour avoir une idée sur les quelques milliers de fichiers DLL. Personnellement, j’ai crée un dossier sur le bureau nommé DLL où j’ai mis les DLL (autres que celles du système) telle que l’incontournable KGF.DLL de Klaus. Et pour que le programme Panoramic (ou autre) sache où chercher la DLL, il suffit d’ajouter le chemin de la DLL à la variable d’environnement Path. Pour cela j’ai posté la marche à suivre pour le faire, c’est ici | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 19 Avr 2016 - 23:47 | |
| Merci Papydall pour Ouf ca passe. Voilà un début de gest-compte sans dll : - Code:
-
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' Main ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
hide 0 variables() constantes() labels() init() gui() show 0 end
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' DECLARATIONS ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub variables() dim no% dim EtatLog% dim EtatAppli% dim An1$ dim ActiveListe$ end_sub
sub constantes() dim_local i% ' dossier courant dim path$ : path$ = dir_current$ if right$(path$,1)="\" : path$=left$(path$,len(path$)-1) : end_if path$=path$+"\" ' dossiers annexes dim DirInf$ : DirInf$ = path$+"inf\" dim DirFil$ : DirFil$ = path$+"files\" dim DirImg$ : DirImg$ = path$+"img\" ' fichiers dim ListImput$ : ListImput$ = DirInf$+"ListImput.inf" dim ListLib$ : ListLib$ = DirInf$+"ListLib.inf" dim ListMdp$ : ListMdp$ = DirInf$+"ListMdp.inf" dim CptParam$ : CptParam$ = DirInf$+"Param.inf" ' objets panoramic ' form principale dim mm% : no%=no%+1 : mm%=no% dim sm%(50) : for i%=1 to 50 : no%=no%+1 : sm%(i%)=no% : next i% dim pan%(5) : for i%=0 to 5 : no%=no%+1 : pan%(i%)=no% : next i% dim Table%(2) : for i%=1 to 2 : no%=no%+1 : Table%(i%)=no% : next i% dim feuil%(12): for i%=1 to 12 : no%=no%+1 : feuil%(i%)=no% : next i% dim Gril%(12) : for i%=1 to 12 : no%=no%+1 : Gril%(i%)=no% : next i% dim MemoEtat% : no%=no%+1 : MemoEtat%=no% ' form a propos dim Fen_APP% : no%=no%+1 : Fen_APP%=no% dim AlphAPP% : no%=no%+1 : AlphAPP%=no% ' form compte dim Fen_CPTE% : no%=no%+1 : Fen_CPTE%=no% dim ContCpte%(4) : for i%=1 to 4 : no%=no%+1 : ContCpte%(i%)=no% : next i% dim butValidCpte%: no%=no%+1 : butValidCpte%=no% ' form opération dim Fen_OPE% : no%=no%+1 : Fen_OPE%=no% ' form listes dim Fen_LIST% : no%=no%+1 : Fen_LIST%=no% dim listListe%: no%=no%+1 : listListe%=no% dim butListe% : no%=no%+1 : butListe%=no% end_sub
sub labels() label clic,change,dclic,close0,closeFormAnnexe,fin end_sub
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' INITIALISATIONS ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub init() if dir_exists(DirInf$)=0 then dir_make DirInf$ if dir_exists(DirFil$)=0 then dir_make DirFil$ if dir_exists(DirImg$)=0 then dir_make DirImg$
DefineEtatLog()
end_sub
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' INTERFACE UTILISATEUR ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub gui() dim_local h%,w%,i%,month$,sep%
month$="Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre,"
height 0,700 width 0,1200 top 0,(screen_y-height(0))/2 left 0,(screen_x-width(0))/2 caption 0,"Gest-Compte Facile"
main_menu mm% sub_menu sm%(1) : parent sm%(1),mm% : caption sm%(1),"Fichiers" sub_menu sm%(2) : parent sm%(2),mm% : caption sm%(2),"Listes" sub_menu sm%(3) : parent sm%(3),mm% : caption sm%(3),"Affichage" sub_menu sm%(4) : parent sm%(4),mm% : caption sm%(4),"Opérations" sub_menu sm%(5) : parent sm%(5),mm% : caption sm%(5),"Compte" : on_click sm%(5),clic sub_menu sm%(6) : parent sm%(6),mm% : caption sm%(6),"A Propos..." : on_click sm%(6),clic sub_menu sm%(7) : parent sm%(7),mm% : caption sm%(7),"Aide"
sub_menu sm%(10) : parent sm%(10),sm%(1) : caption sm%(10),"Ouvrir" sub_menu sm%(11) : parent sm%(11),sm%(1) : caption sm%(11),"Fermer" sub_menu sm%(12) : parent sm%(12),sm%(1) : caption sm%(12),"-" sub_menu sm%(13) : parent sm%(13),sm%(1) : caption sm%(13),"Exporter" sub_menu sm%(14) : parent sm%(14),sm%(1) : caption sm%(14),"-" sub_menu sm%(15) : parent sm%(15),sm%(1) : caption sm%(15),"Imprimer" sub_menu sm%(16) : parent sm%(16),sm%(1) : caption sm%(16),"-" sub_menu sm%(17) : parent sm%(17),sm%(1) : caption sm%(17),"Quitter"
sub_menu sm%(18) : parent sm%(18),sm%(2) : caption sm%(18),"Imputations" : on_click sm%(18),clic sub_menu sm%(19) : parent sm%(19),sm%(2) : caption sm%(19),"Libellés" : on_click sm%(19),clic sub_menu sm%(20) : parent sm%(20),sm%(2) : caption sm%(20),"Modes de paiement": on_click sm%(20),clic
sub_menu sm%(26) : parent sm%(26),sm%(3) : caption sm%(26),"Comptes" : on_click sm%(26),clic sub_menu sm%(27) : parent sm%(27),sm%(3) : caption sm%(27),"Etat" : on_click sm%(27),clic sub_menu sm%(28) : parent sm%(28),sm%(3) : caption sm%(28),"Graphique" : on_click sm%(28),clic
sub_menu sm%(21) : parent sm%(21),sm%(4) : caption sm%(21),"Crédit" : on_click sm%(21),clic sub_menu sm%(22) : parent sm%(22),sm%(4) : caption sm%(22),"Débit" : on_click sm%(22),clic
sub_menu sm%(23) : parent sm%(23),sm%(10) : caption sm%(23),"N" sub_menu sm%(24) : parent sm%(24),sm%(10) : caption sm%(24),"N-1" sub_menu sm%(25) : parent sm%(25),sm%(10) : caption sm%(25),"Archive" ActiveMenu()
' panel de mesure de l' espace de travail panel pan%(0) : full_space pan%(0) : h%=height(pan%(0)) : w%=width(pan%(0)) : hide pan%(0)
' panel de la toolbar panel pan%(1) height pan%(1),26 width pan%(1),w% top pan%(1),0 left pan%(1),0 color pan%(1),254,211,110
' panel de visualisation du classeur panel pan%(2) height pan%(2),h%-52 width pan%(2),w% top pan%(2),26 left pan%(2),0 color pan%(2),254,234,185 hide pan%(2)
' classeur mensuel Container_Tab Table%(1) parent Table%(1),pan%(2) height Table%(1),height(pan%(2)) width Table%(1),width(pan%(2)) top Table%(1),0 left Table%(1),0
for i%=1 to 12 sep%= instr(month$,",") Tab feuil%(i%) parent feuil%(i%),Table%(1) caption feuil%(i%),left$(month$,sep%-1) month$=right$(month$,len(month$)-sep%) Grid Gril%(i%) parent Gril%(i%),feuil%(i%) height Gril%(i%),height(Table%(1))-28 width Gril%(i%),width(Table%(1))-10 top Gril%(i%),0 left Gril%(i%),0 grid_row_fixed Gril%(i%),1 grid_column_fixed Gril%(i%),0 grid_row Gril%(i%),50 grid_column Gril%(i%),9 grid_one_column_width Gril%(i%),1,50 grid_write Gril%(i%),1,1,"N°" grid_one_column_width Gril%(i%),2,100 grid_write Gril%(i%),1,2,"Date" grid_one_column_width Gril%(i%),3,150 grid_write Gril%(i%),1,3,"Imputation" grid_one_column_width Gril%(i%),4,480 grid_write Gril%(i%),1,4,"Libellé" grid_one_column_width Gril%(i%),5,80 grid_write Gril%(i%),1,5,"Mode" grid_one_column_width Gril%(i%),6,100 grid_write Gril%(i%),1,6,"Débits" grid_one_column_width Gril%(i%),7,100 grid_write Gril%(i%),1,7,"Crédits" grid_one_column_width Gril%(i%),8,40 grid_write Gril%(i%),1,8,"P" grid_one_column_width Gril%(i%),9,40 grid_write Gril%(i%),1,9,"Doc" next i%
' panel de visualisation des états panel pan%(3) height pan%(3),h%-52 width pan%(3),w% top pan%(3),26 left pan%(3),0 color pan%(3),254,234,185 hide pan%(3) memo MemoEtat% parent MemoEtat%,pan%(3) full_space MemoEtat% bar_both MemoEtat%
' panel de visualisation des graphiques panel pan%(4) height pan%(4),h%-52 width pan%(4),w% top pan%(4),26 left pan%(4),0 color pan%(4),254,234,185 hide pan%(4)
' panel de la statutbar panel pan%(5) height pan%(5),26 width pan%(5),w% top pan%(5),h%-26 left pan%(5),0 color pan%(5),254,211,110 end_sub
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub FormLISTE(type%) if object_exists(Fen_LIST%)=1 show Fen_LIST% else form Fen_LIST% height Fen_LIST%,350 width Fen_LIST%,250 top Fen_LIST%,(screen_y-height(Fen_LIST%))/2 left Fen_LIST%,(screen_x-width(Fen_LIST%))/2 on_close Fen_LIST%,closeFormAnnexe list listListe% parent listListe%,Fen_LIST% height listListe%,height(Fen_LIST%)-68 width listListe%,width(Fen_LIST%)-8 top listListe%,0 left listListe%,0 button butListe% parent butListe%,Fen_LIST% height butListe%,24 width butListe%,24 top butListe%,height(Fen_LIST%)-60 left butListe%,width(Fen_LIST%)-40 caption butListe%,"+" cursor_point butListe% on_click butListe%,clic end_if to_foreground Fen_LIST% inactive 0 if type%=1 caption Fen_LIST%,"Imputations" ActiveListe$=ListImput$ else if type%=2 caption Fen_LIST%,"Libellés" ActiveListe$=ListLib$ else caption Fen_LIST%,"Modes de paiement" ActiveListe$=ListMdp$ end_if end_if clear listListe% if file_exists(ActiveListe$)=1 : file_load listListe%,ActiveListe$ : end_if end_sub
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub FormOPE(type%) if object_exists(Fen_OPE%)=1 show Fen_OPE% else form Fen_OPE% height Fen_OPE%,350 width Fen_OPE%,500 top Fen_OPE%,(screen_y-height(Fen_OPE%))/2 left Fen_OPE%,(screen_x-width(Fen_OPE%))/2 on_close Fen_OPE%,closeFormAnnexe end_if to_foreground Fen_OPE% inactive 0 if type%=1 caption Fen_OPE%,"Opération [Crédit]" else caption Fen_OPE%,"Opération [Débit]" end_if end_sub
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub FormCPTE() if object_exists(Fen_CPTE%)=1 show Fen_CPTE% else form Fen_CPTE% height Fen_CPTE%,500 width Fen_CPTE%,750 top Fen_CPTE%,(screen_y-height(Fen_CPTE%))/2 left Fen_CPTE%,(screen_x-width(Fen_CPTE%))/2 caption Fen_CPTE%,"Compte" on_close Fen_CPTE%,closeFormAnnexe container ContCpte%(1) parent ContCpte%(1),Fen_CPTE% height ContCpte%(1),(height(Fen_CPTE%)-60)/2 width ContCpte%(1),(width(Fen_CPTE%)-20)/2 top ContCpte%(1),10 left ContCpte%(1),5 caption ContCpte%(1)," Banque " container ContCpte%(2) parent ContCpte%(2),Fen_CPTE% height ContCpte%(2),(height(Fen_CPTE%)-60)/2 width ContCpte%(2),(width(Fen_CPTE%)-20)/2 top ContCpte%(2),10 left ContCpte%(2),(10+width(ContCpte%(1))) caption ContCpte%(2)," Titulaire " container ContCpte%(3) parent ContCpte%(3),Fen_CPTE% height ContCpte%(3),(height(Fen_CPTE%)-60)/2 width ContCpte%(3),width(Fen_CPTE%)-250 top ContCpte%(3),(15+height(ContCpte%(1))) left ContCpte%(3),5 caption ContCpte%(3)," Compte " button butValidCpte% parent butValidCpte%,Fen_CPTE% top butValidCpte%,height(Fen_CPTE%)-70 left butValidCpte%,width(Fen_CPTE%)-(width(butValidCpte%)+20) caption butValidCpte%,"Enregistrer" cursor_point butValidCpte% on_click butValidCpte%,clic end_if to_foreground Fen_CPTE% inactive 0 end_sub
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub FormAPP() if object_exists(Fen_APP%)=1 show Fen_APP% else form Fen_APP% height Fen_APP%,200 width Fen_APP%,350 top Fen_APP%,(screen_y-height(Fen_APP%))/2 left Fen_APP%,(screen_x-width(Fen_APP%))/2 caption Fen_APP%,"A Propos..." on_close Fen_APP%,closeFormAnnexe alpha AlphAPP% parent AlphAPP%,Fen_APP% top AlphAPP%,10 left AlphAPP%,10 caption AlphAPP%,"Gest-Comptes Facile"+chr$(13)+chr$(13)+"Créé par ygeronimi - 19/04/2016" end_if to_foreground Fen_APP% inactive 0 end_sub
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' MENUS ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
clic: if number_click = sm%(5) FormCPTE() return end_if if number_click = sm%(6) FormAPP() return end_if if number_click = sm%(18) FormLISTE(1) return end_if if number_click = sm%(19) FormLISTE(2) return end_if if number_click = sm%(20) FormLISTE(3) return end_if if number_click = sm%(21) FormOPE(1) return end_if if number_click = sm%(22) FormOPE(0) return end_if if number_click = sm%(26) AffichagePanel(2) return end_if if number_click = sm%(27) AffichagePanel(3) return end_if if number_click = sm%(28) AffichagePanel(4) return end_if if object_exists(Fen_LIST%)=1 if number_click = butListe% AddToListe() return end_if end_if if object_exists(Fen_CPTE%)=1 if number_click = butValidCpte% SaveInfoCompte() ActivePrincipale() DefineEtatLog() ActiveMenu() hide Fen_CPTE% return end_if end_if return
change: return
dclic: return
close0: return
closeFormAnnexe: ActivePrincipale() return
fin: return
' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ' FONCTIONS ' ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sub ActiveMenu() dim_local i% if EtatLog%=0 inactive sm%(3) inactive sm%(4) for i%=10 to 16 inactive sm%(i%) next i% else if EtatLog%=1 inactive sm%(3) inactive sm%(4) inactive sm%(24) inactive sm%(25) for i%=11 to 16 inactive sm%(i%) next i% else inactive sm%(3) inactive sm%(4) for i%=11 to 16 inactive sm%(i%) next i% end_if end_if end_sub
sub AffichagePanel(N%) dim_local i% for i%=2 to 4 hide pan%(i%) mark_off sm%(i%+24) next i% show pan%(N%) Mark_on sm%(N%+24) end_sub
sub ActivePrincipale() Active 0 end_sub
sub AddToListe() if message_input("Ajouter","Nom : ","")=1 if message_text$<>"" item_add listListe%,message_text$ sort_on listListe% file_save listListe%,ActiveListe$ end_if end_if end_sub
sub DefineEtatLog() dim_local annee% annee%=val(right$(date$,4)) if file_exists(CptParam$)=0 EtatLog%=0 else An1$=DirFil$+str$(annee%-1)+"\" if dir_exists(An1$)=0 EtatLog%=1 else EtatLog%=2 end_if end_if end_sub
sub SaveInfoCompte() end_sub
on est à plus de 500 lignes et rien n' est encore fait... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: GestCompte Mer 20 Avr 2016 - 7:43 | |
| Bonjour à tous, @Ygeronimi, j'ignore si tu souhaites aller au bout de cette version en pur Panoramic. Si c'est le cas, il faut que tu vois l'éternel problème des dimensions (bord et bandeau) pour W10. Voici une procédure à appeler en début de programme qui te retourne bord% et bandeau%, à toi d'en faire ce que tu veux. - Code:
-
Retourne_Dimension_Bandeau_Et_Bord() :' retourne bandeau%,bord%
message "Hauteur du bandeau (bandeau%) = "+str$(bandeau%)+" | largeur d'un bord (bord%) = "+str$(bord%) END rem ============================================================================ SUB Retourne_Dimension_Bandeau_Et_Bord() ' controle de la position de la procédure dans le programme IF NUMBER_OBJECTS>0 message "La SUB 'Retourne_Dimension_Bandeau_Et_Bord' doit être placée avant la création du premier objet !" terminate END_IF ' création des VARIABLES GLOBALES IF VARIABLE("bandeau%")=0 then DIM bandeau% IF VARIABLE("bord%")=0 then DIM bord% ' Calcul de bandeau% et bord% dim_local w0%,h0%,w1%,h1%,w2%,h2% w0%=WIDTH(0) : h0%=HEIGHT(0) picture 1 : full_space 1 : w1%=WIDTH(1) : h1%=HEIGHT(1) w2%=w0%-w1% : h2%=h0%-h1% : bandeau%=h2%-(w2%/2) : bord%=w2%/2 ' Suppression du Picture devenu inutile delete 1 END_SUB
A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 20 Avr 2016 - 9:13 | |
| Je suis sous W10 et je n' ai pas ce souci. ceci dit, j' ai fait çà un peu vite et je vais prendre ce problème en considération. | |
| | | Contenu sponsorisé
| Sujet: Re: GestCompte | |
| |
| | | | GestCompte | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |