Page 1 sur 1

Deux trois trucs ...

Publié : sam. 07/juin/2008 12:25
par eldur
voila j'ai plusieurs question :
1)d'abord j'aimerais associer un raccourci clavier à un bouton (buttongadget) et avec AddKeyboardShortcut(#Fenetre, #PB_Shortcut_Escape, #Valider), ça ne marche pas ...
2)J'aimerais aussi savoir comment associer deux chaînes de caractère pour qu'il y en ai une puis un passage à la ligne puis une deuxième
3)Enfin, je suis en train de faire un système de précédent/suivant mais le problème c'est que quand je fais deux fois précédent, c'est comme si je faisais précédent puis suivant donc si quelqu'un a une idée pour le faire marcher

Publié : sam. 07/juin/2008 13:28
par Guimauve
Faudrait que tu montre un exemple de code pour que l'on puisse voir ce qui ne va pas.

Pour ta question #1, ta boucle de gestion des évènements doit ressembler à quelque chose du genre :

Code : Tout sélectionner

Repeat
  
  EventID = WaitWindowEvent()
  
  Select EventID
      
    Case #PB_Event_Menu
      
      Select EventMenu()
          
        Case #Valider
           ; Mettre ici l'instruction à lancer  

      EndSelect
      
    Case #PB_Event_Gadget
      
      Select EventGadget()
          
        Case #Valider
          ; Mettre ici l'instruction à lancer

      EndSelect
      
  EndSelect
  
Until EventID = #PB_Event_CloseWindow
Le Case #Valider dans le Select EventMenu() est celui associé avec le raccourci clavier.
Le Case #Valider dans le Select EventGadget() est celui associé avec le clique de souris sur le bouton.

A+
Guimauve

Publié : sam. 07/juin/2008 13:37
par Chris
Les raccourcis clavier fonctionnent comme les menus, ils sont gérés par #pb_event_menu.

Dans le paramètre "event", tu peux mettre soit une valeur, (0, 1, 2, 3, etc...), soit la constante qui est associée à ton gadget. (#Bouton_Valid, par exemple).


Code : Tout sélectionner

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Btn_Valid
  #String_0
  #Btn_Cancel
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 342, 151, 151, 122, "Valider ?",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ButtonGadget(#Btn_Valid, 20, 45, 110, 30, "Oui", #PB_Button_Default)
      StringGadget(#String_0, 10, 10, 135, 25, "")
      ButtonGadget(#Btn_Cancel, 20, 80, 110, 30, "Non")
      
      AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, #Btn_Valid)
      AddKeyboardShortcut(#Window_0, #PB_Shortcut_Escape, #Btn_Cancel)
      
    EndIf
  EndIf
EndProcedure
Open_Window_0()


Repeat 
  
  Select WaitWindowEvent()
    Case #PB_Event_Menu
      Select EventMenu()
        Case #Btn_Valid
          SetGadgetText(#String_0, "Ok")
          
        Case #Btn_Cancel
          SetGadgetText(#String_0, "Ah bon !!!")
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Btn_Valid
          SetGadgetText(#String_0, "Ok")
          
        Case #Btn_Cancel
          SetGadgetText(#String_0, "Ah bon !!!")
      EndSelect
      
    Case #PB_Event_CloseWindow
      Quit = #True
      
  EndSelect
Until Quit
End

;
Pour associer deux chaines de caractères, tu utilises simplement le "+"

chaine1$ + chaine2$

Publié : sam. 07/juin/2008 15:15
par eldur
ok merci pour les raccourcis, par contre pour associer deux chaînes, je veux dire une chaîne, PUIS UN RETOUR A LA LIGNE, puis la chaîne suivante, et je sais pas comment encoder le retour à la ligne ...

Pour les précédents et suivants, voici mon code (je fais une sorte de navigateur web pour m'entraîner à coder en PB) :

Code : Tout sélectionner

Enumeration ;Gadget
#Onglet
#Editeur
#Couleur
#TexteCitation
#Citation
#TexteAuteur
#Auteur
#Effacer
#Valider
#Police
#Sauvegarder
#InternetRecherche
#Internet
#Historique
#Barre
EndEnumeration

Enumeration ;Menu
#Ouvrir
#Enregistrer
#EnregistrerSous
#Imprimer
#Quitter
#Precedent
#Suivant
#Couper
#Copier
#Coller
#Aide
EndEnumeration

Enumeration ;Toolbar
#TOuvrir
#TEnregistrer
#TImprimer
#TPrecedent
#TSuivant
#TCouper
#TCopier
#TColler
#TAide
EndEnumeration

If OpenWindow(0, 0, 0, 1300, 750, "Sebnet", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)And CreateGadgetList(WindowID(0))
If CreateMenu(0, WindowID(0))   
      MenuTitle("Fichier")
        MenuItem(#Ouvrir, "Ouvrir"   +Chr(9)+"Ctrl+O")
        MenuItem(#Enregistrer, "Enregistrer"   +Chr(9)+"Ctrl+S")
        MenuItem(#EnregistrerSous, "Enregistrer sous"+Chr(9)+"Ctrl+R")
        MenuItem(#Imprimer, "Imprimer" +Chr(9)+"Ctrl+P")
        MenuBar()
        MenuItem(#Quitter, "Fermer"  +Chr(9)+"Alt+F4")
      MenuTitle("Edition")
        MenuItem(#Precedent, "Precedent" +Chr(9)+"Ctrl+Z")
        MenuItem(#Suivant, "Suivant" +Chr(9)+"Ctrl+Y")
        MenuBar()
        MenuItem(#Couper, "Couper" +Chr(9)+"Ctrl+X")
        MenuItem(#Copier, "Copier" +Chr(9)+"Ctrl+C")
        MenuItem(#Coller, "Coller" +Chr(9)+"Ctrl+V")
      MenuTitle("Historique")
        MenuItem(#Historique, "Afficher l'historique" +Chr(9)+"Ctrl+H")
 EndIf
    

  
      
NewList historique.s()
StringGadget(#InternetRecherche, 200, 0, 950, 25, "http://google.com") 
ButtonGadget(#Valider, 1150, 0, 100, 25, "OK") 
AddKeyboardShortcut(0, #PB_Shortcut_Return, #Valider)
  URL$ = "http://www.google.com"
  WebGadget(#Internet, 0,  25, 1300, 730, URL$ )
  AddElement(historique())
  historique() = URL$
  nbre = 1
    Repeat
    Event = WaitWindowEvent()
    
    
    If event = #PB_Event_Gadget ;un gadget est il utilisé ?
    clicgadget = EventGadget() ;OUI, on identifie le gadget
    Else
    clicgadget = 0 ;NON, on renvoie 0
    EndIf 
    
    If clicgadget = #Valider
    URL$ = GetGadgetText(#InternetRecherche)
    SetGadgetText(#Internet, URL$)
    PreviousElement(historique())
    If URL$ = historique()
    Else
    AddElement(historique())
    historique() = URL$
    EndIf
    EndIf
    
    If clicgadget = #Internet
    If URL$ = historique()
    Else
    AddElement(historique())
    historique() = URL$
    EndIf
    text$ = GetGadgetText(#Internet)
    If text$ = URL$
    Else
    SetGadgetText(#InternetRecherche, text$)
    PreviousElement(historique())
    If text$ = historique()
    Else
    AddElement(historique())
    historique() = text$
    EndIf
    EndIf
    EndIf

    If Event = #PB_Event_Menu
    clicmenu = EventGadget()
    Else
    clicmenu = 0
    EndIf
    
    If clicmenu = #Valider
    URL$ = GetGadgetText(#InternetRecherche)
    SetGadgetText(#Internet, URL$)
    PreviousElement(historique())
    If URL$ = historique()
    Else
    AddElement(historique())
    historique() = URL$
    EndIf
    EndIf
    
    If clicmenu = #Precedent
    resultat = CountList(historique())
    SelectElement(historique(), resultat - 3)
    SetGadgetText(#Internet, historique())
    SetGadgetText(#InternetRecherche, historique())
    EndIf
    
    If clicmenu = #Historique
    ResizeGadget(#Internet, 200,  25, 1100, 730) 
    ResetList(historique())
    While NextElement(historique())
    TextHistorique$ = TextHistorique$ + historique()
    Wend
    TextGadget(#Historique, 0, 25, 199, 730, TextHistorique$)
    couleur = RGB(255, 255, 255)
    SetGadgetColor(#Historique, #PB_Gadget_BackColor, couleur)
    TextGadget(#Barre, 199, 25, 1, 730, "")
    SetGadgetColor(#Barre, #PB_Gadget_BackColor, 000000)
    EndIf

    
    If Event = #PB_Event_CloseWindow ; If the user has pressed on the close button
      Quit = 1
    EndIf
 
  Until Quit = 1
  EndIf


Publié : sam. 07/juin/2008 19:09
par gansta93
eldur a écrit :ok merci pour les raccourcis, par contre pour associer deux chaînes, je veux dire une chaîne, PUIS UN RETOUR A LA LIGNE, puis la chaîne suivante, et je sais pas comment encoder le retour à la ligne ...
Tu fais.

Code : Tout sélectionner

chaine1$+#crlf$+chaine2$

Publié : lun. 09/juin/2008 10:09
par brossden
Les petits exemples vont mieux que les grands discours :

Code : Tout sélectionner

MaChaine1.s = "Bonjour"
Machaine2.s = "A tous"
Rc.s = Chr(13)+Chr(10)

MaChaine3.s = Space(19) +MaChaine1 + Rc + Space(20)+Machaine2+Space(20)

MessageRequester("Exemple",MaChaine3)

Publié : lun. 09/juin/2008 11:59
par Backup
brossden a écrit :Les petits exemples vont mieux que les grands discours :

Code : Tout sélectionner

MaChaine1.s = "Bonjour"
Machaine2.s = "A tous"
Rc.s = Chr(13)+Chr(10)

MaChaine3.s = Space(19) +MaChaine1 + Rc + Space(20)+Machaine2+Space(20)

MessageRequester("Exemple",MaChaine3)
comme indiqué par gansta93

plus besoin de faire

Code : Tout sélectionner

Rc.s = Chr(13)+Chr(10)
mais simplement

Code : Tout sélectionner

Rc.s =#crlf$
:D
la constante existe maintenant :)

Publié : lun. 09/juin/2008 15:11
par eldur
ok merci beaucoup, quelqu'un a une idée pour le système de précédent / suivant

Publié : lun. 09/juin/2008 15:57
par Octavius
Une liste chaînée eldur :wink: