FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
KGF_dll - nouvelles versions - Page 12 Emptypar papydall Aujourd'hui à 3:22

» select intégrés [résolu]
KGF_dll - nouvelles versions - Page 12 Emptypar jjn4 Hier à 17:00

» number_mouse_up
KGF_dll - nouvelles versions - Page 12 Emptypar jjn4 Hier à 11:59

» Aide de PANORAMIC
KGF_dll - nouvelles versions - Page 12 Emptypar jjn4 Hier à 11:16

» trop de fichiers en cours
KGF_dll - nouvelles versions - Page 12 Emptypar lepetitmarocain Hier à 10:43

» Je teste PANORAMIC V 1 beta 1
KGF_dll - nouvelles versions - Page 12 Emptypar papydall Hier à 4:17

» bouton dans autre form que 0
KGF_dll - nouvelles versions - Page 12 Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
KGF_dll - nouvelles versions - Page 12 Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
KGF_dll - nouvelles versions - Page 12 Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
KGF_dll - nouvelles versions - Page 12 Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
KGF_dll - nouvelles versions - Page 12 Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
KGF_dll - nouvelles versions - Page 12 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
KGF_dll - nouvelles versions - Page 12 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
KGF_dll - nouvelles versions - Page 12 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
KGF_dll - nouvelles versions - Page 12 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -40%
Tefal Ingenio Emotion – Batterie de cuisine 10 ...
Voir le deal
59.99 €

 

 KGF_dll - nouvelles versions

Aller en bas 
+6
papydall
Marc
jean_debord
Minibug
JP06
Klaus
10 participants
Aller à la page : Précédent  1 ... 7 ... 11, 12, 13, 14  Suivant
AuteurMessage
Marc

Marc


Nombre de messages : 2391
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyMar 14 Nov 2023 - 17:36

C'est parfait Klaus cheers
Le chargement d'une sauvegarde fonctionne bien !


Restera éventuellement à voir le fonctionnement de l'EDIT qui refuse l'action des touches DEL et BACKSPACE.

KGFGrid est un bel outil de travail !
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyMar 14 Nov 2023 - 18:01

Merci beaucoup, Marc !

Petit constat:
- shift/Suppr efface le caractère à gauche du curseur.
- Suppr efface le caractère à droite du curseur
- déplacement du curseur avec les flèches est opérationnel

La saisie est effectuée via un composant MaskEdit. Je n'ai pas la main sur son fonctionnement interne. Je l'utilie pour pouvoir tester la validité des caractères saisis selon le type de champ (entier, flottant, texte, ...). Essaie de saisir des lettres dans un champ numérique...

Et cette démo ne montre même pas les capacités de calcul façon tableur ! On peut définir des formules de calcul pour les cellules, et la modification de la valeur d'une cellule se répercute automatiquement vers les autres cellules dependantes...  A titre d'exemple,, je publie à nouveau une petite calculette réalisée avec KGFGrid et des formules de calcul:
Code:
' test_Calculette_avec_KGFGrid.bas

label UserEvent

dim X, Y, F1, F2, DEC, SIG, OP, result
dim res%, KG%, v$, f1$


dll_on "KGF.dll"
                        
height 0,500 : width 0,290

edit 1 : top 1,30 : left 1,10 : width 1,242 : height 1,30 : font_size 1,20
text 1,"0"

KG% = dll_call4("CreateKGFGrid",object_internal(0),handle(0),1,1)                    
res% = dll_call5("LocateKGFGrid",KG%,10,80,242,362)  
res% = dll_call5("SetGlobalKGFGridDimensions",KG%,6,4,60,60)    
res% = dll_call6("SetKGFGridCellRangeType",KG%,1,6,1,4,7)    
res% = dll_call6("SetKGFGridCellRangeFontSize",KG%,1,6,1,4,20)    
res% = dll_call6("SetKGFGridCellRangeFontBold",KG%,1,6,1,4,1)    
      
v$ = "%"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,1,1,adr(v$))  
v$ = "SQR"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,2,2,adr(v$))  
v$ = "X²"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,3,3,adr(v$))  
v$ = "1/X"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,1,1,4,4,adr(v$))  

v$ = "CE"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,1,1,adr(v$))  
v$ = "C"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,2,2,adr(v$))  
v$ = "<X"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,3,3,adr(v$))  
v$ = "/"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,2,2,4,4,adr(v$))  

v$ = "7"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,1,1,adr(v$))  
v$ = "8"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,2,2,adr(v$))  
v$ = "9"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,3,3,adr(v$))  
v$ = "*"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,3,3,4,4,adr(v$))  

v$ = "4"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,1,1,adr(v$))  
v$ = "5"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,2,2,adr(v$))  
v$ = "6"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,3,3,adr(v$))  
v$ = "-"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,4,4,4,4,adr(v$))  

v$ = "1"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,1,1,adr(v$))  
v$ = "2"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,2,2,adr(v$))  
v$ = "3"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,3,3,adr(v$))  
v$ = "+"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,5,5,4,4,adr(v$))  

v$ = "+/-"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,1,1,adr(v$))  
v$ = "0"
res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,2,2,adr(v$))  
v$ = "."
res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,3,3,adr(v$))  
v$ = "="
res% = dll_call6("SetKGFGridCellRangeValue",KG%,6,6,4,4,adr(v$))  

X = 0
Y = 0
F1 = 10
F2 = 1
DEC = 1
SIG = 1
OP = 0

v$ = "X"
res% = dll_call2("DefineInlineCodeVariable",adr(v$),adr(X))
v$ = "Y"
res% = dll_call2("DefineInlineCodeVariable",adr(v$),adr(Y))
v$ = "F1"
res% = dll_call2("DefineInlineCodeVariable",adr(v$),adr(F1))
v$ = "F2"
res% = dll_call2("DefineInlineCodeVariable",adr(v$),adr(F2))
v$ = "DEC"
res% = dll_call2("DefineInlineCodeVariable",adr(v$),adr(DEC))
v$ = "SIG"
res% = dll_call2("DefineInlineCodeVariable",adr(v$),adr(DEC))
v$ = "OP"
res% = dll_call2("DefineInlineCodeVariable",adr(v$),adr(DEC))

f1$ = "X := 0-X" +chr$(13)+chr$(10)+ "SIG := 0-1" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,6,6,1,1,adr(f1$))
f1$ = "X := X*F1 + 0*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,6,6,2,2,adr(f1$))
f1$ =  "ifgoto(DEC-1,2,4,2)" +chr$(13)+chr$(10)+ "X := X" +chr$(13)+chr$(10)+  "stop" +chr$(13)+chr$(10)+  "F1 := 1" +chr$(13)+chr$(10)+ "F2 := 1/100" +chr$(13)+chr$(10)+ "DEC := 10" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,6,6,3,3,adr(f1$))

