Lib OpenDialog

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Lib OpenDialog

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

Message 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 ?
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)]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

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

:)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

:oops: Je viens de mettre à jour la lib, y avait un p'tit problème!
Dernière modification par nico le ven. 22/oct./2004 11:35, modifié 1 fois.
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

salut nico
où telecharger ta librairy ?
Jbernard13
Heis Spiter
Messages : 1092
Inscription : mer. 28/janv./2004 16:22
Localisation : 76
Contact :

Message par Heis Spiter »

Heis Spiter, webmaster du site http://www.heisspiter.net
Développeur principal et administrateur du projet Bird Chat
Parti courir au bonheur du dév. public et GPL :D
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Je viens de le mettre à jour, donc tu peux le re-télécharger.
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

merci nico

Ta librairy est extra
Jbernard13
Répondre