Page 1 sur 3

petit programme

Publié : jeu. 24/nov./2005 22:45
par maitre we
voila , je vien de passer 5/10h dessus (je commence) et je vous ai fait un petit programme que vous améliorerez surement :

Code : Tout sélectionner

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



;- declaration des constantes 
; il faut donner au maximum un nom a la constantes qui représente son utilité 


; on déclare chaque type de constantes dans une rubrique 

; le(s) fenetre(s) 
#fenetre_principale = 0
#fenetre_secondaire = 1 

 ;                Les Gadgets :
 
; *Gadgets pour la fenetre principale 
#gadget_bouton_ok = 0                              ;sert un peu a rien
#gadget_bouton_quitter = 1                         ;quitte le programme
#gadget_bouton_fichier_texte = 2                   ;ouvre le fichier texte
#gadget_bouton_fenetre_secondaire = 3              ;ouvre la fenetre secondaire             

; *Gadget(s) pour la fenetre secondaire
#gadget_bouton_quitter_fenetre_secondaire = 4      ;ferme la fenetre secondaire


;====================================== 
;- declaration des variables globales, des strutures, des listes ou tableau, ... 




;====================================== 
;- declaration des procedures 

Procedure Ouvre_Fenetre_principale() 

 If OpenWindow(#fenetre_principale, 0, 0, 250, 170, #PB_Window_SystemMenu | #PB_Window_WindowCentered | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget |  #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "fenêtre principale") 

  ; on créer la liste des éléments (gadget) de la fenètre 

   If CreateGadgetList(WindowID()) 

    ; on crée 4 boutons 

     ButtonGadget(#gadget_bouton_ok, 12, 10, 225, 25, "Ok") 

     ButtonGadget(#gadget_bouton_quitter, 12, 130, 225, 25, "Fermer") 
     
     ButtonGadget(#gadget_bouton_fenetre_secondaire, 12, 50, 225 ,25, "Ouvrir Une Fenetre Secondaire")
     
      ButtonGadget(#gadget_bouton_fichier_texte, 12, 90, 225, 25, "Ouvrir Un Fichier Texte") 

   EndIf 

 



 EndIf 

EndProcedure 


Procedure Gestion_bouton_OK(Numero_bouton.l) 

 MessageRequester("Info", "Vous avez appuyé sur le bouton " , 0 + 4 * 16) 



; pour les paramètre d'un message requester, voir mon code source "messagerequesterplus()" 

EndProcedure 

Procedure Gestion_bouton_fenetre_secondaire(Numero_bouton.l) 

;Procedure Ouvre_Fenetre_secondaire() 

 If OpenWindow(#fenetre_secondaire, 0, 0, 240, 150, #PB_Window_SystemMenu | #PB_Window_WindowCentered | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget |  #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "fenêtre secondaire") 

; on créer la liste des éléments (gadget) de la fenètre 

   If CreateGadgetList(WindowID()) 

    ; on crée 1 boutons 

     ButtonGadget(#gadget_bouton_quitter_fenetre_secondaire, 12, 10, 225, 25, "Fermer") 


   EndIf 




EndIf

 

EndProcedure

Procedure Gestion_bouton_fichier_texte(Numero_bouton.l) 

 ;MessageRequester("Info", "Vous avez ouvert un fichier texte " , 0 + 4 * 16)  
 NomFichier$ = "éditeur de texte.exe"
 RunProgram(NomFichier$) 
 

EndProcedure




;===================================== 
;- Debut du programme 

; On initialise tous d'abord les valeurs 


; On affiche la fenêtre les boutons 

Ouvre_Fenetre_principale() 


; On lance la boucle de gestion des évènements de la fenêtre ouverte 



Repeat 

 Event = WaitWindowEvent() 

 ; Mettre ici la gestion des évènements 

 If Event = #PB_EventGadget 
    
   Select EventGadgetID(); boutons, zone de texte, ... 

     Case #gadget_bouton_ok 
      ; l'avantage de mettre une procedure est de pouvoir la réutiliser pour un autre évènement 
      ; par exmple : un bouton et un menu qui doivent réalisé la même chose 
       Gestion_bouton_OK(1) 


     Case #gadget_bouton_quitter 
       Event = #PB_EventCloseWindow ; on stocke dans event l'évènement quitter, ainsi l'appui sur le bouton quitter rvient à l'appui sur la croix 

     Case #gadget_bouton_quitter_fenetre_secondaire 
       CloseWindow(#fenetre_secondaire); on stocke dans event l'évènement quitter, ainsi l'appui sur le bouton quitter rvient à l'appui sur la croix 
      
       ;Gestion_bouton_quitter_fenetre_secondaire(1)
        
     Case #gadget_bouton_fenetre_secondaire 
      ; l'avantage de mettre une procedure est de pouvoir la réutiliser pour un autre évènement 
      ; par exmple : un bouton et un menu qui doivent réalisé la même chose 
       Gestion_bouton_fenetre_secondaire(1)
       
     Case #gadget_bouton_fichier_texte 
      ; l'avantage de mettre une procedure est de pouvoir la réutiliser pour un autre évènement 
      ; par exmple : un bouton et un menu qui doivent réalisé la même chose 
       Gestion_bouton_fichier_texte(1)

       
   EndSelect 

 EndIf 

  

Until Event = #PB_EventCloseWindow; si on appui sur la croix, on ferme le programme 


End; Fin du programme 
il n'est pas tre bien présentez (le code) sa serai sympa que qql le remette en bonne état lol




voici le fichier texte :

Code : Tout sélectionner

;/Constantes Window 
Enumeration 
  #Window_0 
EndEnumeration 

;/Constantes Gadget 
Enumeration 
  #Editeur 
EndEnumeration 

Enumeration 
  #Menu 
EndEnumeration 

Enumeration 
  #M_Ouvrir 
  #M_sauvegarder 
EndEnumeration 

Procedure StreamFileIn_Callback(hFile, pbBuff, cb, pcb) 
  ProcedureReturn ReadFile_(hFile, pbBuff, cb, pcb, 0)!1 
EndProcedure 

Procedure StreamFileOut_Callback(hFile, pbBuff, cb, pcb) 
  ProcedureReturn WriteFile_(hFile, pbBuff, cb, pcb, 0)!1 
EndProcedure 

Procedure FileStreamIn(FileID.l, File.s, gadget.l, Mode.l) 
  Protected File 
  Protected FileID 
  Protected gadget 
  Protected StreamData.EDITSTREAM 
  
  If Mode <> #SF_RTF : Mode = #SF_TEXT : EndIf 
  
  If ReadFile(FileID, File) 
    StreamData\dwCookie = UseFile(FileID) 
    StreamData\dwError = #Null 
    StreamData\pfnCallback = @StreamFileIn_Callback() 
    SendMessage_(GadgetID(gadget), #EM_STREAMIN, Mode, @StreamData) 
    CloseFile(FileID) 
  EndIf 
EndProcedure 
  
Procedure FileStreamOut(FileID.l, File.s, gadget.l, Mode.l) 
  Protected File 
  Protected FileID 
  Protected gadget 
  Protected StreamData.EDITSTREAM 
  
  If Mode <> #SF_RTF : Mode = #SF_TEXT : EndIf 
  
  If CreateFile(FileID, File) 
    StreamData\dwCookie = UseFile(FileID) 
    StreamData\dwError = #Null 
    StreamData\pfnCallback = @StreamFileOut_Callback() 
    SendMessage_(GadgetID(gadget), #EM_STREAMOUT, Mode, @StreamData) 
    CloseFile(FileID) 
  EndIf 
EndProcedure 


If OpenWindow(#Window_0, 0, 0, 400, 400, #PB_Window_SystemMenu | #PB_Window_WindowCentered | #PB_Window_SizeGadget | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget |  #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "Editeur de texte",0) 
  If CreateMenu(#Menu, WindowID(#Window_0)) 
    MenuTitle("Fichiers") 
    MenuItem(#M_Ouvrir, "Ouvrir") 
    MenuItem(#M_sauvegarder, "sauvegarder") 
  EndIf 
  
  If CreateGadgetList(WindowID(#Window_0)) 
    EditorGadget(#Editeur, 0, 0, 600, 545, "Quitter") 
  EndIf 
EndIf 

Repeat 
  Select WaitWindowEvent() 
    Case #PB_EventMenu 
      Select EventMenuID() 
        Case #M_Ouvrir 
          Fichier$ = OpenFileRequester("Ouvrir un fichier","C:\","Fichiers texte (*.txt)|*.txt",0) 
          If Fichier$ 
            FileStreamIn(0, Fichier$, #Editeur, #SF_TEXT) 
          EndIf 
          
        Case #M_Sauvegarder 
          Fichier$ = SaveFileRequester("Sauver un fichier","C:\","Fichiers texte (*.txt)|*.txt",0) 
          
          If Fichier$ <> "" 
            FileStreamOut(0, Fichier$ + ".txt", #Editeur, #SF_TEXT) 
          EndIf 
          
      EndSelect 
      
    Case #PB_EventCloseWindow : quit = 1 
  EndSelect 
Until quit = 1 


merci de me retourné tout cela amélioré :roll:

sur ce , je vous souhaite une bonne , tre bonne programation[/code][/quote]

Publié : jeu. 24/nov./2005 22:51
par Backup
merci de me retourné tout cela amélioré
j'allucine ! 8O

pour ma part je ne test pas un code , si il n'y a pas un minimum d'explications, sur ce qu'il est sensé faire !

l'histoire nous a deja offert une mauvaise surprise !............

Publié : jeu. 24/nov./2005 22:55
par maitre we
tu croi quoi , quil est piégé mon code


sa fait 1semaine que jai commencé la programmation ... tu sais , je nen sui pas encor au stade de création des virus :lol:

Publié : ven. 25/nov./2005 7:56
par Chris
merci de me retourné tout cela amélioré
Tu veux ça pour quand, et combien tu payes ? :lol:

Re: petit programme

Publié : ven. 25/nov./2005 7:58
par julien
maitre we a écrit : merci de me retourné tout cela amélioré
A vos ordres chef ! Un café aussi ? :!: :!:

Publié : ven. 25/nov./2005 7:58
par maitre we
Je te donnerai un twix :D

*Et pour quand <===> Quand tu veu ... 1semaine , trois mois...Sa m'est égale

Publié : ven. 25/nov./2005 8:04
par Chris
Dobro a écrit :
merci de me retourné tout cela amélioré
j'allucine ! 8O

pour ma part je ne test pas un code , si il n'y a pas un minimum d'explications, sur ce qu'il est sensé faire !

l'histoire nous a deja offert une mauvaise surprise !............
Non, Dobro, tu ne risque rien.

C'est des copier/coller de codes qui sont déjà sur le forum.

Je reconnais le deuxième, je crois même que c'est moi qui l'ai posté pour je ne sais plus qui :lol:

Gonflé le grand-maître, quand même :lol:

Publié : ven. 25/nov./2005 8:08
par maitre we
Ben je programme avec ce que je connai (j'ai que 14ans) . Je ne suis pas tre tre doué !

Sur ce , je vous souhaite une bonne journée (je vais au bahu) !

Publié : ven. 25/nov./2005 8:12
par Chris
C'est ça!
Bonne journée :lol:

Oh y m'plait bien celui là! Y m' fait rire :lol:

(Ca va peut-être pas durer, par contre. :roll: )

Publié : ven. 25/nov./2005 8:12
par maitre we
je te suis pas trop

Publié : ven. 25/nov./2005 12:02
par Mindphazer
Ce qui est rigolo, c'est que autant tes posts sont bourrés de fautes (vive la génération SMS !!!), autant les commentaires de "ton" code n'en ont -presque- pas.......

Publié : ven. 25/nov./2005 12:32
par Backup
Ben je programme avec ce que je connai (j'ai que 14ans)
et c'est tout a ton honneur :D , mais lorsqu'on utilise un code sans changer
une ligne , la moindre des choses est de le marquer dans le code sous forme de petits remerciements ou autres.. :D
voila! voila!

Ce qui est rigolo, c'est que autant tes posts sont bourrés de fautes (vive la génération SMS !!!), autant les commentaires de "ton" code n'en ont -presque- pas.......
je pense que la Reponse de Chris repond a ta reflexion ! :D
Chris a écrit : Je reconnais le deuxième, je crois même que c'est moi qui l'ai posté pour je ne sais plus qui

Publié : ven. 25/nov./2005 14:22
par maitre we
alors , merci à ceux qui ont créé les codes que j'ai repris

J'espère qu'il n'y a pas de faute(s) :lol:

Publié : ven. 25/nov./2005 14:29
par Mindphazer
Ben désolé pour toi, mon gars. Y'a encore des fautes. :roll:
"ceux qui ont créé"
"j'espère"

Publié : ven. 25/nov./2005 17:49
par Frenchy Pilou
Ah lala !
Il n'y en a pas un pour rattrapper l'autre :)
La seule faute qu'il y a, c'est l'accent manquant sur le à de "a ceux" :lol: