Funktionreferenz


_ArrayDisplay

Beschreibung anzeigen in

Zeigt ein 1D oder 2D Array in einem ListView

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

Parameter

$aArray Name des anzuzeigenden Arrays
$sTitle [optional] Titel für den Dialog. Standard = "ArrayDisplay"
$sArrayRange [optional] Bereich der darzustellenden Zeilen/Spalten. Standard ("") = komplettes Array (siehe unten für Details)
$iFlags [optional] legt die UDF Optionen fest. Benötigte Werte sind zu addieren
    $ARRAYDISPLAY_COLALIGNLEFT (0) = (Standard) Ausrichtung Spaltentext - links
    $ARRAYDISPLAY_TRANSPOSE (1) = transponiert das Array (Zeilen und Spalten tauschen) (nur 2D)
    $ARRAYDISPLAY_COLALIGNRIGHT (2) = Ausrichtung Spaltentext - rechts
    $ARRAYDISPLAY_COLALIGNCENTER (4) = Ausrichtung Spaltentext - mittig
    $ARRAYDISPLAY_VERBOSE (8) = erweitert - zeigt bei einem Fehler eine MsgBox bzw. Splashscreens während große Arrays verarbeitet werden
    16 = veraltet
    32 = veraltet
    $ARRAYDISPLAY_NOROW (64) = Keine Spalte mit "Row" anzeigen
    $ARRAYDISPLAY_CHECKERROR (128) = Rückgabe wenn @error <> 0
$vUser_Separator [optional] veraltet. Immer Opt("GUIDataSeparatorChar") verwenden.
$sHeader [optional] Spaltennamen (Namen getrennt durch das aktuelle Trennzeichen - gewöhnlich "|"). Standard siehe Bemerkungen.
$iDesired_Colwidth [optional] Wenn positiv, maximale Breite, auf die eine ListView-Spalte erweitert wird, um den Inhalt anzuzeigen. Standard = 350 Pixel.
    Wenn negativ, werden alle Spalten, außer der ersten, die auf 55 gesetzt ist, auf Abs($iDesired_Colwidth) gesetzt.

Rückgabewert

Erfolg: 1
Fehler: 0 und setzt @error wie folgt:
@error: 1 - $aArray ist kein Array
2 - $aArray hat zu viele Dimensionen. Es werden nur 1D und 2D Arrays unterstützt
3 - @error wird gesetzt, wenn die Funktion aufgerufen wurde

Bemerkungen

Falls der Funktion kein Array als Variable oder ein Array mit mehr als zwei Dimensionen übergeben wird, so gibt die Funktion einen Fehler zurück und das Skript wird fortgesetzt.
Falls der "verbose" Parameter in $iFlags gesetzt wird, so wird eine MsgBox dargestellt, welche die Möglichkeit bietet das Skript sofort zu beenden oder das Skript mit der Rückgabe des normalen Fehlercodes weiterzuführen.

Obwohl die Größe des Arrays, das angezeigt werden soll, nicht begrenzt ist, gibt es eine Windows-Controlbeschränkung, was bedeutet, dass der ListView-Header und -Spalten nicht ausgerichtet sind, wenn mehr als etwa 600 vorhanden sind.

Es werden nur 65525 Zeilen eines Arrays dargestellt. Die ist in AutoIt eine Begrenzung der Gesamtzahl von in einer GUI darstellbarer Controls. Außerdem können maximal 250 Spalten dargestellt werden.
Wenn der User versucht ein Array größer als diese Begrenzungen darzustellen, so wird diesen Begrenzungen ein "*" an die abgeschnittene Dimension angehängt und in rot dargestellt.
Es ist zu beachten, dass die Verwendung von $iArrayRange (anzuzeigende Elemente bestimmen) es ermöglicht Arrays größer als die Anzeigebegrenzungen darzustellen.

Der $sArrayRange Parameter-Syntax lautet wie folgt:

"7" - zeigt die Zeilen 0-7 mit allen Spalten
"7:" - zeigt die Zeilen die auf 7 enden mit allen Spalten
"|7" - zeigt alle Zeilen mit den Spalten 0-7
"|7:" - zeigt alle Zeilen mit den Spalten die auf 7 enden
"7|7" - zeigt die Zeilen 0-7 mit den Spalten 0-7
"5:7" - zeigt die Zeilen 5-7 mit allen Spalten
"|5:7" - zeigt alle Zeilen mit den Spalten 5-7
"7|5:7" - zeigt die Zeilen 0-7 mit den Spalten 5-7
"5:7|7" - zeigt die Zeilen 5-7 mit den Spalten 0-7
"5:7|5:7" - zeigt die Zeilen 5-7 mit den Spalten 5-7

Alle Spaltenwerte werden für 1D-Arrays ignoriert.

