Input en Drawing 2D

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Input en Drawing 2D

Message par PCPixMusic »

blendman a écrit :...
ça te permet d'avoir un code plus compact, plus facile à modifier, à comprendre, etc ;).
Merci beaucoup pour la remarque, ça me servira pour une prochaine fois,
car je viens de m'apercevoir que ces variables ne sert plus pour cette nouvelle version de code.
Dernière modification par PCPixMusic le lun. 08/mars/2021 22:39, modifié 1 fois.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Input en Drawing 2D

Message par kernadec »

ton code charge des images comme par exemple "Open_Blob.png"
tu devrais les mettent sur le site que je t'ai donné ensuite copier
pour chaque image le 3ème lien et dans ton prochain message tu pourras utiliser
ces liens qui s’afficheront et nous pourrons les télécharger
pour tester ton programme..
ou tu met un fichier archive des images de ton code dans ton message
à partir d'un lien de ton google drive...
cordialement
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Input en Drawing 2D

Message par PCPixMusic »

Voici l'archive de ce code avec les images, biensûr ce n'est qu'un début où il y a absolument rien de faire niveau sqlite,
pour le moment j'essai d'avoir une grille fonctionnelle.

Je n'avais pas réussi à l'écrire avec ScrollAreaGadget qui est bien mieux que ScrollBarGadget() qui scroll qu'une fois le pointeur de la Souris sur la bar de Scroll.

Mon idée actuelle, serait :

- Je clic sur une cellule qui affiche un StrinGgadget pour saisir donc le champ
- Quand je sors de la zone du gadget avec la souris, ce StrinGgadget se désactive =>
Ainsi je peux reselectionné une autre cellule et refaire une nouvelle saisie ailleurs

- Les fonctions de celection d'une colonne, d'une ligne ou selecionner tout ne sont pas encore écrites.

Pour le moment c'est un travail pour 1000 lignes, sans doute qu'avec un meilleur code
ceci sera plus simle, flexible et réuttilisable qui le voudras.

Pourquoi pas en faire à terme une bibliotèques graphique simple "Grid2D". :D

Lien valables cinq jours.

https://drop.chapril.org/download/4c372 ... xDS6dlNuRg
Mesa
Messages : 1098
Inscription : mer. 14/sept./2011 16:59

Re: Input en Drawing 2D

Message par Mesa »

Quelqu'un a déjà réalisé une grille avec un canvas, tu peux la réutiliser:
https://www.purebasic.fr/english/viewto ... 4031a75e27


Sinon, ajouter un stringgadget est facile mais garder le texte déjà entré dans la grille sera plus compliqué, il te faudra un tableau de string.

Code : Tout sélectionner

Enumeration
  #Fenetre_Saya
  #string
  
  #Label_igne_01
  #Label_igne_02
  #Label_igne_03
  #Label_igne_04
  #Label_igne_05
  #Label_igne_06
  #Label_igne_07
  #Label_igne_08
  #Label_igne_09
  #Label_igne_10
  
  #Label_igne_11
  #Label_igne_12
  #Label_igne_13
  #Label_igne_14
  #Label_igne_15
  #Label_igne_16
  #Label_igne_17
  #Label_igne_18
  #Label_igne_19
  #Label_igne_20
  #Label_igne_21
  #Label_igne_22
  #Label_igne_23
  #Label_igne_24
  #Label_igne_25
  
  #Label_Colonne_01
  #Label_Colonne_02
  #Label_Colonne_03
  #Label_Colonne_04
  #Label_Colonne_05
  #Label_Colonne_06
  #Label_Colonne_07
  #Label_Colonne_08
  #Label_Colonne_09
  #Label_Colonne_10
  
  #Select_All
  
  #ScrollBar
  
  #Menu_SQlite3_Nouvelle_BDD
  #Menu_SQlite3_Ouvrir_BDD
  #Menu_SQlite3_Nouvelle_Fiche_BDD
  #Menu_SQlite3_MAJ_BDD
  #Menu_SQlite3_Quitter
  
  #Menu_Edition_Couper
  #Menu_Edition_Copier
  #Menu_Edition_Coller
  #Menu_Edition_Import_Blob
  
  #Menu_Rechercher
  #Menu_Rechercher_Suivant
  
  #Menu_Aide
  #Menu_A_Propos
  
  #ID_Bouton_close_a_propos
  
  ;==========================================
  #Image_Nouvelle
  #Image_Open
  #Image_Nouvelle_Fiche
  #Image_MAJ_BDD
  #Image_Quitter
  
  #Image_Couper
  #Image_Copier
  #Image_Coller
  #Image_Import_Blob
  
  #Image_Rechercher
  #Image_Rechercher_Suivant
  
  #Image_Aide
  #Image_A_Propos
  ;==========================================
  
  #Fenetre_a_propos
  #TextAPropos1
  #TextAPropos2
  #TextAPropos3
  #TextAPropos4
  
  #Select_Key_Cellule
  #Font_Saya  
  
  #Entree_Cellule
EndEnumeration

;=========================== Largeur des Colonne ===========================

Global.i Largeur_Colonne_01 = 180
Global.i Largeur_Colonne_02 = 180
Global.i Largeur_Colonne_03 = 180
Global.i Largeur_Colonne_04 = 180
Global.i Largeur_Colonne_05 = 180
Global.i Largeur_Colonne_06 = 180
Global.i Largeur_Colonne_07 = 180
Global.i Largeur_Colonne_08 = 180
Global.i Largeur_Colonne_09 = 180
Global.i Largeur_Colonne_10 = 180

;===========================================================================
Global.i glEvent, glGadget, glType, Quitter = 0

Global Separateur.s
Global IndexSeparateur.i

Global.i SourisX,SourisY,SourisX_Save,SourisY_Save

;Global Separateur.s = "\" ;Windows
Global Separateur.s = "/" ;Linux

UseOGGSoundDecoder()  ; Utilisation des fichiers Ogg
UseFLACSoundDecoder() ; Utilisation des fichiers Flac

UseJPEG2000ImageDecoder()
UseJPEG2000ImageEncoder()
UseJPEGImageDecoder()
UseJPEGImageEncoder()

UsePNGImageDecoder()
UsePNGImageEncoder()

UseTIFFImageDecoder()
UseTGAImageDecoder()

UseGIFImageDecoder()

InitMouse()

