UDF > Array >


_ArrayDisplay

Affiche un tableau 1D ou 2D dans un contrôle ListView

#include <Array.au3>
_ArrayDisplay ( Const ByRef $aArray [, $sTitle = "ArrayDisplay" [, $sArrayRange = "" [, $iFlags = 0 [, $vUser_Separator = Default [, $sHeader = Default [, $iMax_ColWidth = Default]]]]]] )

Paramètres

$aArray Tableau à afficher
$sTitle [optionnel] Titre pour l'affichage. Par défaut "ArrayDisplay".
$sArrayRange [optionnel] Plage de lignes/colonnes à afficher. Par défaut (""), le tableau entier. (Voir ci-dessous pour plus de détails)
$iFlags [optionnel] Détermine les options UDF. Ajoutez des valeurs ensemble si besoin:
    $ARRAYDISPLAY_COLALIGNLEFT (0) = (par défaut) Alignement du texte dans les colonnes - à gauche
    $ARRAYDISPLAY_TRANSPOSE (1) = Transpose le tableau
    $ARRAYDISPLAY_COLALIGNRIGHT (2) = Alignement du texte dans les colonnes - à droite
    $ARRAYDISPLAY_COLALIGNCENTER (4) = Alignement du texte dans les colonnes - au centre
    $ARRAYDISPLAY_VERBOSE (8) = Verbose - affiche MsgBox si erreur et recouvre l'écran pour de grands tableaux
    16 = Obsolète
    32 = Obsolète
    $ARRAYDISPLAY_NOROW (64) = Aucune colonne 'Row' ne s'affiche
$vUser_Separator [optionnel] Obsolète. Gardé pour la compatibilité des scripts.
$sHeader [optionnel] Les noms des colonnes dans l'entête (chaîne de noms séparés par le séparateur courant - en général "|" ). Par défaut voir Remarques.
$iMax_Colwidth [optionnel] Largeur maximale à laquelle une colonne de ListView s'élargit pour afficher le contenu. Valeur par défaut 350 pixels.

Valeur de retour

Succès: Retourne 1
Échec: Retourne 0 et définit @error <> 0 :
@error: 1 - $aArray n'est pas un tableau
2 - $aArray a trop de dimensions (seulement 1D et 2D est supporté)

Remarques

Si le paramètre $aArray n'est pas un tableau ou est un tableau de plus de 2 dimensions, la fonction retourne une erreur et le script continue. Si le paramètre "verbose" est installé dans $iFlags une MsgBox s'affiche qui offre la possibilité de quitter immédiatement le script ou de continuer le script avec un retour normal d'erreur.

Bien qu'il n'y ait aucune limite sur la taille du tableau à afficher, il y a une limitation des contrôles de Windows, ce qui signifie que les en-têtes et les colonnes des ListView ne s'alignent pas s'il y en a plus de 600 environ.

La syntaxe du paramètre $sArrayRange est la suivante:

"7" Affiche les lignes 0-7 avec toutes les colonnes
"7:" Affiche les lignes 7-fin avec toutes les colonnes
"|7" Affiche toutes les lignes avec les colonnes 0-7
"|7:" Affiche toutes les lignes avec les colonnes 7-fin
"7|7" Affiche les lignes 0-7 avec les colonnes 0-7
"5:7" Affiche les lignes 5-7 avec toutes les colonnes
"|5:7" Affiche toutes les lignes avec les colonnes 5-7
"7|5:7" Affiche les lignes 0-7 avec les colonnes 5-7
"5:7|7" Affiche les lignes 5-7 avec les colonnes 0-7
"5:7|5:7" Affiche les lignes 5-7 avec les colonnes 5-7

Toutes les valeurs de colonnes sont ignorées pour les tableaux 1D.

Les noms $sHeader (séparés par le séparateur courant) seront utilisés pour autant de colonnes qu'il y a de noms. S'il n'y a pas de nom, ou pas assez, les noms suivants pour les entêtes seront utilisés: "Row|Col0" pour les tableaux 1D, ou "Row|Col0|Col1|...|Col n" pour les tableaux 2D. Si le tableau est affiché transposé, les en-têtes sont ignorés.

Les dimensions du tableau sont affichées sous le tableau. Ils sont en texte rouge si le tableau est transposé ou seulement une plage d'éléments est affichée - une info-bulle affiche la ou les occurrences particulières.

Si le paramètre "verbose" est défini dans $iFlags, une boîte de dialogue splash s'affiche lors du traitement initial lorsque le tableau à afficher contient plus de 10000 éléments.

Un élément de tableau contenant un autre tableau est affiché comme {Array}.

Cliquez sur un en-tête de colonne pour le trier.

Exemple

#include <Array.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()

    ; Crée un tableau 1D et l'affiche
    Local $aArray_1D[5] = ["Item 0", "Item 1", "Un long Item 2 pour montrer l'extension de la  colonne", "Item 3", "Item 4"]

    _ArrayDisplay($aArray_1D, "Affichage 1D")
    
    ; Crée un tableau 2D à afficher
    Local $aArray_2D[20][15]
    For $i = 0 To UBound($aArray_2D) - 1
        For $j = 0 To UBound($aArray_2D, 2) - 1
            $aArray_2D[$i][$j] = "Item " & StringFormat("%02i", $i) & StringFormat("%02i", $j)
        Next
    Next

    _ArrayDisplay($aArray_2D, "Affichage 2D") 
    _ArrayDisplay($aArray_2D, "Affichage 2D transposé", Default, 1)

    ReDim $aArray_2D[20][10]
    $aArray_2D[5][5] = "Un long item pour montrer l'expansion de la colonne"
    _ArrayDisplay($aArray_2D, "Expansion colonne - Titres personnalisé - pas de ligne/colonne", Default, 64, Default, "AA|BB|CC|DD|EE|FF|GG|HH|II|JJ")

    $aArray_2D[5][5] = "Alignement de la colonne défini à droite"
    _ArrayDisplay($aArray_2D, "Définition par plage - alignement à droite", "3:7|4:9", 2, Default, "AA|BB|CC|DD|EE|FF")

    $aArray_2D[5][5] = "Alignement de la colonne défini à gauche"
    Opt("GUIDataSeparatorChar", "!")
    _ArrayDisplay($aArray_2D, "! Séparateur d'entête", "3:7|4:9", Default, Default, "AA!BB!CC!DD!EE!FF")

    ; Crée une variable non tableau pour forcer une erreur - MsgBox s'affiche car $iFlags est installé
    Local $vVar = 0, $iRet, $iError
    $iRet = _ArrayDisplay($vVar, "Pas de MsgBox lors d'une Erreur")
    $iError = @error
    MsgBox(0, "Erreur _ArrayDisplay()", "Retourne sans Msgbox interne $iret =" & $iRet & " @error=" & $iError)

    $iRet = _ArrayDisplay($vVar, "MsgBox lors d'une Erreur", Default, 8)
    $iError = @error
    MsgBox(0, "Erreur _ArrayDisplay()", "Retourne une Msgbox interne sans forcer un Exit $iret =" & $iRet & " @error=" & $iError)

EndFunc    ;==>Example