Listview INI par catégorie

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Listview INI par catégorie

#1

Message par Mickdu59 »

Salut :)

Voila j'ai récupèrer ce code sur Autoit En , il permet d'installer des logiciels si ils sont présents dans le dossier Software ,
mais voila il fonctionne uniquement si les logiciels sont présents dans le dossier Software .
Moi je voudrais afficher les resultats du ini dans les listviews meme si le logiciel et pas dans le dossier , si quelqu'un peux m'aider
Je vous remercie d'avance


Code du Au3 :

Code : Tout sélectionner


#include <GUIConstants.au3>
#include <GuiListView.au3>
#include <Array.au3>
#include <File.au3>
#include <MsgBoxConstants.au3>
#Include <Misc.au3>


Global $ListView7
Global $iniFile = @ScriptDir & ".\Config.ini"
Global $scriptDir = @ScriptDir

; Main GUI
$Form1 = GUICreate("Software Installer", 633, 451)

$Tab1 = GUICtrlCreateTab(16, 8, 601, 377)
$TabSheet1 = GUICtrlCreateTabItem("Audio/Video/Photo")
$ListView1 = GUICtrlCreateListView("Software Name|Description", 24, 40, 582, 334)
_GUICtrlListView_SetExtendedListViewStyle($ListView1, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_GRIDLINES))
GUICtrlSendMsg(-1, 0x101E, 0, 200)
GUICtrlSendMsg(-1, 0x101E, 1, 375)
$TabSheet2 = GUICtrlCreateTabItem("Computer Maintenance")
$ListView2 = GUICtrlCreateListView("Software Name|Description", 24, 40, 578, 334)
_GUICtrlListView_SetExtendedListViewStyle($ListView2, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_GRIDLINES))
GUICtrlSendMsg(-1, 0x101E, 0, 200)
GUICtrlSendMsg(-1, 0x101E, 1, 375)
$TabSheet3 = GUICtrlCreateTabItem("Internet")
$ListView3 = GUICtrlCreateListView("Software Name|Description", 24, 40, 578, 334)
_GUICtrlListView_SetExtendedListViewStyle($ListView3, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_GRIDLINES))
GUICtrlSendMsg(-1, 0x101E, 0, 200)
GUICtrlSendMsg(-1, 0x101E, 1, 375)
$TabSheet4 = GUICtrlCreateTabItem("Games")
$ListView4 = GUICtrlCreateListView("Software Name|Description", 24, 40, 578, 334)
_GUICtrlListView_SetExtendedListViewStyle($ListView4, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_GRIDLINES))
GUICtrlSendMsg(-1, 0x101E, 0, 200)
GUICtrlSendMsg(-1, 0x101E, 1, 375)
$TabSheet5 = GUICtrlCreateTabItem("Miscellaneous")
$ListView5 = GUICtrlCreateListView("Software Name|Description", 24, 40, 578, 334)
_GUICtrlListView_SetExtendedListViewStyle($ListView5, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_GRIDLINES))
GUICtrlSendMsg(-1, 0x101E, 0, 200)
GUICtrlSendMsg(-1, 0x101E, 1, 375)
$TabSheet6 = GUICtrlCreateTabItem("Productivity")
$ListView6 = GUICtrlCreateListView("Software Name|Description", 24, 40, 578, 334)
_GUICtrlListView_SetExtendedListViewStyle($ListView6, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES, $LVS_EX_GRIDLINES))
GUICtrlSendMsg(-1, 0x101E, 0, 200)
GUICtrlSendMsg(-1, 0x101E, 1, 375)
GUICtrlCreateTabItem("") ; This ends the tab item creation
$Button1 = GUICtrlCreateButton("Install Selected Software", 398, 395, 219, 25, 0)
$MenuItem1 = GUICtrlCreateMenu("File")
$MenuItem2 = GUICtrlCreateMenuItem("Unselect All", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenuItem("Exit", $MenuItem1)
$MenuItem4 = GUICtrlCreateMenu("Help")
$MenuItem5 = GUICtrlCreateMenuItem("Help Topics", $MenuItem4)
$MenuItem6 = GUICtrlCreateMenuItem("About", $MenuItem4)
_Populate()
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            _InstallSelectedSoftware()
        Case $MenuItem2
            _UnselectAll()
        Case $MenuItem3
            Exit
        Case $MenuItem5
            _HelpTopics()
        Case $MenuItem6
            _AboutProject()
    EndSwitch
WEnd

Func _Populate()
    ; Find all files in the Software folder and populate the tabs with the installers.
    $f = FileFindFirstFile("Software/*.*")
    Dim $array[1]
    $i = 0
    Do
        $s = FileFindNextFile($f)
        If Not @error Then
            $array[$i] = $s
            $i += 1
            ReDim $array[$i + 1]
        EndIf
    Until @error
   if $i = 0 Then Return 0
    ReDim $array[$i]

    For $i = 1 To UBound($array) Step 1
        $category = IniRead($iniFile, $array[$i - 1], "Category", "5")
        $desc = IniRead($iniFile, $array[$i - 1], "Desc", "")
        If $category = 1 Then
            GUICtrlCreateListViewItem($array[$i - 1] & "|" & $desc, $ListView1)
        ElseIf $category = 2 Then
            GUICtrlCreateListViewItem($array[$i - 1] & "|" & $desc, $ListView2)
        ElseIf $category = 3 Then
            GUICtrlCreateListViewItem($array[$i - 1] & "|" & $desc, $ListView3)
        ElseIf $category = 4 Then
            GUICtrlCreateListViewItem($array[$i - 1] & "|" & $desc, $ListView4)
        ElseIf $category = 6 Then
            GUICtrlCreateListViewItem($array[$i - 1] & "|" & $desc, $ListView6)
        Else
            GUICtrlCreateListViewItem($array[$i - 1] & "|" & $desc, $ListView5)
        EndIf
    Next
EndFunc   ;==>_Populate

Func _InstallSelectedSoftware()
    Dim $sArray[1]

    ; Find which items were selected by user on all six tabs
    $count = _GUICtrlListView_GetItemCount($ListView1)
    $aCount = 0
    For $i = 1 To $count Step 1
        If _GUICtrlListView_GetItemChecked($ListView1, $i - 1) = True Then
            $sArray[$aCount] = _GUICtrlListView_GetItemText($ListView1, $i - 1)
            ReDim $sArray[UBound($sArray) + 1]
            $aCount += 1
        EndIf
    Next

    $count = _GUICtrlListView_GetItemCount($ListView2)
    For $i = 1 To $count Step 1
        If _GUICtrlListView_GetItemChecked($ListView2, $i - 1) = True Then
            $sArray[$aCount] = _GUICtrlListView_GetItemText($ListView2, $i - 1)
            ReDim $sArray[UBound($sArray) + 1]
            $aCount += 1
        EndIf
    Next

    $count = _GUICtrlListView_GetItemCount($ListView3)
    For $i = 1 To $count Step 1
        If _GUICtrlListView_GetItemChecked($ListView3, $i - 1) = True Then
            $sArray[$aCount] = _GUICtrlListView_GetItemText($ListView3, $i - 1)
            ReDim $sArray[UBound($sArray) + 1]
            $aCount += 1
        EndIf
    Next

    $count = _GUICtrlListView_GetItemCount($ListView4)
    For $i = 1 To $count Step 1
        If _GUICtrlListView_GetItemChecked($ListView4, $i - 1) = True Then
            $sArray[$aCount] = _GUICtrlListView_GetItemText($ListView4, $i - 1)
            ReDim $sArray[UBound($sArray) + 1]
            $aCount += 1
        EndIf
    Next

    $count = _GUICtrlListView_GetItemCount($ListView5)
    For $i = 1 To $count Step 1
        If _GUICtrlListView_GetItemChecked($ListView5, $i - 1) = True Then
            $sArray[$aCount] = _GUICtrlListView_GetItemText($ListView5, $i - 1)
            ReDim $sArray[UBound($sArray) + 1]
            $aCount += 1
        EndIf
    Next

    $count = _GUICtrlListView_GetItemCount($ListView6)
    For $i = 1 To $count Step 1
        If _GUICtrlListView_GetItemChecked($ListView6, $i - 1) = True Then
            $sArray[$aCount] = _GUICtrlListView_GetItemText($ListView6, $i - 1)
            ReDim $sArray[UBound($sArray) + 1]
            $aCount += 1
        EndIf
    Next

    ; Begin installing selected software
    ProgressOn("Software Installer", "Installing", "", -1, -1, 16)
    For $i = 1 To UBound($sArray) - 1 Step 1
        $fileName = $sArray[$i - 1]
        $switch = IniRead($iniFile, $fileName, "Switch", "")
        Local $szDrive, $szDir, $szFName, $szExt
        $extension = StringRight($fileName, 3)




        If $extension = "msi" Then
            Run("msiexec /i " & '"' & $scriptDir & "\Software\" & $fileName & '" ' & $switch) ; For MSI type installers
		 Else
			MsgBox(48,"ERROR...", "" & $scriptDir & "\Software\" & $fileName & " " & $switch,5)


          ShellExecute("" & $scriptDir & "\Software\" & $fileName & "", "" & $switch &"")

          ; run("" & $scriptDir & "\Software\" & $fileName & " " & $switch, "","") ; For EXE installers
        EndIf
        ProgressSet($i / (UBound($sArray) - 1) * 100, Round($i / (UBound($sArray) - 1) * 100, 0) & "%", "Installing " & $i & " of " & UBound($sArray) - 1)
    Next
    ProgressOff()
EndFunc   ;==>_InstallSelectedSoftware

Func _UnselectAll()
    $count = _GUICtrlListView_GetItemCount($ListView1)
    For $i = 1 To $count Step 1
        _GUICtrlListView_SetItemChecked($ListView1, $i - 1, False)
    Next

    $count = _GUICtrlListView_GetItemCount($ListView2)
    For $i = 1 To $count Step 1
        _GUICtrlListView_SetItemChecked($ListView2, $i - 1, False)
    Next

    $count = _GUICtrlListView_GetItemCount($ListView3)
    For $i = 1 To $count Step 1
        _GUICtrlListView_SetItemChecked($ListView3, $i - 1, False)
    Next

    $count = _GUICtrlListView_GetItemCount($ListView4)
    For $i = 1 To $count Step 1
        _GUICtrlListView_SetItemChecked($ListView4, $i - 1, False)
    Next

    $count = _GUICtrlListView_GetItemCount($ListView5)
    For $i = 1 To $count Step 1
        _GUICtrlListView_SetItemChecked($ListView5, $i - 1, False)
    Next

    $count = _GUICtrlListView_GetItemCount($ListView6)
    For $i = 1 To $count Step 1
        _GUICtrlListView_SetItemChecked($ListView6, $i - 1, False)
    Next
EndFunc   ;==>_UnselectAll

Func _HelpTopics()
    $Form2 = GUICreate("Help Topics", 633, 447)
    $Label1 = GUICtrlCreateLabel("", 8, 16, 612, 425)
    GUICtrlSetData(-1, "This program uses silent switches to install software without user interaction. To use this functionality, you can edit the Config.ini file to add software and their switches. Example: " & @CRLF & @CRLF & "[7zip.exe]" & @CRLF & "Switch=/S" & @CRLF & "Desc=A zip file utility" & @CRLF & "Category=5" & @CRLF & @CRLF & "The name of the file is the first line in the brackets. The line with Switch= is the section for the unattended switch. The Desc= is the description for the program. The Category= is the tab you want the program to show up on the interface." & @CRLF & @CRLF & "Here are some common switches for various installers:" & @CRLF & @CRLF & "/silent used for Inno Setup installers" & @CRLF & "/verysilent used for Inno Setup installers" & @CRLF & "/S used for Nullsoft (aka NSIS) installers" & @CRLF & "/s used for Wise installers" & @CRLF & "-s used for Ghost installers" & @CRLF & "-ms used for Mozilla installers" & @CRLF & "/quiet used for Microsoft installers" & @CRLF & "/qb used for Microsoft installers" & @CRLF & "/qn used for Microsoft installers" & @CRLF & "/passive used for Microsoft installers" & @CRLF & "/Q used for Microsoft installers" & @CRLF & @CRLF & "Note: Some installers are case sensitive (Ghost and Nullsoft for sure).")
    GUISetState(@SW_SHOW)

    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                GUIDelete($Form2)
                ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>_HelpTopics

Func _AboutProject()
    $Form3 = GUICreate("About", 413, 196)
    $Label1a = GUICtrlCreateLabel("", 24, 64, 364, 113)
    $Label2a = GUICtrlCreateLabel("Software Installer 1.0", 24, 8, 375, 41)
    GUICtrlSetFont(-1, 24, 800, 2, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x000080)
    GUISetState(@SW_SHOW)
    $aboutData = "This program was written|in a programming language called Autoit||Brought to you by abberration"
    $sData = StringSplit($aboutData, "|", 2)
    $string = ""
    For $i = 1 To UBound($sData) Step 1
        $string = $string & @CRLF & $sData[$i - 1] & @CRLF
        GUICtrlSetData($Label1a, $string)
        Sleep(1000)
    Next

    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                GUIDelete($Form3)
                ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>_AboutProject






ini

Code : Tout sélectionner

[adwcleaner_7.2.7.0.exe]
Switch=-install
Desc=A zip file utility
Category=5

[autoit.exe]
Switch=/q
Desc=Autoit script
Category=6
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6021
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Listview INI par catégorie

#2

Message par mikell »

Mickdu59 a écrit : sam. 27 juin 2020 17:21il fonctionne uniquement si les logiciels sont présents dans le dossier Software
ébin t'as juste à adapter le chemin.... franchement. ça prend, allez, 2 minutes : lignes 79, 183, 185, 188
Après, si tu veux faire plus top, tu définis le chemin avec un FileOpenDialog ou un FileSelectFolder
Faut bosser un peu, tu peux pas vivre avec juste les scripts des autres :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#3

Message par Mickdu59 »

Salut Mikell , je pense que je me suis mal exprimer
je ne veux pas adapter le chemin , je veux afficher directement les infos du ini dans la bonne categorie sans prendre en compte le folder de destination .
Merci quand meme pour ta reponse
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6021
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Listview INI par catégorie

#4

Message par mikell »

Mickdu59 a écrit : sam. 27 juin 2020 20:06je ne veux pas adapter le chemin
Mais tu vas devoir le faire quand même... la fonction _Populate() liste des fichiers (avec un chemin) et ensuite cherche ces fichiers parmi les sections du ini avec IniRead, pour récupérer leurs paramètres et les afficher dans la listview. Pas de chemin, pas de fichiers. Pas de fichiers, pas de lecture du ini

Ou alors tu modifies carrément la fonction Populate, en remplaçant dans les IniRead les "$array[$i - 1]" par les noms de section du ini, pour ça il faut d'abord lire le ini pour récupérer ces noms. Donc direction le fichier d'aide, page IniReadSectionNames Image

Func _Populate()
    $iniFile = @ScriptDir & "\Config.ini"
    $array = IniReadSectionNames($iniFile)
    ; _ArrayDisplay($array)

    For $i = 1 To $array[0]
        $category = IniRead($iniFile, $array[$i], "Category", "5")
        $desc = IniRead($iniFile, $array[$i], "Desc", "")
        If $category = 1 Then
            GUICtrlCreateListViewItem($array[$i] & "|" & $desc, $ListView1)
        ElseIf $category = 2 Then
            GUICtrlCreateListViewItem($array[$i] & "|" & $desc, $ListView2)
        ElseIf $category = 3 Then
            GUICtrlCreateListViewItem($array[$i] & "|" & $desc, $ListView3)
        ElseIf $category = 4 Then
            GUICtrlCreateListViewItem($array[$i] & "|" & $desc, $ListView4)
        ElseIf $category = 6 Then
            GUICtrlCreateListViewItem($array[$i] & "|" & $desc, $ListView6)
        Else
            GUICtrlCreateListViewItem($array[$i] & "|" & $desc, $ListView5)
        EndIf
    Next
EndFunc   ;==>_Populate
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#5

Message par Mickdu59 »

CC , merci beaucoup Mikell , tu assure c'est excatement ce que je voulais .
Après je t avoue que je suis débutant sur Autoit , j'apprends a mes heures perdu

Encore merci
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#6

Message par Mickdu59 »

Re coucou , je tenais a te remercier , tu ma grandement aider , voila le resultat https://www.youtube.com/watch?v=YlDv2HtZgcI
Ta ta petite dedicace dans la description de la video :) merci encore
Modifié en dernier par Mickdu59 le jeu. 02 juil. 2020 00:33, modifié 1 fois.
Avatar du membre
someonescripting
Niveau 3
Niveau 3
Messages : 44
Enregistré le : mar. 16 juin 2020 03:55
Status : Hors ligne

Re: Listview INI par catégorie

#7

Message par someonescripting »

Salut Mickdu59, un petit truc en plus que je n'ai pas vu sur ta vidéo et qui serait pratique, c'est que si tu relance ton soft alors que tu as déjà installé des applis lors d'un précédent lancement, les cases en question soient déjà cochés.
Sinon très bon soft !
Un bon informaticien, est un informaticien fainéant !
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#8

Message par Mickdu59 »

Merci someonescripting , c'est prévu mais pour le moment le Windows package Manager c'est de la beta , j'attend la futur mise a jour pour pouvoir continuer .Normalement la futur mise à jour va permettre aussi de désinstaller les logiciels installer avec Easy-Install :) J'ai hate .
Tu la tester ?
Avatar du membre
someonescripting
Niveau 3
Niveau 3
Messages : 44
Enregistré le : mar. 16 juin 2020 03:55
Status : Hors ligne

Re: Listview INI par catégorie

#9

Message par someonescripting »

Non pas du tout, j'ai simplement regardé ta vidéo par curiosité pour être honnête.
Un bon informaticien, est un informaticien fainéant !
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#10

Message par Mickdu59 »

Question : Je pense pas que c'est possible , comme tu la vu dans la vidéo , il y à beaucoup de listview , tu pense qu'il serait possible que je fasse une barre de recherche , qui search dans le listview active ( qui cherche dans la categorie afficher ) car je vais ajouter 750 programmes au total et j'ai peur que ca deviens galere , j'ai regarder un peu sur les topic et j'ai pas vu de truc similaire qui pourrais s'adapter au code ci-dessus
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6021
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Listview INI par catégorie

#11

Message par mikell »

Oui bien sûr c'est possible, suffit de chercher :mrgreen:

Sinon tu pourrais ne pas remettre à 0 à chaque fois la barre de progression verte qui indique l'avancement de l'installation des programmes, mais juste la faire avancer petit à petit (c'est un détail)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#12

Message par Mickdu59 »

J'ai chercher un bout de code toute la nuit sur comment ajouter une barre de recherche qui pourrais rechercher dans le listview1 mais sans succès Ptdrrr j'ai pas votre niveau pour ça :lol:
Image

Je mène mes recherches :lol: :arrow:
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6021
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Listview INI par catégorie

#13

Message par mikell »

ça irait plus vite si tu postais un petit script avec une listview et ses items, en précisant ce que tu veux pouvoir y chercher et ce que tu veux faire une fois le résultat trouvé
Tu peux aussi regarder dans l'aide les fonctions _GUICtrlListView_Find*
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#14

Message par Mickdu59 »

Re , En gros dans le script en haut de page
Il y a ceci qui permet d'afficher les resultats dans la listview1 ou 2 ou 3 etc....

Code : Tout sélectionner

 GUICtrlCreateListViewItem($array[$i - 1] & "|" & $desc, $ListView1)

$array[$i - 1] c'est le titre du logiciel
$desc = la description du logiciel

Je voudrais faire une barre de recherche qui si cette barre n'est pas rempli affiche ceci donc tout normalement

Image

et si je cherche spotify

Image

c'est hardcore je pense
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6021
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Listview INI par catégorie

#15

Message par mikell »

Pas vraiment
bouton search => lecture de l'input => variable $logiciel
ensuite tu cherches $logiciel dans l'array des noms de section du ini
avec iniread tu obtiens les données associées de $logiciel , dont la catégorie qui indique la listview concernée
reste plus qu'à créer l'item dans cette listview
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#16

Message par Mickdu59 »

Oui , la j'ai fais ceci
bouton de recherche

Code : Tout sélectionner

$Input1 = GUICtrlCreateInput("", 20, 590, 150, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_CENTER))
$Button2 = GUICtrlCreateButton("Search", 150, 590, 111, 21)
puis ceci pour valider la recherche

Code : Tout sélectionner

			
Case $Button2
 $Search = _GUICtrlListView_FindText($ListView1, GUICtrlRead($Input1))
 _GUICtrlListView_SetItemSelected($ListView1, $Search)
_GUICtrlListView_EnsureVisible($ListView1, $Search)
mais comme faire pour afficher que les resultats correspondants ?
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6021
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Listview INI par catégorie

#17

Message par mikell »

Avec les fonctions _GUICtrlListView_Find* , tu fais une recherche dans une listview déjà pleine et ça te retourne l'index de l'item
Pour ce que tu veux faire c'est plus simple de chercher d'abord dans l'array pour ensuite ne remplir la listview que avec ce qui t'intéresse
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#18

Message par Mickdu59 »

Oui je cherche par rapport a ce que tu me dit , ta pas un lien avec un example ? car je connais pas encore ceci
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#19

Message par Mickdu59 »

J'ai trouver enfin presque , le script me tape une boucle sans s'arreter
et j'ai un soucis avec la description $desc , je comprend pas

Code : Tout sélectionner

    $iniFile = "Config.ini"
    $array = IniReadSectionNames($iniFile)

	For $i = 1 To $array[0]
    $desc = IniRead($iniFile, $array[$i], "Desc", "")



            _GUICtrlListView_DeleteAllItems($ListView1)
            ; Is there anything in the input?
            $sText = GUICtrlRead($Input1)
            If StringLen($sText) <> 0 Then
                ; Create a list of matches
                Local $aMatch_List[1] = [0]
                $iStart = 1
                For $i = 0 To UBound($array) - 1
                    ; Look for the match
                    If StringInStr($array[$i], $sText) Then
                        ; Add to list
                        $aMatch_List[0] += 1
                        ReDim $aMatch_List[$aMatch_List[0] + 1]
                        $aMatch_List[$aMatch_List[0]] = $array[$i]&"|"&$desc[$i]     ;J'ai un probleme ici desc[$i] affiche la premiere ligne
                    EndIf
                Next
                ; Add matches to ListView
                For $i = 1 To $aMatch_List[0]
                    GUICtrlCreateListViewItem($aMatch_List[$i], $ListView1)
                Next
            Else
                ; Reload everything
                ContinueCase
            EndIf

    Next
Mickdu59
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 06 déc. 2019 06:56
Status : Hors ligne

Re: Listview INI par catégorie

#20

Message par Mickdu59 »

J'ai enfin trouver , voila le resultat https://youtu.be/NPPDA4LHNqE
Répondre