$sHeader Namen (getrennt durch das aktuelle Trennzeichen) werden für die vielen Spalten verwendet wie es Namen gibt. Wenn keine oder nicht genug eigene Namen festgelegt werden, so wird der Standardname von "Row|Col0" für 1D-Arrays oder "Row|Col0|Col1|...|Col n" für 2D-Arrays ausgetauscht. Wenn das Array transponiert angezeigt wird, wird der Header ignoriert.
Die Variable $ARRAYDISPLAY_ROWPREFIX kann den Präfix für die Zeilennummerierung geändert werden (Standard: #).
Um den Zahlenvergleich für eine bestimmte Spalte zu erzwingen, ich einfach der entsprechende Namen mit $ARRAYDISPLAY_NUMERICSORT (Standard: *) zu beenden.

Die Array-Dimensionen werden links unter dem Array angezeigt. Sie sind in rotem Text, wenn das Array transponiert ist oder nur eine Reihe von Elementen angezeigt wird - ein Tooltip zeigt das / die jeweilige(n) Ereignis(e) an.

Falls der "verbose" Parameter in $iFlags gesetzt ist, so wird ein Splashdialog dargestellt während das Array versucht ein Array mit mehr als 10000 Elementen darzustellen.

Ein Arrayelement, das ein anderes Array enthält, wird als {Array} oder {Map} angezeigt.

Bei der Verwendung von $ARRAYDISPLAY_TRANSPOSE oder $sArrayRange wird eine Kopie von $aArray erstellt, wodurch zusätzlicher Speicher verbraucht wird.

Ein Klick auf den Spalten-Header sortiert dieses. Bei einer großen Anzahl von Zeilen kann dies einige Sekunden dauern. Beim Laden wird ein ToolTip angezeigt, der darauf hinweist, dass die Sortierung einige Sekunden dauern kann.

Beispiel

Beispiel 1

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

Example()

Func Example()
    ; Erstellt ein 1D Array zum anzeigen
    Local $aArray_1D[5] = ["Item 0", "Item 1", "Ein breites Item 2 um die Spaltenanpassung zu zeigen", "Item 3", "Item 4"]

    _ArrayDisplay($aArray_1D, "1D Anzeige")

    ; Erstellt ein 2D Array zum anzeigen
    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, "2D Anzeige")
    _ArrayDisplay($aArray_2D, "2D Anzeige gedreht", Default, 1)

    ReDim $aArray_2D[20][10]
    $aArray_2D[5][5] = "Ein breites Item um die Spaltenanpassung zu zeigen"
    _ArrayDisplay($aArray_2D, "Angepasste Spalte - eigene Spaltennamens - alternative Zeilenfarben - keine 'Zeilen bzw. Spalten", Default, 64, Default, "AA|BB|CC|DD|EE|FF|GG|HH|II|JJ")

    $aArray_2D[5][5] = "rechtsbündige Spaltenausrichtung"
    _ArrayDisplay($aArray_2D, "Bereich gesetzt - rechtsbündig", "3:7|4:9", 2, Default, "AA|BB|CC|DD|EE|FF")

    $aArray_2D[5][5] = "linksbündige Spaltenausrichtung"
    Opt("GUIDataSeparatorChar", "!")
    _ArrayDisplay($aArray_2D, "! Trennzeichen", "3:7|4:9", Default, Default, "AA!BB!CC!DD!EE!FF")

    ; Erstellt eine nicht-Array Variable um einen Fehler zu erzwingen - eine MsgBox wird angezeigt, da $iFlags gesetzt ist
    Local $vVar = 0, $iRet, $iError
    $iRet = _ArrayDisplay($vVar, "MsgBox bei einem Fehler")
    $iError = @error
    MsgBox(0, "_ArrayDisplay() Fehler", "Return ohne interne Msgbox $iret =" & $iRet & " @error=" & $iError)

    $iRet = _ArrayDisplay($vVar, "MsgBox bei einem Fehler", Default, 8)
    $iError = @error
    MsgBox(0, "_ArrayDisplay() Fehler", "Return ohne interne Msgbox ohne Erzwingen von Exit $iret =" & $iRet & " @error=" & $iError)

EndFunc    ;==>Example

Beispiel 2

#include <Array.au3>

;verwendet ein selbst definiertes Array)
Local $avArray[10]

$avArray[0] = "JPM"
$avArray[1] = "Holger"
$avArray[2] = "Jon"
$avArray[3] = "Larry"
$avArray[4] = "Jeremy"
$avArray[5] = "Valik"
$avArray[6] = "Cyberslug"
$avArray[7] = "Nutster"
$avArray[8] = "JdeB"
$avArray[9] = "Tylo"

_ArrayDisplay($avArray, "$avArray wird manuell auf 1D gesetzt")

Beispiel 3

#include <Array.au3>

;verwendet ein Array welches durch StringSplit() zurückgegeben wurde)
$avArray = StringSplit(WinGetClassList("", ""), @LF)
_ArrayDisplay($avArray, "$avArray mit allen Klassen in den Fenstern")


Beispiel 4

#include <Array.au3>

;ein 2D Array)
Local $avArray[2][5] = [["JPM", "Holger", "Jon", "Larry", "Jeremy"],["Valik", "Cyberslug", "Nutster", "JdeB", "Tylo"]]
_ArrayDisplay($avArray, "$avArray als 2D Array")

Beispiel 5

#include <Array.au3>

Local $asControls = StringSplit(WinGetClassList("[active]", ""), @LF)
_ArrayDisplay($asControls, "Klassenliste des aktiven Fensters")