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]]]]]] )
$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. |
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 |
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 |
#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
#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")
#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")
#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")
#include <Array.au3>
Local $asControls = StringSplit(WinGetClassList("[active]", ""), @LF)
_ArrayDisplay($asControls, "Klassenliste des aktiven Fensters")