Page 1 sur 2

Créer des composants (gadgets).

Publié : jeu. 17/févr./2005 10:30
par petit chercheur
Bonjour,

Débutant en PureBasic, je me demande comment je dois faire pour créer un nouveau composant.

Je souhaiterais par exemple créer un composant "grille" que je pourrais utiliser à la façon d' "Excel".

J'ai entendu parler des API Windows. Où les trouver et comment les utiliser dans PureBasic?

Merci d'avance pour vos réponses.

Publié : jeu. 17/févr./2005 10:43
par Le Soldat Inconnu
Le mieux serait de débuter par les tutos pour débutant, tu y apprendras comment marche les gadget de PB

voir ici
http://www.purebasic.fr/french/viewtopic.php?t=185

ou si vraiment débutant en programmation, je te conseille de regarder celui la avant :
http://www.purebasic.fr/french/viewtopic.php?t=182


Pour faire une grille style excel, il n'ya pas besoin des API ;)
C'est assez facile mais je ne suis pas sur que si je te donne l'exemple, tu le comprennes.

Quel est ton niveau en programmation ?

Publié : jeu. 17/févr./2005 11:58
par petit chercheur
Le Soldat Inconnu a écrit :Le mieux serait de débuter par les tutos pour débutant, tu y apprendras comment marche les gadget de PB

voir ici
http://purebasic.hmt-forum.com/viewtopic.php?t=185

ou si vraiment débutant en programmation, je te conseille de regarder celui la avant :
http://purebasic.hmt-forum.com/viewtopic.php?t=182


Pour faire une grille style excel, il n'ya pas besoin des API ;)
C'est assez facile mais je ne suis pas sur que si je te donne l'exemple, tu le comprennes.

Quel est ton niveau en programmation ?
J'ai fait de la programmation (Basic, Cobol, Fortran, Pascal - J'ai tout oublié!) il y a bien longtemps, sous les premiers ordis sous Dos.
Windows n'existait pas encore!
Depuis " l'explosion" informatique, je n'arrive plus à suivre...
Je voudrais bien m'y remettre!

Merci pour ta réponse.

Publié : jeu. 17/févr./2005 12:01
par petit chercheur
Le Soldat Inconnu a écrit : Pour faire une grille style excel, il n'ya pas besoin des API ;)
C'est assez facile mais je ne suis pas sur que si je te donne l'exemple, tu le comprennes.
Donne le quand même, si tu veux bien, je verrai ainsi à quoi ça ressemble!

Merci!

Publié : jeu. 17/févr./2005 12:07
par Le Soldat Inconnu
Je te laisse regarder les tutos, n'hésites pas à poser des questions ;)

Ensuite, je pense que c'est ça que tu voulais faire :

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.92

; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 400, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Test") = 0 Or CreateGadgetList(WindowID()) = 0
  End
EndIf

; on va faire un tableau de StringGadget, dimension 10 * 10

Dim Gadget(9, 9) ; on crée un tableau de 10 par 10 qui va recevoir l'identifant des gadgets crées
For x = 0 To 9
  For y = 0 To 9
    Gadget(x, y) = StringGadget(#PB_Any, 40 * x, 20 * y, 40, 20, Str(x) + ", " + Str(y))
    ; On sauvegarde l'identifiant du gadget dans le tableau pour pouvroi récupérer le texte tapé
  Next
Next

Repeat
  Event = WaitWindowEvent()
  
Until Event = #PB_EventCloseWindow ; On a fermé la fenêtre

; on affiche le contenu du tableau dans le debugger
For x = 0 To 9
  For y = 0 To 9
    Debug Str(x) + ", " + Str(y) + " = " + GetGadgetText(Gadget(x, y))
  Next
Next

End

Publié : jeu. 17/févr./2005 15:25
par petit chercheur
Le Soldat Inconnu a écrit :Je te laisse regarder les tutos, n'hésites pas à poser des questions ;)

Ensuite, je pense que c'est ça que tu voulais faire :

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu
; Version de PB : 3.92

; Création de la fenêtre et de la GadgetList
If OpenWindow(0, 0, 0, 400, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Test") = 0 Or CreateGadgetList(WindowID()) = 0
  End
EndIf

; on va faire un tableau de StringGadget, dimension 10 * 10

Dim Gadget(9, 9) ; on crée un tableau de 10 par 10 qui va recevoir l'identifant des gadgets crées
For x = 0 To 9
  For y = 0 To 9
    Gadget(x, y) = StringGadget(#PB_Any, 40 * x, 20 * y, 40, 20, Str(x) + ", " + Str(y))
    ; On sauvegarde l'identifiant du gadget dans le tableau pour pouvroi récupérer le texte tapé
  Next
Next

Repeat
  Event = WaitWindowEvent()
  
Until Event = #PB_EventCloseWindow ; On a fermé la fenêtre

; on affiche le contenu du tableau dans le debugger
For x = 0 To 9
  For y = 0 To 9
    Debug Str(x) + ", " + Str(y) + " = " + GetGadgetText(Gadget(x, y))
  Next
Next

End
Cher ami breton,

Un grand merci pour ton exemple.
Je vais, comme tu le suggères à juste titre, examiner avec attention les tutos et le "manuel".
A toute première vue, si j'ai bien compris sans connaître les instructions, il semblerait que ta grille soit un gadget composé lui-même de 100 gadgets de chaînes de caractères.

Publié : jeu. 17/févr./2005 15:38
par Oliv
En fait ce n'est pas un gadget, c'est exactement 100 gadgets.
Mais pourquoi les gadgets ListViewGadget ou ListIconGadget n'iraient pas ? ça serait plus maniable non ?

Publié : jeu. 17/févr./2005 17:14
par comtois
il y a des exemples dans codearchiv , dans le répertoire Gadgets/GridGadget

Publié : lun. 21/févr./2005 21:29
par petit chercheur
comtois a écrit :il y a des exemples dans codearchiv , dans le répertoire Gadgets/GridGadget
Je ne trouve pas ce répertoire.
Peux-tu me préciser où il se trouve?
J'ai mis codearchiv dans rechercher, mais rien...

Au plaisir de te lire...

Publié : lun. 21/févr./2005 21:58
par Le Soldat Inconnu

Publié : mar. 22/févr./2005 9:29
par petit chercheur
Merci pour la réponse!

Créer des gadgets.

Publié : mar. 22/mars/2005 11:43
par petitchercheur
Bonjour,

Par ma première question, je souhaitais savoir s'il est possible de créer des nouveaux gadgets avec PureBasic.

J'affine ma question en demandant s'il est possible de créer des nouveaux gadgets avec PureBasic, sans se servir de ceux qui existent déjà?

Si oui, où puis-je trouver un tuto à ce propos (le domaine est tellement vaste 8O !) ?

Merci d'avance!

Publié : mar. 22/mars/2005 12:34
par Le Soldat Inconnu
on a les possibilités suivantes :

- partir d'un assemble de gadget existant (mais c'est pas ce que tu cherches visiblement, c'est pourtant le plus simple)

- partir d'un gadget existant et modifier son design en passant par un gadget ownerdraw, en clair, tu as le gadget mais c'est toi qui le dessine comme ça te chante (voir CodeArchiv, il y a des exemples)
on arrive à de chouette truc comme ça
et en faisant de l'assemblage de gadget de ce type, on peut faire n'importe quoi

- programmer entièrement le gadget de A à Z, en détectant le survol de la souris, les clic souris, etc ...
typiquement, tu peux regardé mon PopupMenuXP
le menu est fait à partir d'image que j'anime ensuite.
http://www.purebasic.fr/french/viewtopic.php?t=59
surement le plus souple pour permettre de gros délire mais assez long à coder

- faire le gadget uniquement avec l'API mais cela revient pratiquement à faire un assemblage de gadget pure déjà existant.
il faut savoir que les possibilité intérger à win sont pas infinis
et que toutes les options dispo ici sont intégrable aux gadget de Pure via sendmessage(


Quel type de gadget souhaites-tu faire ?

Publié : mar. 22/mars/2005 13:17
par petitchercheur
Le Soldat Inconnu a écrit :Quel type de gadget souhaites-tu faire ?
Pour l'instant, je n'ai pas encore d'idée bien précises.
Lorsque j'aurai un besoin bien précis, que je n'arriverai pas à résoudre, je me permettrai de le soumettre sur le forum.
Ma question avait surtout pour but de me rassurer quant aux possibilités de PureBasic.
Merci pour ta réponse, elle a répondu à ma question.

@+

Publié : mar. 22/mars/2005 17:07
par Flype
j'ai a peine modifie le code du soldat inconnu pour mettre la grille
dans un ScrollAreaGadget ce qui est assez pratique... :roll:

Code : Tout sélectionner

; Auteur : Le Soldat Inconnu 
; Version de PB : 3.92 

; Création de la fenêtre et de la GadgetList 
If OpenWindow(0, 0, 0, 418, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_MinimizeGadget, "Test") = 0 Or CreateGadgetList(WindowID()) = 0 
  End 
EndIf 

; on va faire un tableau de StringGadget, dimension 10 * 10 
ScrollAreaGadget(0,0,0,418,200,400,480,2,#PB_ScrollArea_BorderLess)
Dim Gadget(9, 23) ; on crée un tableau de 10 par 23 qui va recevoir l'identifant des gadgets crées 
For x = 0 To 9 
  For y = 0 To 23 
    Gadget(x, y) = StringGadget(#PB_Any, 40 * x, 20 * y, 40, 20, Str(x) + ", " + Str(y)) 
    ; On sauvegarde l'identifiant du gadget dans le tableau pour pouvroi récupérer le texte tapé 
  Next 
Next 
CloseGadgetList()

Repeat 
  Event = WaitWindowEvent() 
Until Event = #PB_EventCloseWindow ; On a fermé la fenêtre 

; on affiche le contenu du tableau dans le debugger 
For x = 0 To 9 
  For y = 0 To 9 
    Debug Str(x) + ", " + Str(y) + " = " + GetGadgetText(Gadget(x, y)) 
  Next 
Next 

End
sinon j'ai lu qqpart ( forum FR ou anglais je sais plus ) que Fred avait
l'intention d'intégrer assez vite un GridGadget() à Purebasic 8)