Procedure PosClic(MouseX.i,MouseY.i, x0.i,y0.i,x1.i,y1.i)  
  If MouseX >= x0 And MouseX <= x1 And MouseY >= y0 And MouseY <= y1
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure

Procedure PosClicFac(MouseX.i,MouseY.i, x0.i,y0.i,x1.i,y1.i)     
  If MouseX >= x0 And MouseX <= x0+x1 And MouseY >= y0 And MouseY <= y0+y1
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf  
EndProcedure

Procedure PosClicCercle(MouseX.i,MouseY.i,x.i,y.i,Radius.i)      
  
  If MouseX >= x And MouseX <= x*Radius And MouseX >= x And MouseX <= x/Radius And      
     MouseY >= y And MouseY <= y*Radius And MouseY >= y And MouseY <= y/Radius 
    
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf  
  
EndProcedure

Procedure PixCadreColor(X1.i,Y1.i,X2.i,Y2.i,Color.i)
  LineXY(X1,Y1,X2,Y1,Color)    
  LineXY(X1,Y1,X1,Y2,Color)  
  LineXY(X2,Y1,X2,Y2,Color)  
  LineXY(X1,Y2,X2,Y2,Color)       
EndProcedure

Procedure CadreCel(X1.i,Y1.i,FacX.i,FacY.i,Color.i)
  LineXY(X1,Y1,X1+FacX,Y1,Color) ;Ligne Horizontale Haut 1
  LineXY(X1,Y1,X1,Y1+FacY,Color) ;Ligne Verticale Gauche 1
  
  LineXY(X1,Y1+1,X1+FacX,Y1+1,Color) ;Ligne Horizontale Haut 2
  LineXY(X1+1,Y1,X1+1,Y1+FacY,Color) ;Ligne Verticale Gauche 2
  
  
  LineXY(X1+FacX-1,Y1,X1+FacX-1,Y1+FacY,Color) ;Ligne Verticale Droite 1
  LineXY(X1,Y1+FacY-1,X1+FacX,Y1+FacY-1,Color) ;Ligne Horizontale Bas 1
  
  LineXY(X1+FacX,Y1,X1+FacX,Y1+FacY,Color) ;Ligne Verticale Droite 2 
  LineXY(X1,Y1+FacY,X1+FacX,Y1+FacY,Color) ;Ligne Horizontale Bas 1
  
  ResizeGadget(#string,X1,Y1,FacX,FacY)
;   HideGadget(#string,#False)
  SetActiveGadget(#string)

EndProcedure

Procedure TextCadre(X1.i,Y1.i,Texte.s,Color.i)
  Protected X2.i,Y2.i  
  
  X1 = X1 - 20  
  Y1 = Y1 + 17
  
  X2 = X1+100
  Y2 = Y1+25
  
  ;LineXY(X1,Y1,X2,Y1,#Black)    
  ;LineXY(X1,Y1,X1,Y2,#Black)  
  ;LineXY(X2,Y1,X2,Y2,#Black)  
  ;LineXY(X1,Y2,X2,Y2,#Black)       
  DrawingMode(#PB_2DDrawing_Transparent)
  DrawText(X1-40,Y2-45,Texte,Color,#PB_2DDrawing_Transparent)
  
EndProcedure

;============================================================================================================================================================
Procedure Labels_Ligne_Grid(X.i,                                                   
                            Y.i,                     
                            Largeur_Colonne_01.i,
                            Largeur_Colonne_02.i,
                            Largeur_Colonne_03.i,
                            Largeur_Colonne_04.i,
                            Largeur_Colonne_05.i,
                            Largeur_Colonne_06.i,
                            Largeur_Colonne_07.i,
                            Largeur_Colonne_08.i,
                            Largeur_Colonne_09.i,
                            Largeur_Colonne_10.i,                     
                            Hauteur_Cellule.i,
                            Titre_Colone_01.s,
                            Titre_Colone_02.s,
                            Titre_Colone_03.s,
                            Titre_Colone_04.s,
                            Titre_Colone_05.s,
                            Titre_Colone_06.s,
                            Titre_Colone_07.s,
                            Titre_Colone_08.s,
                            Titre_Colone_09.s,
                            Titre_Colone_10.s)
  
  ButtonGadget(#Label_Colonne_01,X,l+Y, Largeur_Colonne_01,Hauteur_Cellule,Titre_Colone_01,#PB_Button_Toggle)
  ButtonGadget(#Label_Colonne_02,X+Largeur_Colonne_01,l+Y_Cellule,Largeur_Colonne_02,Hauteur_Cellule,Titre_Colone_02,#PB_Button_Toggle)
  ButtonGadget(#Label_Colonne_03,X+Largeur_Colonne_01+Largeur_Colonne_02,l+Y,Largeur_Colonne_03,Hauteur_Cellule,Titre_Colone_03,#PB_Button_Toggle)
  ButtonGadget(#Label_Colonne_04,X+Largeur_Colonne_01+Largeur_Colonne_02+Largeur_Colonne_03,l+Y,Largeur_Colonne_04,Hauteur_Cellule,Titre_Colone_04,#PB_Button_Toggle)
  ButtonGadget(#Label_Colonne_05,X+Largeur_Colonne_01+Largeur_Colonne_02+Largeur_Colonne_03+Largeur_Colonne_04,l+Y_Cellule,Largeur_Colonne_05,Hauteur_Cellule,Titre_Colone_05,#PB_Button_Toggle)
  ButtonGadget(#Label_Colonne_06,X+Largeur_Colonne_01+Largeur_Colonne_02+Largeur_Colonne_03+Largeur_Colonne_04+Largeur_Colonne_05,l+Y_Cellule,Largeur_Colonne_06,Hauteur_Cellule,Titre_Colone_06,#PB_Button_Toggle)
  ButtonGadget(#Label_Colonne_07,X+Largeur_Colonne_01+Largeur_Colonne_02+Largeur_Colonne_03+Largeur_Colonne_04+Largeur_Colonne_05+Largeur_Colonne_06,l+Y_Cellule,Largeur_Colonne_07,Hauteur_Cellule,Titre_Colone_07,#PB_Button_Toggle)
  ButtonGadget(#Label_Colonne_08,X+Largeur_Colonne_01+Largeur_Colonne_02+Largeur_Colonne_03+Largeur_Colonne_04+Largeur_Colonne_05+Largeur_Colonne_06+Largeur_Colonne_07,l+Y,Largeur_Colonne_08,Hauteur_Cellule,Titre_Colone_08,#PB_Button_Toggle)
  ButtonGadget(#Label_Colonne_09,X+Largeur_Colonne_01+Largeur_Colonne_02+Largeur_Colonne_03+Largeur_Colonne_04+Largeur_Colonne_05+Largeur_Colonne_06+Largeur_Colonne_07+Largeur_Colonne_08,l+Y,Largeur_Colonne_09,Hauteur_Cellule,Titre_Colone_09,#PB_Button_Toggle)
  ButtonGadget(#Label_Colonne_10,X+Largeur_Colonne_01+Largeur_Colonne_02+Largeur_Colonne_03+Largeur_Colonne_04+Largeur_Colonne_05+Largeur_Colonne_06+Largeur_Colonne_07+Largeur_Colonne_08+Largeur_Colonne_09,l+Y,Largeur_Colonne_10,Hauteur_Cellule,Titre_Colone_10,#PB_Button_Toggle)
EndProcedure

Procedure Affiche_Numeros(index.i)
  Protected.i num
  index = index -1  
  
  SetGadgetText(#Label_igne_01,Str(Index+1))
  SetGadgetText(#Label_igne_02,Str(Index+2))
  SetGadgetText(#Label_igne_03,Str(Index+3))
  SetGadgetText(#Label_igne_04,Str(Index+4))
  SetGadgetText(#Label_igne_05,Str(Index+5))
  SetGadgetText(#Label_igne_06,Str(Index+6))
  SetGadgetText(#Label_igne_07,Str(Index+7))
  SetGadgetText(#Label_igne_08,Str(Index+8))
  SetGadgetText(#Label_igne_09,Str(Index+9))
  SetGadgetText(#Label_igne_10,Str(Index+10))  
  
  SetGadgetText(#Label_igne_11,Str(Index+11))
  SetGadgetText(#Label_igne_12,Str(Index+12))
  SetGadgetText(#Label_igne_13,Str(Index+13))
  SetGadgetText(#Label_igne_14,Str(Index+14))
  SetGadgetText(#Label_igne_15,Str(Index+15))
  SetGadgetText(#Label_igne_16,Str(Index+16))
  SetGadgetText(#Label_igne_17,Str(Index+17))
  SetGadgetText(#Label_igne_18,Str(Index+18))
  SetGadgetText(#Label_igne_19,Str(Index+19))
  SetGadgetText(#Label_igne_20,Str(Index+20))
  
  SetGadgetText(#Label_igne_21,Str(Index+21))
  SetGadgetText(#Label_igne_22,Str(Index+22))
  SetGadgetText(#Label_igne_23,Str(Index+23))
  SetGadgetText(#Label_igne_24,Str(Index+24))
  SetGadgetText(#Label_igne_25,Str(Index+25))
  
EndProcedure

Procedure Grid()  
  Protected.i Largeur_Label = 60
  Protected.i Hauteur_Cellule = 20
  Protected.i j = 0   
  Protected.i X = 0
  Protected.i Y = 0    
  
  Protected.i Largeur_Colonne_01 = 180
  Protected.i Largeur_Colonne_02 = 180
  Protected.i Largeur_Colonne_03 = 180
  Protected.i Largeur_Colonne_04 = 180
  Protected.i Largeur_Colonne_05 = 180
  Protected.i Largeur_Colonne_06 = 180
  Protected.i Largeur_Colonne_07 = 180
  Protected.i Largeur_Colonne_08 = 180
  Protected.i Largeur_Colonne_09 = 180
  Protected.i Largeur_Colonne_10 = 180
  
  ButtonGadget(#Select_All,0,0,60,50,"",#PB_Button_Toggle)
  
  Labels_Ligne_Grid(X+Largeur_Label,                             
                    Y,                     
                    Largeur_Colonne_01,
                    Largeur_Colonne_02,
                    Largeur_Colonne_03,
                    Largeur_Colonne_04,
                    Largeur_Colonne_05,
                    Largeur_Colonne_06,
                    Largeur_Colonne_07,
                    Largeur_Colonne_08,
                    Largeur_Colonne_09,
                    Largeur_Colonne_10,                     
                    Hauteur_Cellule,
                    "Prenom",
                    "Nom",
                    "Enteprise",
                    "Adresse",
                    "Code postal",
                    "Ville",
                    "Pays",
                    "Téléphone",
                    "E-Mail",
                    "Site")
  
  ;=========== Labels de la colonne 0 ===========
  ButtonGadget(#Label_igne_01, X,Y+33 ,Largeur_Label,20,Str(ligne_01),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_02, X,Y+66 ,Largeur_Label,20,Str(ligne_02),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_03, X,Y+99 ,Largeur_Label,20,Str(ligne_03),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_04, X,Y+132,Largeur_Label,20,Str(ligne_04),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_05, X,Y+165,Largeur_Label,20,Str(ligne_05),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_06, X,Y+198,Largeur_Label,20,Str(ligne_06),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_07, X,Y+231,Largeur_Label,20,Str(ligne_07),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_08, X,Y+264,Largeur_Label,20,Str(ligne_08),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_09, X,Y+297,Largeur_Label,20,Str(ligne_09),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_10, X,Y+330,Largeur_Label,20,Str(ligne_10),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_11, X,Y+363,Largeur_Label,20,Str(ligne_11),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_12, X,Y+396,Largeur_Label,20,Str(ligne_12),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_13, X,Y+429,Largeur_Label,20,Str(ligne_13),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_14, X,Y+462,Largeur_Label,20,Str(ligne_14),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_15, X,Y+495,Largeur_Label,20,Str(ligne_15),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_16, X,Y+528,Largeur_Label,20,Str(ligne_16),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_17, X,Y+561,Largeur_Label,20,Str(ligne_17),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_18, X,Y+594,Largeur_Label,20,Str(ligne_18),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_19, X,Y+627,Largeur_Label,20,Str(ligne_19),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_20, X,Y+660,Largeur_Label,20,Str(ligne_20),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_21, X,Y+693,Largeur_Label,20,Str(ligne_21),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_22, X,Y+726,Largeur_Label,20,Str(ligne_22),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_23, X,Y+759,Largeur_Label,20,Str(ligne_23),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_24, X,Y+792,Largeur_Label,20,Str(ligne_24),#PB_Button_Toggle)
  ButtonGadget(#Label_igne_25, X,Y+825,Largeur_Label,20,Str(ligne_25),#PB_Button_Toggle)
  
  ;=========== Nombres de Lignes 
  If StartDrawing(CanvasOutput(#Fenetre_Saya))      
    
    BackColor(RGB(255,255,255)) 
    FrontColor(RGB(0, 0, 0))
    
    Box(0,0,1867,900,RGB(255,255,255))  
    
    For x = 60 To 1880 Step 180
      LineXY(x,0,x,860)
    Next  
    
    For y = 33 To 900 Step 33
      LineXY(60,y,1860,y)
    Next
    
    StopDrawing()
  EndIf
  
EndProcedure

Procedure Menu()
  If LoadImage(#Image_Nouvelle,"Icons/Flou.png")  
    ResizeImage(#Image_Nouvelle,16,16)    
  EndIf
  
  If LoadImage(#Image_Open,"Icons/Open.png")  
    ResizeImage(#Image_Open,16,16)    
  EndIf
  
  If LoadImage(#Image_Nouvelle_Fiche,"Icons/Flou.png")  
    ResizeImage(#Image_Nouvelle_Fiche,16,16)    
  EndIf
  
  If LoadImage(#Image_MAJ_BDD,"Icons/Pal.png")  
    ResizeImage(#Image_MAJ_BDD,16,16)    
  EndIf
  
  If LoadImage(#Image_Quitter,"Icons/Flou_Gris.png")  
    ResizeImage(#Image_Quitter,16,16)    
  EndIf
  
  ;=============================================================================================
  
  If LoadImage(#Image_Couper,"Icons/Open_Blob.png")  
    ResizeImage(#Image_Couper,16,16)    
  EndIf
  
  If LoadImage(#Image_Copier,"Icons/Open_Blob.png")  
    ResizeImage(#Image_Copier,16,16)    
  EndIf
  
  If LoadImage(#Image_Coller,"Icons/Open_Blob.png")  
    ResizeImage(#Image_Coller,16,16)    
  EndIf
  
  If LoadImage(#Image_Import_Blob,"Icons/Open_Blob.png")  
    ResizeImage(#Image_Import_Blob,16,16)    
  EndIf
  
  ;=============================================================================================
  
  If LoadImage(#Image_Rechercher,"Icons/Open_Blob.png")  
    ResizeImage(#Image_Rechercher,16,16)    
  EndIf
  
  If LoadImage(#Image_Rechercher_Suivant,"Icons/Open_Blob.png")  
    ResizeImage(#Image_Rechercher_Suivant,16,16)    
  EndIf
  ;=============================================================================================
  
  If LoadImage(#Image_Aide,"Icons/Open_Blob.png")  
    ResizeImage(#Image_Aide,16,16)    
  EndIf
  
  If LoadImage(#Image_A_Propos,"Icons/A_Propos.png")  
    ResizeImage(#Image_A_Propos,16,16)    
  EndIf
  
  ;=============================================================================================
  
  If CreateImageMenu(#Fenetre_Saya,WindowID(#Fenetre_Saya), #PB_Menu_ModernLook) 
    MenuTitle("SQlite3")
    MenuItem(#Menu_SQlite3_Nouvelle_BDD,"Nouvelle BDD"+Chr(9)+"Ctrl+N",ImageID(#Image_Nouvelle))
    MenuItem(#Menu_SQlite3_Ouvrir_BDD,"Ouvrir"+Chr(9)+"Ctrl+O",ImageID(#Image_Open))      
    MenuItem(#Menu_SQlite3_Nouvelle_Fiche_BDD,"Nouvelle fiche BDD"+Chr(9)+"Ctrl+F",ImageID(#Image_Nouvelle_Fiche))
    MenuItem(#Menu_SQlite3_MAJ_BDD,"Mise a jour d'une BDD"+Chr(9)+"Ctrl+M",ImageID(#Image_MAJ_BDD))
    MenuBar()  ;la barre de séparation sera insérée ici
    MenuItem(#Menu_SQlite3_Quitter,"Quitter Saya"+Chr(9)+"Ctrl+Q",ImageID(#Image_Quitter))      
    ;===============================================================================================
    MenuTitle("Edition")
    MenuItem(#Menu_Edition_Couper,"Couper"+Chr(9)+"Ctrl+X",ImageID(#Image_Couper))      
    MenuItem(#Menu_Edition_Copier,"Copier"+Chr(9)+"Ctrl+C",ImageID(#Image_Copier))      
    MenuItem(#Menu_Edition_Coller,"Coller"+Chr(9)+"Ctrl+V",ImageID(#Image_Coller))            
    MenuBar()  ;la barre de séparation sera insérée ici
    MenuItem(#Menu_Edition_Import_Blob,"Importer une image blob ..."+Chr(9)+"Ctrl+I",ImageID(#Image_Import_Blob))
    ;===============================================================================================
    MenuTitle("Rechercher")
    MenuItem(#Menu_Rechercher,"Couper"+Chr(9)+"Ctrl+R",ImageID(#Image_Rechercher))      
    MenuItem(#Menu_Rechercher_Suivant,"Copier"+Chr(9)+"F3",ImageID(#Image_Rechercher_Suivant))      
    ;===============================================================================================
    MenuTitle("Aide")
    MenuItem(#Menu_Aide,"Ade"+Chr(9)+"F1",ImageID(#Image_Aide))      
    MenuItem(#Menu_A_Propos,"A Propos"+Chr(9)+"Ctrl+A",ImageID(#Image_A_Propos))      
    ;===============================================================================================
    
  EndIf
  
EndProcedure

;==============================================================================================================

Procedure Fenetre_Saya()
  Protected.i ajuste_bar_linux = 60
  Protected.i taille_linux = 47
  
  If OpenWindow(#Fenetre_Saya, 0,0,1874,910, "Notysoft Saya - Gestion de Contacts - 2016 - 2021",  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )              
    CanvasGadget(#Fenetre_Saya,0,0,1874,859, #PB_Canvas_Container)
    StringGadget(#string,0,0,0,0,"")
;     HideGadget(#string,#True)
    
    Menu()
    Grid()     
    
    ScrollBarGadget(#ScrollBar, 1861, 1, 12, 860 ,0, 1450, 50, #PB_ScrollBar_Vertical) 
    
    AddKeyboardShortcut(#Fenetre_Saya,#PB_Shortcut_Return,#Select_Key_Cellule)
    
    ;StringGadget(#Entree_Cellule,62,35,177,30,"",#PB_String_BorderLess)
    
    ;Debug GetGadgetState(#ScrollBar)  
    
  EndIf
  
EndProcedure


Procedure Main()
  Repeat         
    
    If StartDrawing(CanvasOutput(#Fenetre_Saya))                  
      BackColor(RGB(255,255,255)) 
      FrontColor(RGB(0, 0, 0))
      
      If GetGadgetState(#ScrollBar) < 35      
        Affiche_Numeros(1)
      EndIf
      
      ;========================================================
      
      If GetGadgetState(#ScrollBar) > 70      
        Affiche_Numeros(26)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 105
        Affiche_Numeros(51)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 140     
        Affiche_Numeros(76)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 175      
        Affiche_Numeros(101)
      EndIf
      
      ;========================================================
      If GetGadgetState(#ScrollBar) > 210      
        Affiche_Numeros(126)
      EndIf        
      
      If GetGadgetState(#ScrollBar) > 245
        Affiche_Numeros(151)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 280
        Affiche_Numeros(176)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 315      
        Affiche_Numeros(201)
      EndIf
      
      ;========================================================
      
      If GetGadgetState(#ScrollBar) > 350  
        Affiche_Numeros(226)
      EndIf        
      
      If GetGadgetState(#ScrollBar) > 385
        Affiche_Numeros(251)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 420
        Affiche_Numeros(276)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 455      
        Affiche_Numeros(301)
      EndIf
      
      ;========================================================
      
      If GetGadgetState(#ScrollBar) > 490      
        Affiche_Numeros(326)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 525      
        Affiche_Numeros(351)
      EndIf        
      
      If GetGadgetState(#ScrollBar) > 560      
        Affiche_Numeros(376)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 595
        Affiche_Numeros(401)
      EndIf
      
      ;========================================================
      
      If GetGadgetState(#ScrollBar) > 630      
        Affiche_Numeros(426)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 665      
        Affiche_Numeros(451)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 700
        Affiche_Numeros(476)
      EndIf        
      
      If GetGadgetState(#ScrollBar) > 735
        Affiche_Numeros(501)
      EndIf
      
      ;========================================================
      
      If GetGadgetState(#ScrollBar) > 770
        Affiche_Numeros(526)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 805      
        Affiche_Numeros(551)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 840      
        Affiche_Numeros(576)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 875      
        Affiche_Numeros(601)
      EndIf
      
      ;========================================================
      
      If GetGadgetState(#ScrollBar) > 910
        Affiche_Numeros(626)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 945      
        Affiche_Numeros(651)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 980      
        Affiche_Numeros(676)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 1015      
        Affiche_Numeros(601)
      EndIf
      
      ;========================================================
      
      If GetGadgetState(#ScrollBar) > 1050
        Affiche_Numeros(726)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 1085      
        Affiche_Numeros(751)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 1120     
        Affiche_Numeros(776)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 1155      
        Affiche_Numeros(801)
      EndIf
      
      ;========================================================
      
      If GetGadgetState(#ScrollBar) > 1190
        Affiche_Numeros(826)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 1225      
        Affiche_Numeros(851)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 1260     
        Affiche_Numeros(876)
      EndIf        
      
      ;========================================================
      
      If GetGadgetState(#ScrollBar) > 1295
        Affiche_Numeros(901)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 1330
        Affiche_Numeros(926)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 1365      
        Affiche_Numeros(951)
      EndIf
      
      If GetGadgetState(#ScrollBar) > 1400    
        Affiche_Numeros(976)
      EndIf        
      
      ;========================================================
      
      StopDrawing()
    EndIf    
    
    
    Select WaitWindowEvent()
        
        ;Case  #PB_EventType_MouseWheel
        ;  MessageRequester("",Str(#PB_Canvas_WheelDelta))      
        
      Case #PB_Event_Gadget    
        Select EventGadget()                   
            
          Case #Fenetre_Saya          
            
            SourisX = GetGadgetAttribute(#Fenetre_Saya, #PB_Canvas_MouseX)
            SourisY = GetGadgetAttribute(#Fenetre_Saya, #PB_Canvas_MouseY)            
            
          Case #string
            Select EventType()
              Case #PB_EventType_Change
                Debug GetGadgetText(#string)
            EndSelect
            
                
        EndSelect
        
        Select EventType()
          Case #PB_EventType_MouseMove                
            
            LoadFont(#Font_Saya, "Arial", 14)
            
            If StartDrawing(CanvasOutput(#Fenetre_Saya))      
              DrawingFont(FontID(#Font_Saya))
              BackColor(RGB(255,255,255)) 
              FrontColor(RGB(0, 0, 0))
              SourisX_Save = SourisX
              SourisY_Save = SourisY
              DrawText(70,40,""+SourisX_Save+" "+SourisY_Save) 
              StopDrawing()            
            EndIf            
            
          Case #PB_EventType_LeftButtonDown
            
            For j = 0 To 1867 Step 180      
              For i = 0 To 800 Step 33             
                
                If PosClicFac(SourisX,SourisY,60+j,34+i,180,33)            
                  If StartDrawing(CanvasOutput(#Fenetre_Saya))      
                    BackColor(RGB(255,255,255)) 
                    FrontColor(RGB(0, 0, 0))
                    
                    Box(0,0,1867,900,RGB(255,255,255))  
                    For x = 60 To 1880 Step 180
                      LineXY(x,0,x,860)
                    Next  
                    
                    For y = 33 To 900 Step 33
                      LineXY(60,y,1860,y)
                    Next      
                    
                    CadreCel(60+j,34+i,179,31,#Black)
                    
                    StopDrawing()            
                  EndIf 
                EndIf 
              Next  
            Next      
            
          Case #PB_EventType_RightButtonDown          
            
            If PosClicFac(SourisX,SourisY,70,30,1874,910) 
              If StartDrawing(CanvasOutput(#Fenetre_Saya))           
                BackColor(RGB(255,255,255)) 
                FrontColor(RGB(0, 0, 0))
                Box(0,0,1867,900,RGB(255,255,255))  
                For x = 60 To 1880 Step 180
                  LineXY(x,0,x,860)
                Next  
                
                For y = 33 To 900 Step 33
                  LineXY(60,y,1860,y)
                Next      
                StopDrawing()
              EndIf 
            EndIf                
            
        EndSelect            
        
      Case #PB_Event_Menu      ; Un élément du menu a été sélectionné
        Select EventMenu()     ; On recupère le numéro de cet élement...
                               ;Case #Menu_SQlite3_Ouvrir_BDD = 1002
                               ;Case #Menu_SQlite3_Nouvelle_Fiche_BDD = 1003
                               ;Case #Menu_SQlite3_MAJ_BDD = 1004                
          Case #Menu_SQlite3_Quitter : End
          Case #Menu_A_Propos : MessageRequester("A Propos",#CRLF$+"Notysoft Saya - 2019 - 2021 - v1.00"+#CRLF$+"Gestionnaire de contacts SQLite3.")                
            
            Case #Select_Key_Cellule
                StringGadget(#Entree_Cellule,62,35,177,30,"",#PB_String_BorderLess)
            ;CadreCel(60+j,34+i,179,31,#Black)
            ;MessageRequester("Position de la souris","Je suis la touche entrée en ("+SourisX_Save+":"+SourisY_Save+")")
            
        EndSelect          
        
      Case #PB_Event_CloseWindow
        Select EventWindow()             
          Case #Fenetre_Saya : End
        EndSelect
        
    EndSelect          
  Until Event = #PB_Event_CloseWindow  
EndProcedure

Fenetre_Saya()

Main()
M.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Input en Drawing 2D

Message par kernadec »

bjr à tous
Merci mesa pour le lien :D
@PCPixMusic
pour ton lien il nous mène sur le site on télécharge mais le fichier à une erreur :?
alors pour les archives, je te propose des sites sans limite de durée...
voir ce comparatif 2021 des services de stockages gratuit illimités
https://www.clubic.com/telecharger/actu ... ligne.html

voir aussi ces deux là:
https://www.joomeo.com
=> 5gb free ilimités
https://jumpshare.com
=> 2gb free
pour "jumpshare", je suis inscrit depuis 2016 mes fichiers 2016 y sont toujours pas vu de limite
Upload avec rapidité correcte, car avec GoogleDrive upload c'est long.....
je n'ai jamais été relancé pour une limite par le site
cordialement
Dernière modification par kernadec le mer. 10/mars/2021 5:31, modifié 2 fois.
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Input en Drawing 2D

Message par PCPixMusic »

@mesa

Merci pour le lien, mais je préfère continué dans mon projet pour apprendre et avoir mon propre truc.
Merci pour ton ajout dans le code, c''est ce que je veux faire, il me reste plus qu'à le continué.


@kernadec

Mon lien fonctionne et chapril c'est la fiabilitée, donc c'est que tu as a problème quelques part (mieux vaux faire sur ordinateur et banir le smartphones).

La preuve en image et uen fois que je clic le téléchargenet se fait bien, mais j'ai al fibre alors j'ai aps le temps de faire la capture du téléchargement en cours.

Merci, mais j'ai déjà environs 20 noms de domaines ou nmon cloud mianubo ;)

Image


Voici donc mon archive via Mianubo avec l'ajout de mesa : (Bien sûr sur ordinateur et non sur smartphone)

https://www.mianubo.fr/s/N63dmCfBJnRwYJL
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Input en Drawing 2D

Message par kernadec »

bjr PCPixMusic
merci, le lien il fonctionne

Tu avais précisé que l' archive restait 7 jours
je voulais juste te faire remarquer que pour les sites avec limite de 7 jours
ton post sera probablement lu dans le temps par un nouvel utilisateur PB
mais qui ne pourras pas utiliser tes codes car ton lien deviendra une erreur 404...

donc, les stockages limités c'est pas top sur ce forum..
Cordialement
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Input en Drawing 2D

Message par PCPixMusic »

Bonjour kernadec,

Merci je comprends.

Je viens de faire une mise à jour avec un nouveau code.

De nouvelles procedures pour récupérer la saisie des cellules et les afficher, mais ça ne fonctionne pas. :/

https://www.mianubo.fr/s/8pZpPKspGbREQ7f

En résumé ajout de :

Code : Tout sélectionner

Global.s Result

Global.s Dim Cellule_(1000,10)

For Index_Ligne=0 To 1000
  For Index_colonne=0 To 10    
    Inc = Inc + 1
    Cellule_(Index_ligne,Index_Colonne) = ""
  Next 
Next

Procedure Copy_String_To_Cellule_() ; Scan des cellules Après une saisie
  Protected.i Ligne_Index, Xg,Yg
  Xg = GadgetX(#String,#PB_Gadget_ContainerCoordinate)
  Yg = GadgetY(#String,#PB_Gadget_ContainerCoordinate)
  
  inc = 36
  
  For Ligne_Index = 0 To 1000
    inc = inc + 33
    If Xg = 62   And Yg = inc : Cellule_(ligne_index,0) = GetGadgetText(#String) : EndIf  
    If Xg = 242  And Yg = inc : Cellule_(ligne_index,1) = GetGadgetText(#String) : EndIf                
    If Xg = 422  And Yg = inc : Cellule_(ligne_index,2) = GetGadgetText(#String) : EndIf                
    If Xg = 602  And Yg = inc : Cellule_(ligne_index,3) = GetGadgetText(#String) : EndIf                                  
    If Xg = 782  And Yg = inc : Cellule_(ligne_index,4) = GetGadgetText(#String) : EndIf                
    If Xg = 962  And Yg = inc : Cellule_(ligne_index,5) = GetGadgetText(#String) : EndIf                                  
    If Xg = 1142 And Yg = inc : Cellule_(ligne_index,6) = GetGadgetText(#String) : EndIf                
    If Xg = 1322 And Yg = inc : Cellule_(ligne_index,7) = GetGadgetText(#String) : EndIf                                  
    If Xg = 1502 And Yg = inc : Cellule_(ligne_index,8) = GetGadgetText(#String) : EndIf                
    If Xg = 1682 And Yg = inc : Cellule_(ligne_index,9) = GetGadgetText(#String) : EndIf
  Next               
                
EndProcedure

Procedure Cellule_Into_Result() ; Affiche le contenu des cellules
  Protected.i Ligne_Index, Xg,Yg  
    
  Xg = GadgetX(#String,#PB_Gadget_ContainerCoordinate)
  Yg = GadgetY(#String,#PB_Gadget_ContainerCoordinate)
  
  inc = 36
  
  For Ligne_Index = 0 To 1000
    inc = inc + 33
    If Xg = 62   And Yg = inc : Result = Cellule_(ligne_index,0) : EndIf  
    If Xg = 242  And Yg = inc : Result = Cellule_(ligne_index,1) : EndIf  
    If Xg = 422  And Yg = inc : Result = Cellule_(ligne_index,2) : EndIf  
    If Xg = 602  And Yg = inc : Result = Cellule_(ligne_index,3) : EndIf  
    If Xg = 782  And Yg = inc : Result = Cellule_(ligne_index,4) : EndIf  
    If Xg = 962  And Yg = inc : Result = Cellule_(ligne_index,5) : EndIf  
    If Xg = 1142 And Yg = inc : Result = Cellule_(ligne_index,6) : EndIf  
    If Xg = 1322 And Yg = inc : Result = Cellule_(ligne_index,7) : EndIf  
    If Xg = 1502 And Yg = inc : Result = Cellule_(ligne_index,8) : EndIf  
    If Xg = 1682 And Yg = inc : Result = Cellule_(ligne_index,9) : EndIf  
  Next             

EndProcedure


Procedure Affiche_Cellules() ; Affiche le contenu des cellules
  Protected.i Ligne_Index,inc
  
  inc = 36
  
  For Ligne_Index = 1 To 1000
    inc = inc + 33    
    DrawText(62  ,inc,Cellule_(Ligne_Index,0))
    DrawText(242 ,inc,Cellule_(Ligne_Index,1))
    DrawText(422 ,inc,Cellule_(Ligne_Index,2))
    DrawText(602 ,inc,Cellule_(Ligne_Index,3))
    DrawText(782 ,inc,Cellule_(Ligne_Index,4))
    DrawText(962 ,inc,Cellule_(Ligne_Index,5))
    DrawText(1142,inc,Cellule_(Ligne_Index,6))
    DrawText(1322,inc,Cellule_(Ligne_Index,7))
    DrawText(1502,inc,Cellule_(Ligne_Index,8))
    DrawText(1682,inc,Cellule_(Ligne_Index,9))
  Next              
                
EndProcedure


Modifications dans :

Procedure CadreCel(X1.i,Y1.i,FacX.i,FacY.i,Color.i)
  LineXY(X1,Y1,X1+FacX,Y1,Color) ;Ligne Horizontale Haut 1
  LineXY(X1,Y1,X1,Y1+FacY,Color) ;Ligne Verticale Gauche 1
 
  LineXY(X1,Y1+1,X1+FacX,Y1+1,Color) ;Ligne Horizontale Haut 2
  LineXY(X1+1,Y1,X1+1,Y1+FacY,Color) ;Ligne Verticale Gauche 2
 
 
  LineXY(X1+FacX-1,Y1,X1+FacX-1,Y1+FacY,Color) ;Ligne Verticale Droite 1
  LineXY(X1,Y1+FacY-1,X1+FacX,Y1+FacY-1,Color) ;Ligne Horizontale Bas 1
 
  LineXY(X1+FacX,Y1,X1+FacX,Y1+FacY,Color) ;Ligne Verticale Droite 2
  LineXY(X1,Y1+FacY,X1+FacX,Y1+FacY,Color) ;Ligne Horizontale Bas 1 
  
  ResizeGadget(#String,X1+2,Y1+2,FacX-2,FacY-2)
  
  Cellule_Into_Result() 
  SetGadgetText(#String,Result)
  
;   HideGadget(#String,#False)
  SetActiveGadget(#String)

EndProcedure

          Case #PB_EventType_LeftButtonDown
           
            For j = 0 To 1867 Step 180     
              For i = 0 To 800 Step 33             
               
                If PosClicFac(SourisX,SourisY,60+j,34+i,180,33)           
                  If StartDrawing(CanvasOutput(#Fenetre_Saya))     
                    BackColor(RGB(255,255,255))
                    FrontColor(RGB(0, 0, 0))
                   
                    Box(0,0,1867,900,RGB(255,255,255)) 
                    For x = 60 To 1880 Step 180
                      LineXY(x,0,x,860)
                    Next 
                   
                    For y = 33 To 900 Step 33
                      LineXY(60,y,1860,y)
                    Next     
                    
                    Affiche_Cellules()
                    CadreCel(60+j,34+i,179,31,#Black)
                   
                    StopDrawing()           
                  EndIf
                EndIf
              Next 
            Next

Merci à tout le monde.

Passez une très bonne journée.
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Input en Drawing 2D

Message par kernadec »

bjr PCPixMusic
tu essaye de simuler une feuille excel
perso, j'utiliserais un ListViewGadget() ou un ListIconGadget()
sur ton Canvas car la gestion des cellulles et des colonnes
n'est pas une chose simple sans ces gadgets :wink:

j'avais fais une compile avec beaucoup de codes du forum et
de possibilités pour te donner une idée de la démarche regarde ici
https://www.purebasic.fr/french/viewtop ... =6&t=12504

biensur ce code est un peu compliqué
mais en prenant les exemples ListIconGadget() ListViewGadget() du manuel tu devrais pouvoir te débrouiller
Cordialement
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Input en Drawing 2D

Message par microdevweb »

C'est possible, mais cela n'est pas un petit travail.

Dans un canvas tu peux lire les caractères qui y sont tapés. Il faut activer le flag #PB_Canvas_Keyboard et avec la commande

Code : Tout sélectionner

GetGadgetAttribute(0,#PB_Canvas_Key)
Tu récupère le caractère chaque fois à ce type d'événement

Code : Tout sélectionner

Select EventType()
    Case #PB_EventType_KeyDown
EndSelect
Il te faut par après faire le code pour gérer le placement des caractères et gérer le clignotement du prompt dans une thread.

Maintenant les canvas peuvent aussi servir de container, on peut donc y dessiner et y ajouter des gadgets de type StringGadget ou autres

Perso j'avais développer une table ou l'on pouvait directement ajouter des items. Pour ce faire, j'activais les Gadgets nécessaire quant on cliquais sur la colonne concernée.

Coordialement
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Input en Drawing 2D

Message par microdevweb »

Voici un petit exemple on on change la position d'un string gadget en fonction de la ligne cliquée

Code : Tout sélectionner

Enumeration 
  #FORM
  #CANVAS
  #STR
EndEnumeration



Procedure evCanvas()
  Protected mx,my,i,y1,y2
  Select EventType()
    Case #PB_EventType_LeftClick
      mx = GetGadgetAttribute(#CANVAS,#PB_Canvas_MouseX)
      my = GetGadgetAttribute(#CANVAS,#PB_Canvas_MouseY)
      ; detect row selected
      For i = 0 To 7
        y1 = 100 * i
        y2 = y1 + 100
        If my >= y1 And my <=y2
          Break
        EndIf
      Next
      ResizeGadget(#STR,#PB_Ignore,100 * i,#PB_Ignore,#PB_Ignore)
  EndSelect
EndProcedure

Procedure exit()
  End
EndProcedure

Procedure draw()
  Protected i,y
  StartVectorDrawing(CanvasVectorOutput(#CANVAS))
  For i = 0 To 8
    AddPathBox(0,y,780,100)
    If i%2
      VectorSourceColor($FFE0FFFF)
    Else
      VectorSourceColor($FF499AEE)
    EndIf
    FillPath(#PB_Path_Preserve)
    VectorSourceColor($FFCD0000)
    StrokePath(2)
    y + 100
  Next
  StopVectorDrawing()
EndProcedure

Procedure open()
  OpenWindow(#FORM,0,0,800,600,"Teste",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  CanvasGadget(#CANVAS,10,0,780,600,#PB_Canvas_Container)
  StringGadget(#STR,0,0,780,100,"")
  CloseGadgetList()
  BindEvent(#PB_Event_CloseWindow,@exit())
  BindGadgetEvent(#CANVAS,@evCanvas())
  draw()
EndProcedure

open()

Repeat
  WaitWindowEvent()
ForEver 
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Input en Drawing 2D

Message par PCPixMusic »

Bonjour @kernadec,

Merci pur ton code cependant à la ligne 20: #NM_CUSTOMDRAW = #NM_FIRST-12

J'aobtien l'erreur "[22 :28 :41] [COMPILER] Ligne 20: Constant not found: #NM_FIRST.
[22 :28 :48] [COMPILER] Ligne 20: Constant not found: #NM_FIRST.
"
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Input en Drawing 2D

Message par PCPixMusic »

Bonjour @microdevweb Mesa s'en est déjà occupé. ^^

Dans mon dernier post avec le lien version mon dernier code,

J'ai donc cherché à créer un tableau à deux dimensions afin de récupérer et afficher les chaînes saisies dans #String

Cependant, je ne maîtrise pas très bien les tableaux et ça ne fonctionne pas.

Les tableaux commençant à zéro, j'ai dû mal a géré le décalage.

Je continuerai à réfléchir sur ce projet, sinon ça ne sert à rien si je dois abandonner et me servir d'un outil d'une autre personne.

Je pense plus faqire comme ça puor pus de simplicité

Code : Tout sélectionner

Global.s Dim Contact_prenom_dim(1000)
Global.s Dim Contact_nom_dim(1000)
Global.s Dim Contact_entreprise_dim(1000)
Global.s Dim Contact_adresse_dim(1000)
Global.s Dim Contact_code_postal_dim(1000)
Global.s Dim Contact_ville_dim(1000)
Global.s Dim Contact_pays_dim(1000)
Global.s Dim Contact_telephone_dim(1000)
Global.s Dim Contact_mail_dim(1000)
Global.s Dim Contact_site_dim(1000)

For i =0 To 1000 : Contact_prenom_dim(i) : Next 
For i =0 To 1000 : Contact_nom_dim(i) : Next 
For i =0 To 1000 : Contact_entreprise_dim(i) : Next 
For i =0 To 1000 : Contact_adresse_dim(i) : Next 
For i =0 To 1000 : Contact_code_postal_dim(i) : Next 
For i =0 To 1000 : Contact_ville_dim(i) : Next 
For i =0 To 1000 : Contact_pays_dim(i) : Next 
For i =0 To 1000 : Contact_telephone_dim(i) : Next 
For i =0 To 1000 : Contact_mail_dim(i) : Next 
For i =0 To 1000 : Contact_site_dim(i) : Next 
Mais du coup la valeur 1000 crée 1001 variables.

Doc pour 1000 valeurs il me faut mettre

Global.s Dim Contact_prenom_dim(999)

par exemple ?
Avatar de l’utilisateur
kernadec
Messages : 1594
Inscription : ven. 25/avr./2008 11:14

Re: Input en Drawing 2D

Message par kernadec »

bjr PCPixMusic
ah M.. c'est c'est ennuyant...merci du retour

je viens de télécharger le code depuis le lien du forum
pas d'erreur?? chez moi avec Windows Seven 64 et PB 573 LTS 32 & 64 bits

le code à été mis à jours depuis la version PB 521 jusqu'a ce jour PB 573, il y a 918 lignes

Alors pour la ligne 20 ce sont des constantes Windows pour les Gadgets
il ne devrait pas y avoir d'erreur car c'est le début du programme ??? 8O

maintenant, cela pourrait venir de l'utilisation d' une version démo de PB qui est sans API
et les constantes Windows ne seraient pas reconnues dans ce cas :?:

la syntaxe de la ligne que tu a donnée est la bonne :?:
#NM_CUSTOMDRAW = #NM_FIRST - 12

Cordialement
PCPixMusic
Messages : 106
Inscription : ven. 06/janv./2017 9:50

Re: Input en Drawing 2D

Message par PCPixMusic »

@kernadec

je vois, je suis sour Debian 11, via une LMDE 4 mise à jour vers les dépots de Debian 11. ;)

J'ai une version payante de PureBasic depuis ems début en PureBasic, donc depuis 2016. ^^

Pour moi Windows n'est là qu'en secours pour les programmes qui ne fonnctionnent pas sous Wine (il y en a très peu). ^
je peux testé avec Purebsic avec Wine alors.

En effet ça fonctionne avec la version sous Wine.

Quelle valeur a #NM_FIRST, de #LVM_FIRST,#LVM_FIRST et #CCM_FIRST ?

Peux en attribuant directement les bonnes valeurs totales cela rendrait ton code multi-plateforme ?

Je n'ai aps de D'Apple, mais sur un MacOSX ça doit être pareil du coup. :/

Ou bien ton code comporte des appellent de routines windiows ?

Bravo pour ce chouette code !
Répondre