Créer des composants (gadgets).

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
petit chercheur
Messages : 13
Inscription : lun. 14/févr./2005 8:54

Créer des composants (gadgets).

Message 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.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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 ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
petit chercheur
Messages : 13
Inscription : lun. 14/févr./2005 8:54

Message 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.
petit chercheur
Messages : 13
Inscription : lun. 14/févr./2005 8:54

Message 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!
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
petit chercheur
Messages : 13
Inscription : lun. 14/févr./2005 8:54

Message 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.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message 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 ?
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

il y a des exemples dans codearchiv , dans le répertoire Gadgets/GridGadget
petit chercheur
Messages : 13
Inscription : lun. 14/févr./2005 8:54

Message 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...
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
petit chercheur
Messages : 13
Inscription : lun. 14/févr./2005 8:54

Message par petit chercheur »

Merci pour la réponse!
petitchercheur
Messages : 17
Inscription : lun. 07/mars/2005 17:50

Créer des gadgets.

Message 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!
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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 ?
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
petitchercheur
Messages : 17
Inscription : lun. 07/mars/2005 17:50

Message 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.

@+
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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)
Image
Répondre