f1$ = "X := X*F1 + 1*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,5,5,1,1,adr(f1$))
f1$ = "X := X*F1 + 2*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,5,5,2,2,adr(f1$))
f1$ = "X := X*F1 + 3*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,5,5,3,3,adr(f1$))

f1$ = "X := X*F1 + 4*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,4,4,1,1,adr(f1$))
f1$ = "X := X*F1 + 5*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,4,4,2,2,adr(f1$))
f1$ = "X := X*F1 + 6*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,4,4,3,3,adr(f1$))

f1$ = "X := X*F1 + 7*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(10)+chr$(13)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,3,3,1,1,adr(f1$))
f1$ = "X := X*F1 + 8*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(10)+chr$(13)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,3,3,2,2,adr(f1$))
f1$ = "X := X*F1 + 9*SIG*F2" +chr$(13)+chr$(10)+ "F2 := F2/DEC" +chr$(10)+chr$(13)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,3,3,3,3,adr(f1$))
    
' "%"
f1$ = ""
f1$ = f1$ + "ifgoto(OP,4,2,4)"      +chr$(13)+chr$(10)    : '  1
f1$ = f1$ + "X := X/100"            +chr$(13)+chr$(10)    : '  2
f1$ = f1$ + "goto(16)"              +chr$(13)+chr$(10)    : '  3
f1$ = f1$ + "ifgoto(OP-1,7,5,7)"    +chr$(13)+chr$(10)    : '  4
f1$ = f1$ + "X := Y + Y*X/100"      +chr$(13)+chr$(10)    : '  5
f1$ = f1$ + "goto(15)"              +chr$(13)+chr$(10)    : '  6
f1$ = f1$ + "ifgoto(OP-2,10,8,10)"  +chr$(13)+chr$(10)    : '  7
f1$ = f1$ + "X := Y - Y*X/100"      +chr$(13)+chr$(10)    : '  8
f1$ = f1$ + "goto(15)"              +chr$(13)+chr$(10)    : '  9
f1$ = f1$ + "ifgoto(OP-3,13,11,13)" +chr$(13)+chr$(10)    : ' 10
f1$ = f1$ + "X := Y*X/100"          +chr$(13)+chr$(10)    : ' 11
f1$ = f1$ + "goto(15)"              +chr$(13)+chr$(10)    : ' 12
f1$ = f1$ + "ifgoto(OP-4,15,14,15)" +chr$(13)+chr$(10)    : ' 13
f1$ = f1$ + "X := Y/X*100"          +chr$(13)+chr$(10)    : ' 14
f1$ = f1$ + "Y := 0" +chr$(13)+chr$(10)                   : ' 15
f1$ = f1$ + "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "OP := 0" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,1,1,1,1,adr(f1$))
' "SQR"
f1$ = "OP := 0" +chr$(13)+chr$(10)+ "X := sqrt(X)" +chr$(13)+chr$(10)+ "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,1,1,2,2,adr(f1$))
' "X²"
f1$ = "OP := 0" +chr$(13)+chr$(10)+ "X := X*X" +chr$(13)+chr$(10)+ "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,1,1,3,3,adr(f1$))
' "1/X"
f1$ = "OP := 0" +chr$(13)+chr$(10)+ "X := 1/X" +chr$(13)+chr$(10)+ "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,1,1,4,4,adr(f1$))

' "CE"
f1$ = "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := 0"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,2,1,1,adr(f1$))
' "C"
f1$ = "OP := 0" +chr$(13)+chr$(10)+ "Y := 0" +chr$(13)+chr$(10)+ "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := 0"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,2,2,2,2,adr(f1$))


' "/"
f1$ = "OP := 4" +chr$(13)+chr$(10)+ "Y := Y/X" +chr$(13)+chr$(10)+ "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := 0"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,4,4,4,4,adr(f1$))
' "*"
f1$ = "OP := 3" +chr$(13)+chr$(10)+ "Y := Y*X" +chr$(13)+chr$(10)+ "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := 0"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,4,4,4,4,adr(f1$))
' "-"
f1$ = "OP := 2" +chr$(13)+chr$(10)+ "Y := Y-X" +chr$(13)+chr$(10)+ "SIG := 0-1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := 0"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,4,4,4,4,adr(f1$))
' "+"
f1$ = "OP := 1" +chr$(13)+chr$(10)+ "Y := Y+X" +chr$(13)+chr$(10)+ "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := 0"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,5,5,4,4,adr(f1$))
' "="
f1$ = ""
f1$ = f1$ + "ifgoto(OP,4,2,4)"      +chr$(13)+chr$(10)    : '  1
f1$ = f1$ + "X := X"                +chr$(13)+chr$(10)    : '  2
f1$ = f1$ + "goto(16)"              +chr$(13)+chr$(10)    : '  3
f1$ = f1$ + "ifgoto(OP-1,7,5,7)"    +chr$(13)+chr$(10)    : '  4
f1$ = f1$ + "X := Y + X"            +chr$(13)+chr$(10)    : '  5
f1$ = f1$ + "goto(15)"              +chr$(13)+chr$(10)    : '  6
f1$ = f1$ + "ifgoto(OP-2,10,8,10)"  +chr$(13)+chr$(10)    : '  7
f1$ = f1$ + "X := Y - Y"            +chr$(13)+chr$(10)    : '  8
f1$ = f1$ + "goto(15)"              +chr$(13)+chr$(10)    : '  9
f1$ = f1$ + "ifgoto(OP-3,13,11,13)" +chr$(13)+chr$(10)    : ' 10
f1$ = f1$ + "X := Y*X"              +chr$(13)+chr$(10)    : ' 11
f1$ = f1$ + "goto(15)"              +chr$(13)+chr$(10)    : ' 12
f1$ = f1$ + "ifgoto(OP-4,15,14,15)" +chr$(13)+chr$(10)    : ' 13
f1$ = f1$ + "X := Y/X"              +chr$(13)+chr$(10)    : ' 14
f1$ = f1$ + "Y := 0" +chr$(13)+chr$(10)                   : ' 15
f1$ = f1$ + "OP := 0" +chr$(13)+chr$(10)+ "Y := 0" +chr$(13)+chr$(10)+ "SIG := 1" +chr$(13)+chr$(10)+ "DEC := 1" +chr$(13)+chr$(10)+ "F1 := 10" +chr$(13)+chr$(10)+ "F2 := 1" +chr$(13)+chr$(10)+ "X := X"
res% = dll_call6("SetKGFGridCellRangeFormula",KG%,6,6,4,4,adr(f1$))

on_user_event UserEvent

end

UserEvent:
  UserEvent()
  return
  
sub UserEvent()
  dim_local lig%, col%, event%, id%, type%, res$, f
  if bin_and(user_event_wparam,hex("FF000000"))<>hex("0C000000") then exit_sub
  if (bin_and(user_event_wparam,hex("00FF0000"))<hex("00010000")) and (bin_and(user_event_wparam,hex("00FF0000"))>hex("00050000")) then exit_sub
  event% = bin_and(user_event_wparam,hex("00FF0000"))/65536
  id% = bin_and(user_event_wparam,hex("0000FFFF"))
  col% = user_event_lparam/65536
  lig% = bin_and(user_event_lparam,hex("0000FFFF"))

  type% = dll_call3("GetKGFGridCellType",KG%,lig%,col%)
  
