Page 1 sur 1

Lib OpenDialog

Publié : mar. 21/sept./2004 18:12
par nico
J'ai fait une petite Lib qui simule Une boite de dialogue qui n'est autre qu'une fenêtre créée par Pure, donc toutes les commandes habituelles peuvent être utilisées, mais pour fermer cette fenêtre il ne faudra pas utiliser CloseWindow() mais CloseDialog().

Il n'y a que deux commandes:

-Dialog=OpenDialog(#Fenetre,LargeurInterne, HauteurInterne,Titre$,Fenêtre_Mère,Option)

Comme vous pouvez le remarquer, il n'y a pas de position x et y puisque la pseudo Boite de Dialogue est centrée soit par rapport à la fenêtre mère, soit par rapport au Bureau, par la variable Option, respectivement 0 (Fenêtre Mère) ou 1 (Bureau).

La valeur de retour est différent de 0 en cas de réussite où bien le nouvel identifiant de la boite de dialogue si vous utilisez #Pb_Any

-CloseDialog(#Fenêtre)
Détruit la boite de dialogue, rien ne vous empêche de la cacher


Un petit exemple pour essayer:

Code : Tout sélectionner

  Procedure DIALOG()
    Shared Dialog
    Dialog=OpenDialog(#PB_Any,200,100,"Simulation Boite de Dialogue",1,0) 
    If CreateGadgetList(WindowID(Dialog))
      StringGadget(2,10, 10,180,20,"Normal StringGadget...")  
      ButtonGadget(3,10,60,180,20,"OK") 
    EndIf
  EndProcedure

  OpenWindow(1,200,200,400,400,#PB_Window_SystemMenu,"Fenêtre principale")
  If CreateGadgetList(WindowID(1))
    ButtonGadget(0,10,10,180,20,"Dialog")  
    EditorGadget (1,10,40,380,380,#PB_Container_Raised)
  EndIf 
  
  Repeat 
    EventID.l=WaitWindowEvent()
    Select EventID 
      Case #PB_EventGadget
        Select EventGadgetID()
          Case 0
            DIALOG()
            
          Case 3
            texte.s=GetGadgetText(2)
            SetGadgetText(1,texte)
            CloseDialog(Dialog)
        EndSelect
        
      Case #WM_CLOSE
        Quit=1
    EndSelect 
  Until Quit=1
Le lien pour telecharger la librairie

Je n'ai fait des essais que sur Window XP SP1

Laissez moi vos impressions :)

Publié : mar. 21/sept./2004 21:51
par Le Soldat Inconnu
La valeur de retour est différent de 0 en cas de réussite où bien le nouvel identifiant de la boite de dialogue si vous utilisez #Pb_Any
j'ai pas vu de ProcedureReturn dans la procedure Dialog, un oubli ?

Publié : mer. 22/sept./2004 7:03
par nico
Je parlais des deux fonctions OpenDialog et CloseDialog, la procédure n'a rien à voir.

La fonction OpenDialog crée une nouvelle fênetre s'assurant que celle-ci restera au premier plan, et que la fenêtre qui l'appelle ne puisse plus recevoir d'évènements tant que la fenêtre au premier plan ne soit pas fermer.

ça évite que La fenêtre de dialogue sensée recevoir des informations de l'utilisateur ne perdent le Focus où disparaisse derrière la fenêtre principale tel que c'est le cas malheureusement et c'est bien dommage que Pure ne nous offre pas la création de véritable boites de dialogue.

En attendant, cette petite lib pour pallier au problème!

:)

Publié : mer. 22/sept./2004 11:43
par nico
Un autre petit exemple, j'aimerais bien savoir si ça fonctionne bien sur 95, 98 et NT.
(Pensez à télécharger la Lib au dessus)

Code : Tout sélectionner

  OpenWindow(1,200,200,400,400,#PB_Window_SystemMenu,"Fenêtre principale")
  If CreateGadgetList(WindowID(1))
    StringGadget(0,100,20,180,20,"")
  EndIf 
  ;-------------------------------------------------------------------- 
  Dialog=OpenDialog(#PB_Any,280,100,"Boite de Dialogue",1,0)
  ;Je crée une liste de gadget comme pour une fenêtre normal
  If CreateGadgetList(WindowID(Dialog))
    TextGadget(2, 40, 10,180,20,"Entrez le mot de passe pour continuer",#PB_Text_Center) 
    StringGadget(3,40, 40,180,20,"",#PB_String_Password)  
    ButtonGadget(4,80,70,100,20,"OK") 
  EndIf
  ;--------------------------------------------------------------------  
  Repeat 
    EventID.l=WaitWindowEvent()
    Select EventID 
      Case #PB_EventGadget
        Select EventGadgetID()
          Case 4
            texte.s=GetGadgetText(3)
            If texte<>""
              SetGadgetText(0,"Mot de passe correct")
            EndIf
            CloseDialog(Dialog)
        EndSelect
        
      Case #WM_CLOSE
        Quit=1
    EndSelect 
  Until Quit=1

Publié : mer. 22/sept./2004 17:55
par nico
:oops: Je viens de mettre à jour la lib, y avait un p'tit problème!

Publié : dim. 17/oct./2004 7:43
par jbernard13
salut nico
où telecharger ta librairy ?

Publié : dim. 17/oct./2004 9:39
par Heis Spiter

Publié : dim. 17/oct./2004 12:16
par nico
Je viens de le mettre à jour, donc tu peux le re-télécharger.

Publié : dim. 17/oct./2004 13:50
par jbernard13
merci nico

Ta librairy est extra