Un nouvel utilitaire: FileRequester - Maker

Programmation d'applications complexes
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Un nouvel utilitaire: FileRequester - Maker

Message par Chris »

Je vous donne le code de mon dernier petit utilitaire: Il s'appelle FileRequester - Maker.
C'est un prog pour créer des OpenFileRequester, ou SaveFileRequester. :)

Dans la zone "Type de boite":
Selectionnez "OpenFileRequester" ou "SaveFileRequester"


Dans la zone "Paramètres par défaut":

Entrez le titre de la boite
Entrez le chemin par défaut. (Ou seulement l'extension, si vous voulez)

Dans la zone "Fichiers et Extensions"

Champ "Fichiers" : entrez le fichier par défaut (Ex Fichier PureBasic)
Champ "Extensions" : Entrez les extensions séparées par des point-virgules. (Ex *.pb;*.pbi)
Cliquez sur "Ajouter".

Vous pouvez entrer autant de filtres que vous voulez

Dans la zone "Position":
Entrez la position, entre 0 et le nbre de filtres (Si vous laissez en blanc : 0)

Cliquez sur "Copier" pour copier dans le presse-papiers.

Fichier Principal

Code : Tout sélectionner

IncludeFile "FileReq_Proc.pb"

Procedure CallBack(hwnd,Msg,wParam,lParam)
  Resultat = #PB_ProcessPureBasicEvents
  Select Msg
    Case #WM_COMMAND
      Select lParam
        Case GadgetID(#Str_Extension)
          If wParam >>16&$FFFF = #EN_CHANGE
            ;Info\Filtre = GetGadgetText(#Str_Extension)
          EndIf
        Case GadgetID(#Str_Default_Folder)
          If wParam >>16&$FFFF = #EN_CHANGE
            Info\Defaut = GetGadgetText(#Str_Default_Folder)
          EndIf
        Case GadgetID(#Str_Title)
          If wParam >>16&$FFFF = #EN_CHANGE
            Info\Titre = GetGadgetText(#Str_Title)
          EndIf
        Case GadgetID(#Str_Position)
          If wParam >>16&$FFFF = #EN_CHANGE
            Info\Pos = Val(GetGadgetText(#Str_Position))
          EndIf
        Case GadgetID(#Str_Default_Ext)
          If wParam >>16&$FFFF = #EN_CHANGE
            Info\Ext = GetGadgetText(#Str_Default_Ext)
          EndIf
      EndSelect
  EndSelect
  ProcedureReturn Resultat 
EndProcedure 
  
Open_Window_0()

SetWindowCallback(@CallBack())

SetTimer_(WindowID(#Window_0),1,10,0)

If GetGadgetState(#Rad_Open) = 1
  flag = 1
ElseIf GetGadgetState(#Rad_Save) = 1
  flag = 2
EndIf
SetBoxType(flag)
SetGadgetItemText(#Resultat,0,T$,0)

Repeat
  Select WaitWindowEvent()
    Case #WM_Timer
      string$ = Chr(34)+Info\Titre+Chr(34)+","+Chr(34)+Info\Defaut+Info\Ext+Chr(34)+","+Chr(34)+Info\Filtre+Chr(34)+","+Str(Info\Pos)+")"
      SetGadgetItemText(#Resultat,0,Info\Type + string$,0)
      
    Case #PB_EventGadget
      Select EventGadgetID()
        
        Case #Btn_GetFolder
          Path$ = PeekS(SetDefaultFolder())
          Tmp$ = GetGadgetItemText(#Resultat,0,0)
          
        Case #Rad_Open
          SetBoxType(1)
          
        Case #Rad_Save
          SetBoxType(2)
          
        Case #Btn_Cancel
          quit = 1
          
        Case #Btn_Copy
          ClearClipboard()
          SetClipboardText(GetGadgetText(#Resultat))
          
        Case #Btn_Add
          Temp$ = Info\Filtre
          If Temp$ = ""
            Tmp$ = GetGadgetText(#Str_Default_File)+Chr(124)+GetGadgetText(#Str_Extension)
          Else
            Tmp$ = Chr(124)+GetGadgetText(#Str_Default_File)+Chr(124)+GetGadgetText(#Str_Extension)
          EndIf
          tmp2$ = Temp$ + Tmp$
          Info\Filtre = tmp2$
      EndSelect
    Case #PB_EventCloseWindow
      quit = 1
  EndSelect
Until quit = 1
End
Procedures (Nom du fichier :FileReq_Proc.pb)

Code : Tout sélectionner

Enumeration
  #Window_0
EndEnumeration

Enumeration
  #Btn_GetFolder
  #Btn_Add
  #Btn_Copy
  #Btn_Cancel

  #Str_Default_Folder
  #Str_Default_Ext
  #Str_Title
  #Str_Default_File
  #Str_Extension
  #Str_Position

  #Rad_Open
  #Rad_Save

  #Resultat

  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Text_5

  #Frame3D_0
  #Frame3D_1
  #Frame3D_2
  #Frame3D_3
  #Frame3D_4
EndEnumeration

Structure REQUESTER_INFO
  Type.s
  Ext.s
  Titre.s
  Defaut.s
  Filtre.s
  Pos.w
EndStructure

Global Info.REQUESTER_INFO, string$

Def$ = ""

Info\Type = Def$
Info\Ext = Def$
Info\Titre = Def$
Info\Defaut = Def$
Info\Filtre = Def$
Info\Pos = 0


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 520, 345,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "FileRequester - Maker")
    If CreateGadgetList(WindowID())
      ButtonGadget(#Btn_GetFolder, 430, 40, 25, 20, "...")
      ButtonGadget(#Btn_Add, 325, 175, 75, 20, "Ajouter")
      ButtonGadget(#Btn_Copy, 360, 320, 75, 20, "Copier")
      ButtonGadget(#Btn_Cancel, 440, 320, 75, 20, "Quitter")

      StringGadget(#Str_Default_Folder, 150, 40, 280, 20, "")
      StringGadget(#Str_Default_Ext, 460, 40, 50, 20, "")
      StringGadget(#Str_Title, 150, 85, 360, 20, "")
      StringGadget(#Str_Default_File, 10, 150, 150, 20, "")
      StringGadget(#Str_Extension, 165, 150, 235, 20, "")
      StringGadget(#Str_Position, 415, 150, 95, 20, "")

      OptionGadget(#Rad_Open, 10, 40, 115, 20, "OpenFileRequester")
      OptionGadget(#Rad_Save, 10, 85, 115, 20, "SaveFileRequester")
      SetGadgetState(#Rad_Open,1)

      EditorGadget(#Resultat, 10, 240, 500, 65)

      TextGadget(#Text_0, 150, 25, 250, 15, "Dossier par défaut")
      TextGadget(#Text_1, 460, 25, 250, 15, "Extension")
      TextGadget(#Text_2, 150, 70, 250, 15, "Titre de la boîte")
      TextGadget(#Text_3, 10, 225, 495, 15, "Resultat")
      TextGadget(#Text_4, 10, 135, 150, 15, "Fichiers")
      TextGadget(#Text_5, 165, 135, 235, 15, "Extensions")

      Frame3DGadget(#Frame3D_0, 5, 5, 125, 105, "Type de boite")
      Frame3DGadget(#Frame3D_1, 135, 5, 380, 105, "Paramètres par défaut")
      Frame3DGadget(#Frame3D_2, 5, 115, 400, 85, "Fichiers et Extensions")
      Frame3DGadget(#Frame3D_3, 5, 205, 510, 105, "Prévisualisation")
      Frame3DGadget(#Frame3D_4, 410, 115, 105, 85, "Position")
    EndIf
  EndIf
EndProcedure

Procedure SetBoxType(flag)
  Global T$
  If flag = 1
    T$ = "OpenFileRequester("
  ElseIf flag = 2
    T$ = "SaveFileRequester("
  EndIf
  Info\Type = T$
EndProcedure

Procedure SetDefaultFolder()
  Global Ch$
  Chemin$ = PathRequester("Selection du dossier", "")
  If Chemin$ = ""
    Ch$ = Chr(34)+Chr(34)
  Else
    Ch$ = Chemin$
  EndIf
  SetGadgetText(#Str_Default_Folder,Ch$)
  Info\Defaut = Ch$
EndProcedure
Dites moi ce que vous en pensez. :wink:

Chris :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

bof, il faudrait une liste des filtres ajoutés afin de pouvoir les modifier et les supprimer.

Nan, c'est chouette :D même si je ne l'utiliserai pas (pas besoin car je connait la fonction par coeur)
Mais je pense que tu devrais rajouté l'idée que j'ai donné au début du message. ça doit pas être sorcier à faire :wink:
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)]
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Il plante à la ligne Path$ = PeekS(SetDefaultFolder()) : buffer not avaible.
sinon, c'est sympa mais fait un boutton clear ou nouveau aussi
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Message par Patrick88 »

hmmm, curieux , transmission de pensée ou vaudou ? hem, passons

il serait interessant / agréable / utile ( rayer mention inutile ) de créer une sorte d'assistant - un peu comme on trouves dans les soft "pro"

mais rapporté à pb, ce serait un truc qui ferait des applis "types" rapidos ce que fait l'éditeur de fenêtre de pb, mais en plus approfondi...

jeux -> choix du scrolling , nombre de sprite, choix des sprites, inclure des sons, de la musique....
appli -> partir du fichier génerer par l'éditeur de fenêtre, créer la boucle d'évenement avec des appels à des procedures pour les clics ( prévoir tout les évenements )
.... etc

"facilitage de programmature" pour le(s) débutant(s)

vous me suivez ...

ugh
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Et si en plus ça pourrait faire le café :mrgreen:
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Je préfererai le petit déjeuner mais c'est une question de gout :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Pour le problème du plantage d'Oliv, c'est de ma faute

Il faut supprimer Path$ = PeekS(SetDefaultFolder()), et mettre SetDefaultFolder() à la place.

J'étais parti sur un autre systeme qui ne passait pas par une structure, et j'ai oublié de virer la commande.

Pour le café, il le fait aussi!!

Regarde derrière, il y a une prise :roll:

Chris :)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Pour le café, il le fait aussi!!
J'achète :D
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Nouvelle version: Si vous voulez tester :roll:

- J'ai ajouté un combo qui permet de selectionner les filtres qui ont été saisis. Quand on selectionne un filtre, il est mis en surbrillance dans la case de prévisualisation.
Une fois sélectionné, on peut supprimer le filtre en cliquant sur "Eff. Selection".

- J'ai ajouté un bouton pour effacer toutes les zones de saisie.
- J'ai modifié la case de prévisualisation pour qu'elle soit non modifiable, et multiligne.

Le code: Le programme principal

Code : Tout sélectionner

IncludeFile "FileReq_Proc02.pb"

hwnd = Open_Window_0()

SetWindowCallback(@WinCallback())

;- Etat des Radio-Boutons
If GetGadgetState(#Rad_Open) = 1
  flag = 1
ElseIf GetGadgetState(#Rad_Save) = 1
  flag = 2
EndIf
SetType(flag)
DisplayResult(Filter$)

;- Boucle principale
Repeat
  Select WaitWindowEvent()

    ;- Evenements des menus
    Case #PB_Event_Menu
      Select EventMenuID()
        Case #M_Quit
          quit = 1

        Case #M_Aide


        Case #M_CgSoft
          RunProgram("http://www.cgsoftwares.com")

        Case #M_JaPBe
          RunProgram("http://caosandkin.bei.t-online.de/purebasic/jaPBe/")

        Case #M_PureBasic
          RunProgram("http://www.purebasic.com/french/index.php3")

        Case #M_About
          Open_Win_About()

      EndSelect

      ;- Evenements des Gadgets
    Case #PB_EventGadget
      Select EventGadgetID()
        Case #A_Hyperlink_1
          RunProgram("http://www.cgsoftwares.com")

        Case #Btn_GetFolder
          SetGadgetText(#Str_Default_Folder, PathRequester("Dossier par défaut",""))

        Case #Rad_Open
          SetType(1)
          DisplayResult(Filter$)

        Case #Rad_Save
          SetType(2)
          DisplayResult(Filter$)

        Case #Btn_Cancel
          quit = 1

        Case #Btn_Copy
          ClearClipboard()
          SetClipboardText(GetGadgetText(#Resultat))

        Case #Btn_EraseSel
          DeleteFilter()

        Case #Btn_EraseAll
          EraseAll()

        Case #Btn_Add
          AddFilter()
          
      EndSelect

      ;- Fermeture des fenêtres
    Case #PB_EventCloseWindow
      Select EventWindowID()

        Case #Win_About
          UseWindow(#Window_0)
          CloseWindow(#Win_About)

        Case #Window_0
          quit = 1

      EndSelect
  EndSelect
Until quit = 1
End
Les procédures

Code : Tout sélectionner

;XIncludeFile "FileReq_Proc02.pb.declare"

Declare AddFilter()
Declare Selection()
Declare DisplayResult(StringFilters.s)
Declare WinCallback(WindowID, Message, wParam, lParam)
Declare SetType(flag.b)
Declare Open_Win_About()
Declare Open_Window_0()
Declare DeleteFilter()
Declare EraseAll()

;- Constantes Fenêtres
Enumeration
  #Window_0
  #Win_About
EndEnumeration

;- Constantes Gadgets
Enumeration
  ; Constantes gadgets de la fenêtre principale
  #Btn_GetFolder
  #Btn_Add
  #Btn_Copy
  #Btn_Cancel
  #Btn_EraseSel
  #Btn_EraseAll
  #Str_Default_Folder
  #Str_Default_Ext
  #Str_Title
  #Str_Default_File
  #Str_Extension
  #Str_Position
  #Rad_Open
  #Rad_Save
  #Resultat
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Text_5
  #Frame3D_0
  #Frame3D_1
  #Frame3D_2
  #Frame3D_3
  #Frame3D_4
  ; Constantes  gadgets de la boite "A Propos"
  #A_Text_1
  #A_Text_2
  #A_Text_3
  #A_Text_4
  #A_Text_5
  #A_Text_6
  #A_Text_7
  #A_Frame3D_1
  #A_Frame3D_2
  #A_Frame3D_4
  #A_Hyperlink_1
EndEnumeration

;- Constantes Menus
Enumeration
  #MenuBar_17
EndEnumeration

;- Constantes Sous-Menus
Enumeration
  #M_Quit
  #M_Aide
  #M_CgSoft
  #M_JaPBe
  #M_About
  #M_PureBasic
EndEnumeration

;- Structures
Structure REQUESTER_INFO
  Type.s        ; Type de requester : Save ou Open    : 1 valeur
  Titre.s       ; Titre du requester                  : 1 valeur
  Dossier.s     ; Dossier d'ouverture par défaut      : 1 valeur
  Filtre.s      ; Filtre de recherche                 : Valeurs multiples : Lié à la liste
  Pos.w         ; Position                            : 1 valeur
  LenString.l   ; Longueur de la chaine
EndStructure

NewList Req.REQUESTER_INFO()

;- Initialisations
Global Info.REQUESTER_INFO, string$, FlagChange, hStr, Filter$
Global Find.FINDTEXT

Def$ = ""

Info\Type = Def$
Info\Titre = Def$
Info\Dossier = Def$
Info\Filtre = Def$
Info\Pos = 0

FontID1 = LoadFont(1, "Comic Sans MS", 11, #PB_Font_Bold | #PB_Font_Italic)
FontID2 = LoadFont(2, "Arial", 10, #PB_Font_Bold | #PB_Font_Underline)

;- Ouverture de la fenêtre principale
Procedure Open_Window_0()
  If OpenWindow(#Window_0, 325, 183, 520, 330,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "FileRequester - Maker")
    hnd = WindowID(#Window_0)
    If CreateMenu(#MenuBar_17, hnd)
      MenuTitle("Options")
      MenuItem(#M_Quit, "Quitter")
      MenuTitle("Aide")
      MenuItem(#M_Aide, "Aide")
      OpenSubMenu("Sites Web")
      MenuItem(#M_CgSoft, "CGSoftwares")
      MenuItem(#M_JaPBe, "jaPBe")
      MenuItem(#M_PureBasic, "PureBasic")
      CloseSubMenu()
      MenuBar()
      MenuItem(#M_About, "A Propos")
    EndIf

    If CreateGadgetList(hnd)
      ButtonGadget(#Btn_GetFolder, 390, 80, 25, 20, "...")
      ButtonGadget(#Btn_Add, 395, 145, 50, 20, "Ajouter")
      ButtonGadget(#Btn_Copy, 360, 285, 75, 20, "Copier")
      ButtonGadget(#Btn_Cancel, 440, 285, 75, 20, "Quitter")
      ButtonGadget(#Btn_EraseSel,5,285,75,20,"Eff. Selection")
      ButtonGadget(#Btn_EraseAll, 85,285,75,20,"Tout Effacer")
      StringGadget(#Str_Default_Folder, 140, 80, 250, 20, "")
      StringGadget(#Str_Default_Ext, 420, 80, 90, 20, "")
      StringGadget(#Str_Title, 140, 40, 370, 20, "")
      StringGadget(#Str_Default_File, 10, 145, 115, 20, "")
      ComboBoxGadget(#Str_Extension,130,145,265,200,#PB_ComboBox_Editable)
      StringGadget(#Str_Position, 460, 145, 50, 20, "")
      OptionGadget(#Rad_Open, 10, 40, 115, 20, "OpenFileRequester")
      OptionGadget(#Rad_Save, 10, 70, 115, 20, "SaveFileRequester")
      SetGadgetState(#Rad_Open,1)
      hStr = EditorGadget(#Resultat, 10, 210, 500, 65)
      TextGadget(#Text_0, 145, 65, 100, 15, "Dossier par défaut")
      TextGadget(#Text_1, 420, 65, 50, 15, "Extension")
      TextGadget(#Text_2, 145, 25, 80, 15, "Titre de la boîte")
      TextGadget(#Text_3, 10, 195, 50, 15, "Resultat")
      TextGadget(#Text_4, 10, 130, 90, 15, "Type de fichier")
      TextGadget(#Text_5, 130, 130, 120, 15, "Extensions Recherchées")
      Frame3DGadget(#Frame3D_0, 5, 5, 125, 100, "Type de boite")
      Frame3DGadget(#Frame3D_1, 135, 5, 380, 100, "Paramètres par défaut")
      Frame3DGadget(#Frame3D_2, 5, 110, 445, 60, "Fichiers et Extensions")
      Frame3DGadget(#Frame3D_3, 5, 175, 510, 105, "Prévisualisation")
      Frame3DGadget(#Frame3D_4, 455, 110, 60, 60, "Position")
    EndIf
    SendMessage_(hStr, #EM_SETTARGETDEVICE, #NULL, 0)
    SendMessage_(hStr, #EM_SETOPTIONS, #ECOOP_OR, #ECO_READONLY)
  EndIf
  ProcedureReturn hnd
EndProcedure

;- Ouverture de la fenêtre "A Propos"
Procedure Open_Win_About()
  If OpenWindow(#Win_About, 359, 261, 300, 255,  #PB_Window_SystemMenu | #PB_Window_TitleBar| #PB_Window_WindowCentered , "FileRequester - Maker", hwnd)
    hAbout = WindowID(#Win_About)
    If CreateGadgetList(hAbout)
      TextGadget(#A_Text_1, 20, 15, 260, 20, "FileRequester - Maker", #PB_Text_Center)
      SetGadgetFont(#A_Text_1, FontID1)
      TextGadget(#A_Text_2, 10, 50, 280, 20, "Cet Add-On pour l'éditeur de code Pure Basic est", #PB_Text_Center)
      TextGadget(#A_Text_3, 10, 70, 280, 20, "gratuit. Vous pouvez l'utiliser à votre convenance", #PB_Text_Center)
      TextGadget(#A_Text_4, 10, 90, 280, 20, "tant que vous respectez les règles du FreeWare.", #PB_Text_Center)
      TextGadget(#A_Text_5, 15, 150, 270, 20, "Copyright (c) CG-Softwares 2004")
      TextGadget(#A_Text_6, 15, 195, 270, 20, "Codé avec PureBasic v3.81 et jaPBe 1.3 10.6 ")
      TextGadget(#A_Text_7, 15, 220, 270, 20, "Compatible Win 98 / XP")
      Frame3DGadget(#A_Frame3D_1, 5, 140, 290, 110, "", #PB_Frame3D_Double)
      Frame3DGadget(#A_Frame3D_2, 5, 45, 290, 70, "", #PB_Frame3D_Double)
      Frame3DGadget(#A_Frame3D_4, 5, 5, 290, 35, "", #PB_Frame3D_Double)
      HyperLinkGadget(#A_Hyperlink_1, 15, 170, 270, 20, "http://www.cgsoftwares.com", RGB(0, 0, 255))
      SetGadgetFont(#A_Hyperlink_1, FontID2)
    EndIf
  EndIf
EndProcedure

;- Définition du type de boite
Procedure SetType(flag.b)
  DefType.s BoxType

  If flag = 1
    BoxType = "OpenFileRequester("
  ElseIf flag = 2
    BoxType = "SaveFileRequester("
  EndIf
  Info\Type = BoxType
EndProcedure

;- Calback
Procedure WinCallback(WindowID, Message, wParam, lParam)
  Resultat = #PB_ProcessPureBasicEvents
  Select Message
      
    Case #WM_COMMAND
      If wParam >>16&$FFFF = #EN_CHANGE
        Select lParam

          ; Titre
          Case GadgetID(#Str_Title)
            Info\Titre = GetGadgetText(#Str_Title)
            DisplayResult(Filter$)

          ; Dossier par défaut
          Case GadgetID(#Str_Default_Folder)
            DossierDefaut.s = GetGadgetText(#Str_Default_Folder)+GetGadgetText(#Str_Default_Ext)
            Info\Dossier = DossierDefaut
            DisplayResult(Filter$)
          Case GadgetID(#Str_Default_Ext)
            DossierDefaut.s = GetGadgetText(#Str_Default_Folder)+GetGadgetText(#Str_Default_Ext)
            Info\Dossier = DossierDefaut
            DisplayResult(Filter$)

          ; Position
          Case GadgetID(#Str_Position)
            Info\Pos = Val(GetGadgetText(#Str_Position))
            DisplayResult(Filter$)

          ; Fichier par défaut
          Case GadgetID(#Str_Extension)
            FlagChange = 1

          Case GadgetID(#Str_Default_File)
            FlagChange = 1
        EndSelect
      EndIf
      If wParam >>16&$FFFF = #CBN_SELCHANGE
        Select lParam
          Case GadgetID(#Str_Extension)
            Position = -1
            SelectElement(Req(),GetGadgetState(#Str_Extension))
            
            Tmp$ = GetGadgetText(#Resultat)
            Texte$ = GetGadgetItemText(#Str_Extension,GetGadgetState(#Str_Extension),0)

            Position = FindString(Tmp$,Texte$,0)
            
            Debut = Position -1
            Fin = Position + (Req()\LenString -1)
            
            If Mid(Tmp$,Position-1,1) = "|"
              Debut -1
            EndIf
            If Mid(Tmp$,Fin,1) = Chr(34)
              Fin -1
            EndIf
            
            SelText(Debut,Fin)
            
        EndSelect
      EndIf

  EndSelect
  ProcedureReturn Resultat
EndProcedure

;- Affichage du résultat
Procedure DisplayResult(StringFilters.s)
  SetGadgetText(#Resultat,"")
  G.s = Chr(34) : V.s = Chr(44)
  SetGadgetText(#Resultat,Info\Type+G+Info\Titre+G+V+G+Info\Dossier+G+V+G+StringFilters+G+V+Str(Info\Pos)+")")
EndProcedure

;-Recherche de la selection
Procedure SelText(Deb.l,Fin.l)
  Sel.CHARRANGE
  Sel\cpMin = Deb
  Sel\cpMax = Fin
  
  SetFocus_(hStr)
  SendMessage_(hStr, #EM_EXSETSEL, 0, @Sel)
  
EndProcedure

;- Ajout de filtres
Procedure AddFilter()
  Global PosTmp

  If FlagChange = 1
    If CountList(Req()) = 0
      StrFiltres.s = GetGadgetText(#Str_Default_File)+"|"+GetGadgetText(#Str_Extension)
    Else
      StrFiltres.s = "|"+GetGadgetText(#Str_Default_File)+"|"+GetGadgetText(#Str_Extension)
    EndIf

    AddElement(Req())
    Req()\Filtre = StrFiltres
    Req()\LenString = Len(StrFiltres)

    If Left(StrFiltres,1) = "|"
      TmpFiltre.s = Right(StrFiltres,Len(StrFiltres)-1)
    Else
      TmpFiltre.s = StrFiltres
    EndIf
    
    AddGadgetItem(#Str_Extension,-1,TmpFiltre)
    FlagChange = 0
  EndIf

  ForEach Req()
    temp$ = Req()\Filtre
  Next
  
  Filter$ + temp$
  DisplayResult(Filter$)
EndProcedure

;- Suppression de filtres
Procedure DeleteFilter()
  Filter$ = ""
  
  If CountList(Req()) > 0
    SelectElement(Req(),GetGadgetState(#Str_Extension))
    DeleteElement(Req()) : RemoveGadgetItem(#Str_Extension,GetGadgetState(#Str_Extension))
    SetGadgetText(#Str_Extension,"")
    SetGadgetText(#Str_Default_File,"")
    

    ForEach Req()
      temp$ = Req()\Filtre
      Filter$ + temp$
    Next
    If Left(Filter$,1) = "|"
      Filter$ = Right(Filter$,Len(Filter$)-1)
    EndIf
    
    DisplayResult(Filter$)
  ElseIf CountList(Req()) <= 0
    SetGadgetText(#Str_Extension,"")
    SetGadgetText(#Str_Default_File,"")
    ClearList(Req())
    ClearGadgetItemList(#Str_Extension)
  EndIf
EndProcedure

;- Effacement des données
Procedure EraseAll()
  Def$ = ""
  Info\Titre = Def$
  Info\Dossier = Def$
  Info\Filtre = Def$
  Info\Pos = 0
  
  Filter$ = ""
  string$ = ""
  
  ClearList(Req())
  ClearGadgetItemList(#Str_Extension)
  SetGadgetText(#Str_Title,"")
  SetGadgetText(#Str_Default_Folder,"")
  SetGadgetText(#Str_Extension,"")
  SetGadgetText(#Str_Default_Ext,"")
  SetGadgetText(#Str_Default_File,"")
  SetGadgetText(#Str_Position,"")
  
  DisplayResult("")
EndProcedure
Chris :)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

On ne peut pas modifier la saisie des extensions :(
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

moi il reconnait pas ta procédure SelText :?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Rajoute ceci en début du fichier concerné:

Declare SelText(Deb.l,Fin.l)

C'est vrai que s'il n'y avait qu'un seul fichier ce serait plus simple!
Aranoth
Messages : 293
Inscription : sam. 24/janv./2004 12:00
Localisation : Toulouse (31)
Contact :

Message par Aranoth »

hum c'est comme en C et C++...il faut spécifier les fonctions avant de les appeller...remarque par rapport à DarkBASIC ca evite de faire un tour dans le vide
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

C'est vrai que s'il n'y avait qu'un seul fichier ce serait plus simple!
Moi je préfère avec deux fichiers.

Chacun ses goûts :lol:

Et encore, je ne vous ai pas mis le fichier de déclarations :lol:
C'est pour ça qu'il en manquait une. :oops:

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

Message par nico »

A quand une commande Tester!
Répondre