'  pause 300
  res% = dll_call1("GetInlineCodeResult",adr(result))

  text 1,str$(result)
                                      
end_sub      

Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyJeu 16 Nov 2023 - 1:09

KGF.dll V9.92 du 15/11/2023

Nouveautés:
- nouvelles fonctions de calcul avec des entiers multi-précision

Modules modifiés:
KGF.dll

La doc est inchangée.

Ces fonctions permettent de faire des opérations arithmétiques sur des entiers de plus de 32 bits. actuellement, la limite est de 4096 mots de 32 bits (si, si,, c'est exact !). On utilise pour cela un module en utilisation libre, personnelle ou commerciale, réalisé par
Citation :
{********************************************************************************************}
{ Développer par Faraoun Kamel Mohamed }
{ Université Djilali Liabes -Sidi Bel Abbes - Algérie }
{ kamel_mh@yahoo.fr ]
{ }
{ Adapté à KGF.dll par Klaus le 15/11/2023 }
{********************************************************************************************}
Dont j'ai eu connaissance grâce à Papydall que je remercie chaleureusement.

A ce jour, les fonctions suivantes sont disponibles;
Code:
res% = dll_call3("HugeInteger_Add",adr(a$),adr(b$),adr(s$))
res% = dll_call3("HugeInteger_Sub",adr(a$),adr(b$),adr(s$))
res% = dll_call3("HugeInteger_Mul",adr(a$),adr(b$),adr(s$))
res% = dll_call4("HugeInteger_Div",adr(a$),adr(b$),adr(s$),adr(s1$))
res% = dll_call3("HugeInteger_Mod",adr(a$),adr(b$),adr(s$))
res% = dll_call3("HugeInteger_Exp",adr(a$),adr(b$),adr(s$))
res% = dll_call2("HugeInteger_Sqr",adr(a$),adr(s$))
res% = dll_call2("HugeInteger_Fac",adr(a$),adr(s$))

Voici un programme de démo, qui s'étoffera encore un peu avec l'ajout d'autres fonctions:
Code:
' Demo_HugeInteger.bas

label l_add, l_sub, l_mul, l_div, l_mod, l_exp, l_sqr, l_fac

dim res%, a$, b$, s$, s1$

  full_space 0
  caption 0,"Demo HugeInteger - calcul avec des entiers très longs"
 
  alpha 1 : top 1,10 : left 1,10 : caption 1,"A:"
  alpha 2 : top 2,35 : left 2,10 : caption 2,"B:"
  alpha 3 : top 3,70 : left 3,10 : caption 3,"Résultat:"
 
  edit 11 : top 11,10 : left 11,60 : width 11,width_client(0)-left(11)
  edit 12 : top 12,35 : left 12,60 : width 12,width_client(0)-left(12)
  edit 13 : top 13,70 : left 13,60 : width 13,width_client(0)-left(13)
 
  button 21 : top 21,110 : left 21,10 : caption 21,"A + B" : on_click 21,l_add
  button 22 : top 22,110 : left 22,left(21)+width(21) : caption 22,"A - B" : on_click 22,l_sub
  button 23 : top 23,110 : left 23,left(22)+width(22) : caption 23,"A * B" : on_click 23,l_mul
  button 24 : top 24,110 : left 24,left(23)+width(23) : caption 24,"A \ B" : on_click 24,l_div
  button 25 : top 25,110 : left 25,left(24)+width(24) : caption 25,"A mod B" : on_click 25,l_mod
  button 26 : top 26,110 : left 26,left(25)+width(25) : caption 26,"A ^^ B" : on_click 26,l_exp
  button 27 : top 27,110 : left 27,left(26)+width(26) : caption 27,"sqrt(A)" : on_click 27,l_sqr
  button 28 : top 28,110 : left 28,left(27)+width(27) : caption 28,"A!" : on_click 28,l_fac
 
 
  dll_on "KGF.dll"
 
  end
 
l_add:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Add",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$   
  return
 
l_sub:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Sub",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$   
  return
 
l_mul:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mul",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$   
  return 
 
l_div:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  s1$ = string$(2000," ")
  res% = dll_call4("HugeInteger_Div",adr(a$),adr(b$),adr(s$),adr(s1$))
  s$ = trim$(s$)
  s1$ = trim$(s1$)
  if res%<>len(s$) then message "Anomalie en opération "+str$(res%)
  if res%>0 then text 13,s$+" reste "+s1$   
  return 
 
l_mod:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mod",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$   
  return 
 
l_exp:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Exp",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$   
  return 
 
l_sqr:
  a$ = text$(11)
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Sqr",adr(a$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$   
  return 
 
l_fac:
  a$ = text$(11)
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Fac",adr(a$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$   
  return 

Mode d'emploi:
- rentrer la valeur décimale du ou des paramètres dans les champs A et B
- cliquer sur le bouton d'opération choisi
- voir le résultat dans le champ Résultat

Voici la capture pour une multiplication:
KGF_dll - nouvelles versions - Page 12 Aa112
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7007
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyJeu 16 Nov 2023 - 5:58

Merci Klaus!

C'est parfaitement parfait king

J'ai modifié ton code exemple pour afficher le nombre de chiffres que comporte le résultat.

J'ai constaté que le plus grand nombre pour le calcul de la factorielle est 807 ! qui comporte 1998 chiffres

Beaucoup plus modeste, j'ai écris un code en pur panoramic pour calculer la factorielle d'un entier.

En comparant ton code et le mien (pour n!) , je constate avec joie la parfaite concordance.

Voici ton code modifié
Code:

' Demo_HugeInteger.bas

label l_add, l_sub, l_mul, l_div, l_mod, l_exp, l_sqr, l_fac

dim res%, a$, b$, s$, s1$


  width 0,screen_x-100 : height 0,400
  font_bold 0
  caption 0,"Demo HugeInteger - calcul avec des entiers très longs"
 
  alpha 1 : top 1,10 : left 1,10 : caption 1,"A:"
  alpha 2 : top 2,35 : left 2,10 : caption 2,"B:"
  alpha 3 : top 3,70 : left 3,10 : caption 3,"Résultat:"
 
  edit 11 : top 11,10 : left 11,60 : width 11,width_client(0)-left(11)
  edit 12 : top 12,35 : left 12,60 : width 12,width_client(0)-left(12)
  edit 13 : top 13,70 : left 13,60 : width 13,width_client(0)-left(13)
 
  button 21 : top 21,110 : left 21,10 : caption 21,"A + B" : on_click 21,l_add
  button 22 : top 22,110 : left 22,left(21)+width(21) : caption 22,"A - B" : on_click 22,l_sub
  button 23 : top 23,110 : left 23,left(22)+width(22) : caption 23,"A * B" : on_click 23,l_mul
  button 24 : top 24,110 : left 24,left(23)+width(23) : caption 24,"A \ B" : on_click 24,l_div
  button 25 : top 25,110 : left 25,left(24)+width(24) : caption 25,"A mod B" : on_click 25,l_mod
  button 26 : top 26,110 : left 26,left(25)+width(25) : caption 26,"A ^^ B" : on_click 26,l_exp
  button 27 : top 27,110 : left 27,left(26)+width(26) : caption 27,"sqrt(A)" : on_click 27,l_sqr
  button 28 : top 28,110 : left 28,left(27)+width(27) : caption 28,"A!" : on_click 28,l_fac
 
 
  dll_on "KGF.dll"
 
  end
 
l_add:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Add",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(len(s$)) + " chiffres"  
  return
 
l_sub:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Sub",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(len(s$)) + " chiffres"  
  return
 
l_mul:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mul",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(len(s$)) + " chiffres"  
  return
 
l_div:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  s1$ = string$(2000," ")
  res% = dll_call4("HugeInteger_Div",adr(a$),adr(b$),adr(s$),adr(s1$))
  s$ = trim$(s$)
  s1$ = trim$(s1$)
  if res%<>len(s$) then message "Anomalie en opération "+str$(res%)
  if res%>0 then text 13,s$+" reste "+s1$
  print_locate 50,200 : print "Le résultat comporte " + str$(len(s$)) + " chiffres"  
  return
 
l_mod:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mod",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(len(s$)) + " chiffres"  
  return
 
l_exp:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Exp",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(len(s$)) + " chiffres"  
  return
 
l_sqr:
  a$ = text$(11)
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Sqr",adr(a$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(len(s$)) + " chiffres"  
  return
 
l_fac:
  a$ = text$(11)
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Fac",adr(a$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$  
  print_locate 50,200 : print a$ + " !  comporte " + str$(len(s$)) + " chiffres"
  return

Je posterai le mien dans un instant
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyJeu 16 Nov 2023 - 9:35

Merci, Papydall ! Je reprends ta modification !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyJeu 16 Nov 2023 - 13:32

Petite info supplémentaire (qui figurera dans la doc):
toutes ces fonctions retournent -1 en cas d'erreur. Sinon, la valeur de retour est le nombre de caractères du résultat...

Il faut aussi effacer la fin de l'impression précédente. Ainsi, la version définitive est:
Code:

' Demo_HugeInteger.bas

label l_add, l_sub, l_mul, l_div, l_mod, l_exp, l_sqr, l_fac

dim res%, a$, b$, s$, s1$


  width 0,screen_x-100 : height 0,400
  font_bold 0
  caption 0,"Demo HugeInteger - calcul avec des entiers très longs"
 
  alpha 1 : top 1,10 : left 1,10 : caption 1,"A:"
  alpha 2 : top 2,35 : left 2,10 : caption 2,"B:"
  alpha 3 : top 3,70 : left 3,10 : caption 3,"Résultat:"
 
  edit 11 : top 11,10 : left 11,60 : width 11,width_client(0)-left(11)
  edit 12 : top 12,35 : left 12,60 : width 12,width_client(0)-left(12)
  edit 13 : top 13,70 : left 13,60 : width 13,width_client(0)-left(13)
 
  button 21 : top 21,110 : left 21,10 : caption 21,"A + B" : on_click 21,l_add
  button 22 : top 22,110 : left 22,left(21)+width(21) : caption 22,"A - B" : on_click 22,l_sub
  button 23 : top 23,110 : left 23,left(22)+width(22) : caption 23,"A * B" : on_click 23,l_mul
  button 24 : top 24,110 : left 24,left(23)+width(23) : caption 24,"A \ B" : on_click 24,l_div
  button 25 : top 25,110 : left 25,left(24)+width(24) : caption 25,"A mod B" : on_click 25,l_mod
  button 26 : top 26,110 : left 26,left(25)+width(25) : caption 26,"A ^^ B" : on_click 26,l_exp
  button 27 : top 27,110 : left 27,left(26)+width(26) : caption 27,"sqrt(A)" : on_click 27,l_sqr
  button 28 : top 28,110 : left 28,left(27)+width(27) : caption 28,"A!" : on_click 28,l_fac
 
 
  dll_on "KGF.dll"
 
  end
 
l_add:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Add",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(res%) + " chiffres      " 
  return
 
l_sub:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Sub",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(res%) + " chiffres      " 
  return
 
l_mul:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mul",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(res%) + " chiffres      " 
  return
 
l_div:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  s1$ = string$(2000," ")
  res% = dll_call4("HugeInteger_Div",adr(a$),adr(b$),adr(s$),adr(s1$))
  s$ = trim$(s$)
  s1$ = trim$(s1$)
  if res%<>len(s$) then message "Anomalie en opération "+str$(res%)
  if res%>0 then text 13,s$+" reste "+s1$
  print_locate 50,200 : print "Le résultat comporte " + str$(res%) + " chiffres      " 
  return
 
l_mod:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mod",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(res%) + " chiffres      " 
  return
 
l_exp:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Exp",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(res%) + " chiffres      " 
  return
 
l_sqr:
  a$ = text$(11)
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Sqr",adr(a$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$
  print_locate 50,200 : print "Le résultat comporte " + str$(res%) + " chiffres      " 
  return
 
l_fac:
  a$ = text$(11)
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Fac",adr(a$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"
  if res%>0 then text 13,s$ 
  print_locate 50,200 : print a$ + " !  comporte " + str$(res%) + " chiffres      "
  return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7007
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyJeu 16 Nov 2023 - 14:16

Bien vu Klaus, mais il reste parfois des traces.
Fais un calcul avec comme résultat un grand nombre de chiffres puis par exemple fais factorielle 1.

C'est mieux comme ceci

Code:

print_locate 50,200 : print "Le résultat comporte " + str$(res%) + " chiffres" + string$(50," ")

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyJeu 16 Nov 2023 - 14:32

Efectivement ! Merci !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7007
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyJeu 16 Nov 2023 - 15:11

@Klaus

J'ai constaté un mini bug dans le code exemple

A propos, notre ami MiniBug ne s'est pas manifesté depuis longtemps.
Espérons qu'il va bien et qu'il nous revient très bientôt!

Bon, essaie de mettre un nombre négatif dans A puis demande le calcul de la factorielle et c'est le crache!

La solution est d'ajouter un test  dans l_fac:
Autre chose : il vaut mieux sortir du sous-programme quand on est devant Anomalie en opération pour éviter l"affichage : ... comporte - 1 chiffres

Il ne faut pas afficher un s  final à 1 chiffre

En fin, il est préférable de donner le focus à l'EDIT 11 en debut de programme.

Voici le nouveau code revu et modifié

Code:

' Demo_HugeInteger.bas

label l_add, l_sub, l_mul, l_div, l_mod, l_exp, l_sqr, l_fac

dim res%, a$, b$, s$, s1$
dim pluriel$


  width 0,screen_x-100 : height 0,400
  font_bold 0
  caption 0,"Demo HugeInteger - calcul avec des entiers très longs"
 
  alpha 1 : top 1,10 : left 1,10 : caption 1,"A:"
  alpha 2 : top 2,35 : left 2,10 : caption 2,"B:"
  alpha 3 : top 3,70 : left 3,10 : caption 3,"Résultat:"
 
  edit 11 : top 11,10 : left 11,60 : width 11,width_client(0)-left(11)
  edit 12 : top 12,35 : left 12,60 : width 12,width_client(0)-left(12)
  edit 13 : top 13,70 : left 13,60 : width 13,width_client(0)-left(13)
 
  button 21 : top 21,110 : left 21,10 : caption 21,"A + B" : on_click 21,l_add
  button 22 : top 22,110 : left 22,left(21)+width(21) : caption 22,"A - B" : on_click 22,l_sub
  button 23 : top 23,110 : left 23,left(22)+width(22) : caption 23,"A * B" : on_click 23,l_mul
  button 24 : top 24,110 : left 24,left(23)+width(23) : caption 24,"A \ B" : on_click 24,l_div
  button 25 : top 25,110 : left 25,left(24)+width(24) : caption 25,"A mod B" : on_click 25,l_mod
  button 26 : top 26,110 : left 26,left(25)+width(25) : caption 26,"A ^^ B" : on_click 26,l_exp
  button 27 : top 27,110 : left 27,left(26)+width(26) : caption 27,"sqrt(A)" : on_click 27,l_sqr
  button 28 : top 28,110 : left 28,left(27)+width(27) : caption 28,"A!" : on_click 28,l_fac
 
  set_focus 11
  dll_on "KGF.dll"
 
  end
 
l_add:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Add",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_sub:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Sub",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_mul:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mul",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_div:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  s1$ = string$(2000," ")
  res% = dll_call4("HugeInteger_Div",adr(a$),adr(b$),adr(s$),adr(s1$))
  s$ = trim$(s$)
  s1$ = trim$(s1$)
  if res%<>len(s$) then message "Anomalie en opération "+str$(res%) : return
  if res%>0 then text 13,s$+" reste "+s1$
  Afficher_Longueur()
  return
 
l_mod:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mod",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_exp:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Exp",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_sqr:
  a$ = text$(11)
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Sqr",adr(a$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"  : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_fac:
  a$ = text$(11)
  if left$(a$,1) = "-" then message "A doit être positif ou nul" : return
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Fac",adr(a$),adr(s$))
  s$ = trim$(s$)
  
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
rem ============================================================================
SUB Afficher_Longueur()
    if res% = 1 then pluriel$ = "" : else : pluriel$ = "s"
    print_locate 50,200 : print "Le résultat comporte " + str$(res%) + " chiffre" + pluriel$ +  string$(50," ")
END_SUB
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyJeu 16 Nov 2023 - 18:31

Merci, Papydall : Je prends tout.

Voici une autre capture (calcul de puissance de 2):
KGF_dll - nouvelles versions - Page 12 Aa114

151 chiffres, c'est pas mal, non ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptySam 18 Nov 2023 - 11:20

KGF.dll V9.93 du 18/11/2023

Nouveautés:
- nouvelles fonctions de calcul avec des valeurs "fixed point decimals" multi-précision

Modules modifiés:
KGF.dll

La doc est inchangée.

Cette version ajoute 4 fonctions permettant les 4 opérations de base avec des valeurs ayant des chiffres après la virgule.
Ces valeurs sont appelées "fixed point décimals" ou décimales à virgule fixe.
Dans cette représentation, il y a toujours n chiffres après la virgule, quelque soit la valeur.
Exemple, pour 5 chiffres après la virgule:
3,00000
1234567,00123
etc

Le programme de démo ci-après montre un champ spin permettant de choisir le nombre de chiffres après la virgule.
Ce nombre peut être assez important (20, 80, ...). Par défaut, il est fixé à 5.
Code:

' Demo_HugeInteger.bas

label l_add, l_sub, l_mul, l_div, l_mod, l_exp, l_sqr, l_fac  
label l_fadd, l_fsub, l_fmul, l_fdiv
label newspin

dim res%, a$, b$, s$, s1$, FixedPoint%
dim pluriel$


  width 0,screen_x-100 : height 0,400
  font_bold 0
  caption 0,"Demo HugeInteger - calcul avec des entiers très longs"
 
  alpha 1 : top 1,10 : left 1,10 : caption 1,"A:"
  alpha 2 : top 2,35 : left 2,10 : caption 2,"B:"
  alpha 3 : top 3,70 : left 3,10 : caption 3,"Résultat:"
 
  edit 11 : top 11,10 : left 11,60 : width 11,width_client(0)-left(11)
  edit 12 : top 12,35 : left 12,60 : width 12,width_client(0)-left(12)
  edit 13 : top 13,70 : left 13,60 : width 13,width_client(0)-left(13)
 
  button 21 : top 21,110 : left 21,10 : caption 21,"A + B" : on_click 21,l_add
  button 22 : top 22,110 : left 22,left(21)+width(21) : caption 22,"A - B" : on_click 22,l_sub
  button 23 : top 23,110 : left 23,left(22)+width(22) : caption 23,"A * B" : on_click 23,l_mul
  button 24 : top 24,110 : left 24,left(23)+width(23) : caption 24,"A \ B" : on_click 24,l_div
  button 25 : top 25,110 : left 25,left(24)+width(24) : caption 25,"A mod B" : on_click 25,l_mod
  button 26 : top 26,110 : left 26,left(25)+width(25) : caption 26,"A ^^ B" : on_click 26,l_exp
  button 27 : top 27,110 : left 27,left(26)+width(26) : caption 27,"sqrt(A)" : on_click 27,l_sqr
  button 28 : top 28,110 : left 28,left(27)+width(27) : caption 28,"A!" : on_click 28,l_fac

  button 31 : top 31,140 : left 31,10 : caption 31,"FA + FB" : on_click 31,l_fadd
  button 32 : top 32,140 : left 32,left(31)+width(31) : caption 32,"FA - FB" : on_click 32,l_fsub
  button 33 : top 33,140 : left 33,left(32)+width(32) : caption 33,"FA * FB" : on_click 33,l_fmul
  button 34 : top 34,140 : left 34,left(33)+width(33) : caption 34,"FA \ FB" : on_click 34,l_fdiv
          
  alpha 40 : top 40,190 : left 40,10 : caption 40,"Chiffres décimales:"                                                                            
  spin 41 : top 41,190 : left 41,150 : width 41,100
    position 41,5 : text 41,"5" : on_change 41,newspin
 
  set_focus 11
  dll_on "KGF.dll"
 
  end
 
l_add:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Add",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_fadd:
  FixedPoint% = position(41)
  res% = dll_call1("HugeFixed_CommaPosition",FixedPoint%)
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeFixed_Add",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_sub:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Sub",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_fsub:
  FixedPoint% = position(41)
  res% = dll_call1("HugeFixed_CommaPosition",FixedPoint%)
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeFixed_Sub",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération "+str$(res%)+" "+s$ : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_mul:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mul",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_fmul:
  FixedPoint% = position(41)
  res% = dll_call1("HugeFixed_CommaPosition",FixedPoint%)
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeFixed_Mul",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return

l_div:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  s1$ = string$(2000," ")
  res% = dll_call4("HugeInteger_Div",adr(a$),adr(b$),adr(s$),adr(s1$))
  s$ = trim$(s$)
  s1$ = trim$(s1$)
  if res%<>len(s$) then message "Anomalie en opération "+str$(res%) : return
  if res%>0 then text 13,s$+" reste "+s1$
  Afficher_Longueur()
  return

l_fdiv:
  FixedPoint% = position(41)
  res% = dll_call1("HugeFixed_CommaPosition",FixedPoint%)
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  s1$ = string$(2000," ")
  res% = dll_call4("HugeFixed_Div",adr(a$),adr(b$),adr(s$),adr(s1$))
  s$ = trim$(s$)
  s1$ = trim$(s1$)
  if res%<>len(s$) then message "Anomalie en opération "+str$(res%)+" "+s$ : return
  if res%>0 then text 13,s$+" reste "+s1$
  Afficher_Longueur()
  return
 
l_mod:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Mod",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_exp:
  a$ = text$(11)
  b$ = text$(12)
  s$ = string$(2000," ")
  res% = dll_call3("HugeInteger_Exp",adr(a$),adr(b$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_sqr:
  a$ = text$(11)
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Sqr",adr(a$),adr(s$))
  s$ = trim$(s$)
  if res%<>len(s$) then message "Anomalie en opération"  : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
 
l_fac:
  a$ = text$(11)
  if left$(a$,1) = "-" then message "A doit être positif ou nul" : return
  s$ = string$(2000," ")
  res% = dll_call2("HugeInteger_Fac",adr(a$),adr(s$))
  s$ = trim$(s$)
  
  if res%<>len(s$) then message "Anomalie en opération" : return
  if res%>0 then text 13,s$
  Afficher_Longueur()
  return
  
newspin:    
  res% = position(41)
  if res%<1
    position 41,1
    text 41,"1"
  end_if
  return
  
rem ============================================================================
SUB Afficher_Longueur()
    if res% = 1 then pluriel$ = "" : else : pluriel$ = "s"
    print_locate 50,250 : print "Le résultat comporte " + str$(res%) + " chiffre" + pluriel$ +  string$(50," ")
END_SUB
rem ============================================================================

Et voici ce que donne une division par 7 avec 10 chiffres après la virgule:
KGF_dll - nouvelles versions - Page 12 Aa115
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyDim 19 Nov 2023 - 14:13

Bonjour à tous

@Klaus.

Mème un dimanche, je me permets de te déranger.

Concernant la saisie de texte sur un KGFGRID, j'aurais besoin de contrôler certaines saisies.

Par exemple si c'est une date, j'aimerais contrôler la validité (Etc.. etc..).

serait t'il possible sur la validation d'effectuer des contrôles.

Merci d'avance

Bon dimanche à tous
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyDim 19 Nov 2023 - 15:16

La date, c'est compliqué. Il faudrait intriduire un nouveau type"DAte" de cellule (actuellement, il y a Texte, Integer, Float, Boolean pour ce qui concerne les types numériques).

Ce n'est pas simpe, mais je vais regarder ce que cela représente. En attendant, tu peux utiliser le USER_EVENT pour contrôler le contenu de la cellule après saisie et le changer si besoin.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyDim 19 Nov 2023 - 23:32

@Lepetitmarocain:
J'ai trouvé comment faire. Je vais ajouter un nouveau type de champ nomme "Date" et dont la saisie sera pilotée par un format indiquée par le format d'affichage de cette cellule. Ce sera un champ dont la valeur sera traitée comme un flottant.

Exemples de format:
dd/mm/yyyy ==> 01/05/2023
m-MMM-yy ==> 1-Mai-23
Beaucoup de formats seront possibles - ils seront documentés lors de la publication de la nouvelle version.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyMar 21 Nov 2023 - 14:19

Bonjour à tous

@Klaus

Merci beaucoup de ton implication pour effectuer les Modifs rapidement.

Prends tout de même ton temps, car rien n'est pressé.

Bonne après midi à tous
Revenir en haut Aller en bas
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptySam 2 Déc 2023 - 20:27

Bonsoir à tous.

@Klaus.

Bonsoir.

J'ai un problème avec le KGFGRID.

Lorsque je veux saisir (double click gauche) dans le grid, le grid se déplace vers la droite.

Du coup lorsque je suis vers la fin du grid qui a un ascenseur horizontal, je ne peux saisir ni valider, et le

programme est planté.

Peux tu STP voir ce qui se passe.

Merci.

Bonne soirée à tous
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyDim 3 Déc 2023 - 0:36

Si j'essaie cela chez moi, voici ce que j'obtiens:
KGF_dll - nouvelles versions - Page 12 Aa117
et on ne peut pas cliquer dans le GRID sans avoir validé ou fermé la fenêtre de saisie. Il y a bien un ascenseur en bas, et un autre à droite. Mais tout reste en place...

Je n'ai pas d'éléments pour tenter de reproduire ton problème.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyMar 5 Déc 2023 - 10:21

Bonjour à tous

@Klaus.

Je vais faire des captures d'écran, et te donner plus d'explications,

afin que tu puisses te faire une idée de ce qui se passe.

Merci.

Bonne journée pluvieuse à tous
Revenir en haut Aller en bas
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyMer 6 Déc 2023 - 20:15

Bonsoir à tous.

@Klaus

j'ai fait des captures d’écran pour tenter d'expliquer ce qui se passe

KGF_dll - nouvelles versions - Page 12 2023-111


Si je saisis sur cet écran, tout va bien.

KGF_dll - nouvelles versions - Page 12 2023-113

sur ce deuxième écran, je me positionnes sur la dernière colonne visible,

et sur le suivant on voit qu'avant de saisir, le grid s'est déplacé vers la gauche

KGF_dll - nouvelles versions - Page 12 2023-116


je ne peux expliquer ce qui se passe.

Peut être auras tu une idée.

Merci.

Bonne soirée à tous
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyMer 6 Déc 2023 - 23:56

La dernière colonne visible (partiellement) est "Dst env. ...".
Si tu cliques sur cette colonne, KGFGrid se repositionne en effet pour que la colonne entière soit visible.
Ceci est le fonctionnement normal.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
lepetitmarocain




Nombre de messages : 335
Age : 81
Localisation : Région Parisienne (à mon grand désespoir)
Date d'inscription : 04/07/2018

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyLun 11 Déc 2023 - 10:36

Bonjour à tous.

@Klaus.

Merci Pour ton explication..

Je ne suis pas convaincu, car certaines fois, le grid se déplaçant sur la gauche,fait que la zone de saisie n'est plus visible sur l'ecran,

Donc le programme est planté.

Bonne journée
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyLun 11 Déc 2023 - 13:17

Je vais faire quelques essais avec un GRID plus vaste que lazone d'affichage.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptySam 16 Déc 2023 - 1:02

KGF.dll V9.95 du 15/12/2023

Nouveautés:
- SQLite3: nouvelle fonction GetSQLite3TableDefinitions
- nouvel objet: KGFTab


Modules modifiés:
KGF.dll

La doc est inchangée - elle suivra.

SQLite3:
Code:
res% = dll_call1("GetSQLite3TableDefinitions",SQL%)
Cette fonction retourne des informations sur la structure de la base de donées dans le mémo associé à elle.

objet KGFTab
Ceci est l'ajout majeur à KGF.dll.
Il s'agit d'une version personnelle des objets CONTAINER_TAB et TAB, entièrement réalisée par moi sans utilisation de logiciels tiers - uniquement des composants standard Delphi et du code Delphi.

Imaginez un cadre avec des onglets (le nombre est libre), dont les onglets cliquables sont des boutons avec des libellés ET avec des icônes réagissant au clic... Chaque onglet (bouton) est associé à une "page", et seule la page de l'onglet "sélectionné" est affichée, bien sûr.

Mieux: les boutons, placés par défaut en haut horizontalement, peuvent être également placés en bas horizontalement, ou à gauche ou à droite, verticalement ! Et ceci dynamiquement, sans perturber la structure des pages de l'objet? Les boutons et les pages se redimensionnent et se repositionnent automatiquement, en tenant compte du contenu de chaque page, à chaque changement de disposition...

Encore mieux: On peut, là encore dynamiquement, changer la hauteur et la largeur des boutons, et tout se reconfigure automatiquement !

On peut même activer ou désactiver un ou plusieurs onglets, simplement par une commande script.
On peut évidemment avoir plusieurs objets KGFTab dans un même programme - ce n'est pas limité.

Bien sûr, on peut placer des objets Panoramic dans ces pages (sinon, ça n'aurait pas grand intérêt). Maus surtout,, j'ai appliqué ici le principe du "scripting" tel qu'on le voit avec l'objet SQLITE3 (et généralement beaucoup de bases de données) qui sont pilotées par des scripts SQL. Ceci permet d'avoir une quinzaine ouune vingtaine de fonctions différentes pour configurer un tel objet - il suffit de passer un script avec les bonnes commandes à une unique fonction.

En clair, il n'y a que 4 fonctions pour gérer un objet KGFTab:
Code:
dim res%, KT%
KT% = dll_call1("CreateKGFTab",handle(dest%))   : ' dest% est le numéro de l'objet dans lequel le KGFTab doir apparaître
KT% = dll_call1("DeleteKGFTab",KT%)       : ' suppression de l'objet (dans on ON_CLOSE de la form 0)
res% = dll_call2("ConfigureKGFTab",KT%,handle(script%))   : exécuter un script (dans un memo par exemple)
res% = dll_call2("GetKGFTabHandles",KT%,adr(s$))    : ' retourner la liste des handles des pages du KGFTab

Les commandes disponibles pour un script sont les suivantes:
Citation :
  actuellement, les commandes suivantes sont disponibles dans un script (insensibles à la casse):
  (les signes <...> indiquent la plade d'une valeur numérique ou textuelle, selon les circonstances)
  Les paramères sont séparées par des virgules et la commande est terminée par un sémicolon.
  Tout ce qui suit un ";" est ignoré et considéré comme commentaire.
       parent,<handle>;                      handle de l'objegt dans lequel le TKGFTab doit apparaître
       left,<position>;                      position gauche en pixels du TKGFTab
       top,<position>;                       position haute en pixels du TKGFTab
       width,<dimension>;                    largeur en pixels du TKGFTab
       height,<dimension>;                   hauteur en pixels du TKGFTab
       label,<ind>,<libellé>;                index et libelle d'un bouton existant
       addtab,<libellé>;                     libellé du nouveau bouton
       inserttab,<ind>,<libellé>;            index d'un bouton existant pour l'insertion et le nouveau libellé
       deletetab,<Ind>;                      index du bouton et de la feuille à supprimer
       insertcontrol,<ind>,<contrôle>;       indice de la page, contrôle (integer(Control) ou Object_Internal(n) ou handle )
       glyph,<ind>,<fichier>;                index (0...3) de la partie du glupf à charger par l'image dans le fichier
       buttonglyph,<ind>;                    index du bouton dans lequel installer le glyph assemblé avec 4 images
       tabhandles;                           (retourne la liste des handles des pages)
       buttonheight,<dimension>;             hauteur des boutons
       buttonwidth,<dimension>;              largeur des boutons
       buttonposition,<choix>;               choix de la position des boutons (0...3)
       tabcolor,<ind>,<couleur>;             index d'une page et sa culeur de fond (RGB en hexa précédé par un "$")
       tabactivate,<ind>,<état>             index d'une page et état d'activation  (0 ou <>0)
  De façon interne, un TKGFTab contient 4 petites images invisibles servant à construire un glyph.
  Il faut charger les 4 images par des fichiers BMP toutes de la même dimension ( 16 x 16  par exemple), commande "glyph"
  Lorsque les 4 images sont chargées, on peut charger le glyph par la commande "buttonglyph"
  Les positions possibles des boutons sont 0=Top  1=Left  2=Bottom  3=Right
  Les couleurs sont par exemple:   $FF pour Rouge, $FF0000 pour Bleu, etc

On comprend aisément que cette liste est facile à élargir, selon les besoins, et SANS créer de nouvelles fonctions !

Mais assez parlé de théorie. Voici une démo très simple. Téléchargez KGF.dll, puis les 4 images BMP suivantes:

KGF_dll - nouvelles versions - Page 12 Androi14

KGF_dll - nouvelles versions - Page 12 Androi15

KGF_dll - nouvelles versions - Page 12 Androi16

KGF_dll - nouvelles versions - Page 12 Androi17

Ces images doivent être enregsitrés en format BMP, sous les noms suivants:
adroid.bmp, android(90).bmp, android(180).bmp et android(270).bmp
Ou alors, utilisez 4 de vos propres BMP en format carré, au choix.

Ensuite, voici le code de la démo:
Code:
' test_KGFTab.bas

label close0, demo, script, test

dim res%, KT%, s$, hnd%

dll_on "KGF.dll"

full_space 0 : on_close 0,close0
memo 1 : top 1,10 : left 1,900 : width 1,300 : height 1,400 : bar_both 1
button 2 : top 2,440 : left 2,900 : caption 2,"Démo" : on_click 2,demo
button 3 : top 3,440 : left 3,900+width(2) : caption 3,"Script" : on_click 3,script
button 4 : top 4,470 : left 4,900+width(2) : caption 4,"Test" : on_click 4,test

memo 10 : hide 10
end 

close0:
  KT% = dll_call1("DeleteKGFTab",KT%)
  return
 
demo:
  KT% = dll_call1("CreateKGFTab",handle(0))

  clear 1
  item_add 1,"; ligne commentaire"
  item_add 1,"Width,500;"
  item_add 1,"Height,400;"
  item_add 1,"Label,0,Clients;"
  item_add 1,"AddTab,Products;"
  item_add 1,"AddTab,Wagons;"
  item_add 1,"InsertTab,1,Insertion;"
  Item_add 1,"Glyph,0,android.bmp;        définir le glyph 0"
  Item_add 1,"Glyph,1,android(90).bmp;    définir le glyph 1"
  Item_add 1,"Glyph,2,android(180).bmp;    définir le glyph 2"
  Item_add 1,"Glyph,3,android(270).bmp;    définir le glyph 3"
  Item_add 1,"ButtonGlyph,1;              installer les 4 glyphes dans le bouton 2ème bouton"
  item_add 1,"TabHandles;                  retourner la liste des handles des TABs"
  item_add 1,"TabColor,2,$FF;              colorer la 3ème page en rouge (valeur RBG en hexa précédée par $)"

script:
  res% = dll_call2("ConfigureKGFTab",KT%,handle(1))
  if res%<>0 then message "Erreur dans le script à la ligne "+str$(res%)+chr$(13)+chr$(10)+item_read$(1,res%)
  return
 
test:
  ' récupére les handles des pages dans un memo invisible
  s$ = string$(500," ")
  res% = dll_call2("GetKGFTabHandles",KT%,adr(s$))
'  message s$
  text 10,s$
 
  ' ce qui suit, marche pour tous les objets fenêtrés (ayant un handle) comme Edit, Button, Memo, ...
  Edit 14 : Text 14,"Premier edit"
  Top 14,80 : Left 14,50
  hnd% = val(item_read$(10,2))
  res% = DLL_call3("SetFormParent",handle(14),hnd%,0)
 
  ' ce qui suit, peut être utilisé pour les objets ALPHA (remplacer ALPHA par Panel)
  panel 20 : width 20,100 : height 20,20
  caption 20,"Démo ALPHA"
  top 20,30 : left 20,50
  hnd% = val(item_read$(10,3))
  res% = DLL_call3("SetFormParent",handle(20),hnd%,0)
 
  ' pour les autres objets sans handle (PICTURE, ...),
  ' les placer dans un PANEL et coller le PANEL dans le KGFTab.
  panel 21 : width 21,32 : height 21,32 : top 21,30 : left 21,100
  picture 22 : parent 22,21 : width 22,32 : height 22,32 : stretch_on 22
  file_load 22,"android.bmp"
  hnd% = val(item_read$(10,4))
  res% = DLL_call3("SetFormParent",handle(21),hnd%,0)
 
  return

Mode d'emploi:
Au démarrage, rien de se passe.
Cliquez sur "Démo" ==> un KGFTab avec 4 onglets va s'afficher.
Un onglet porte les icônes android (qui réagissent au clic !), et la page d'un aurte onglet esr rouge.
On voit, dans le mémo à droite, que toute la démo est réalisée par un script...
Puis, cliquez sur "Test" ==> quelques objets Panoramic seront chargées dans les pages.
Vous pouvez cliquer sur les boutons pour voir le contenu des pages...
Ensuite, effacez le contenu du mémo et rentrez vos propres scripts qui seront exécutés par un clic sur "Script".
Je vous suggère d'effectuer au début des scripts d'une seule ligne pour mieux voir les effets.
Faits, dans l'ordre:
buttonposition,1;
buttonposition,2;
buttonposition,3;
buttonposition,0;
buttonheight,18;
buttonheight,48;
buttonwidth,120;
buttonwidth,20;

etc
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Marc

Marc


Nombre de messages : 2391
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyDim 17 Déc 2023 - 2:09

Bonjour à tous !

Bravo et merci Klaus !
J’ai testé le nouvel objet KGFTab. Il est parfaitement fonctionnel ! cheers
La programmation par script est très conviviale.
C’est ultra simple et très rapide à mettre en œuvre.
Le scripting permet de réduire considérablement les erreurs de code.

A vérifier : la commande ButtonGlyph ne fonctionne que si au moins 4 onglets sont créés.

Encore bravo Klaus, c’est un super objet !
Revenir en haut Aller en bas
Klaus

Klaus


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

KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 EmptyDim 17 Déc 2023 - 2:24

Merci beaucoup, Marc !

Citation :
A vérifier : la commande ButtonGlyph ne fonctionne que si au moins 4 onglets sont créés.
Oui, c'est normal. Il faut bien les 4 images pour constituer. D'ailleurs, dans mon post avec la liste des commandes, il est bien spécifie:
Citation :
buttonglyph,<ind>; index du bouton dans lequel installer le glyph assemblé avec 4 images

Je suis en train de le faire évoluer, pour définit la largeur et/ou la hauteur des boutons et pour pouvoir afficher plusieurs lignes ou colonnes de boutons. Ca comme à marcher comme le montre la capture suivante:
KGF_dll - nouvelles versions - Page 12 Aa118
avec le script suivant:
Citation :
Width,300;
Height,400;
ButtonWidth,30;
Label,0,A;
AddTab,B;
AddTab,C;
AddTab,D;
AddTab,E;
AddTab,F;
AddTab,G;
AddTab,H;
AddTab,I;
AddTab,J;
AddTab,K;
AddTab,L;
AddTab,M;
AddTab,N;
AddTab,O;
AddTab,P;
AddTab,Q;
AddTab,R;
AddTab,S;
AddTab,T;
AddTab,U;
AddTab,V;
AddTab,W;
AddTab,X;
AddTab,Y;
AddTab,Z;
MultiRow,1;

Encore un peu de patience...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





KGF_dll - nouvelles versions - Page 12 Empty
MessageSujet: Re: KGF_dll - nouvelles versions   KGF_dll - nouvelles versions - Page 12 Empty

Revenir en haut Aller en bas
 
KGF_dll - nouvelles versions
Revenir en haut 
Page 12 sur 14Aller à la page : Précédent  1 ... 7 ... 11, 12, 13, 14  Suivant
 Sujets similaires
-
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» KGF_dll - nouvelles versions
» Synedit_Editor - nouvelles versions
» version instantanée PANORAMIC V 0.9.25i6 du 14/12/2013

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: