ArrayDisplay für 1, 2, 3 Dimensionen und Array in Array

  • Hi Leute!

    Ich Spiele zur zeit mit 3 Dimension Array´s wie oft auch schon angsprochen kann man die Daten nur umstäntlich Kontrolieren, ich habe dafür eine lösung wobei ich den mitgelieferten _ArrayDisplay integriert habe wenn 1D o. 2D übergeben werden.
    Ich habe schon gesehen das es viele lösungen mit TreeView gibt nur finde ich die lösungen nicht übersichtlich.

    Update: Habe den 'Copy Selected' Button hinzugefügt!

    Update2: Nochmasl überarbeitet, keine weiterleitung mehr an das Integrierte ArrayDisplay, Es werden jetzt 1D 2D 3D u. Array in Array unterstützt.
    BugFix ich habe dein _ArrayMultiDisplay umgeschrieben das, alle unsere Funktionen unter einem dach sind, den Namen habe ich beibehalten.

    Beispiel:

    Spoiler anzeigen
    [autoit]

    #AutoIt3Wrapper_UseX64=n
    #include <_ArrayMultiDisplay.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Dim $max = 10
    Dim $aArray[$max][7][7]
    Dim $aArray_[$max][10]
    Dim $aArray1[$max]
    Dim $aArray__[$max]
    Local $iDimensio = UBound($aArray, 0), $iUBoun = UBound($aArray, 1) - 1, $iSubMa = UBound($aArray, 2) - 1

    [/autoit] [autoit][/autoit] [autoit]

    For $iUB = 0 To $iUBoun
    $aArray1[$iUB] = Chr(Random(65, 90, 1)) & Chr(Random(65, 68, 1))
    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $iUB = 0 To $iUBoun
    $aArray[$iUB][0][0] = $aArray1
    $aArray[$iUB][1][0] = 'Spalte 2'
    $aArray[$iUB][2][0] = Chr(Random(65, 90, 1)) & Chr(Random(65, 80, 1))
    $aArray[$iUB][0][1] = $iUB + $aArray[$iUB][0][0]
    $aArray[$iUB][1][3] = $aArray1
    $aArray[$iUB][6][4] = Chr(Random(65, 90, 1)) & Chr(Random(65, 68, 1))
    Next
    _ArrayMultiDisplay($aArray, '3D Array Display')

    [/autoit] [autoit][/autoit] [autoit]

    For $iUB = 0 To $iUBoun
    $aArray_[$iUB][0] = $iUB + $iUB
    $aArray_[$iUB][1] = 'Spalte 2'
    $aArray_[$iUB][2] = Chr(Random(65, 90, 1)) & Chr(Random(65, 80, 1))
    $aArray_[$iUB][3] = $iUB + $aArray_[$iUB][0]
    $aArray_[$iUB][4] = $aArray1
    $aArray_[$iUB][5] = Chr(Random(65, 90, 1)) & Chr(Random(65, 68, 1))
    Next
    _ArrayMultiDisplay($aArray_, '2D Array Display')

    [/autoit] [autoit][/autoit] [autoit]

    $aArray__[0] = $aArray1
    For $iUB = 1 To $iUBoun
    $aArray__[$iUB] = Chr(Random(65, 90, 1)) & Chr(Random(65, 80, 1))
    Next
    _ArrayMultiDisplay($aArray__, '1D Array Display')

    [/autoit]

    _ArrayDisplay3D: New _ArrayMultiDisplay

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <Array.au3>
    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _ArrayMultiDisplay
    ; Description ...: Displays given 1D or 2D or 3D u. bei 2D Array ( Array in Array )array in a listview.
    ; Array elements, which is itself a 1D/2D-Array to be, as "[sub-array]" marked and can be displayed mouse button by Right.
    ; Syntax.........: _ArrayDisplay(Const ByRef $avArray[, $sTitle = "Array: ListView Display"[, $iItemLimit = -1[, $iTranspose = 0[, $sSeparator = ""[, $sReplace = "|"[, $sHeader = ""]]]]]])
    ; Parameters ....: $avArray - Array to display
    ; $sTitle - [optional] Title to use for window
    ; $iItemLimit - [optional] Maximum number of listview items (rows) to show
    ; $iTranspose - [optional] If set differently than default, will transpose the array if 2D
    ; $sSeparator - [optional] Change Opt("GUIDataSeparatorChar") on-the-fly
    ; $sReplace - [optional] String to replace any occurrence of $sSeparator with in each array element
    ; $sheader - [optional] Header column names
    ; Return values .: Success - 1
    ; Failure - 0, sets @error:
    ; |1 - $avArray is not an array
    ; |2 - $avArray has too many dimensions (only up to 3D supported)
    ; Author ........: randallc, Ultima, BugFix, Kleiner
    ; Modified.......: Gary Frost (gafrost), Ultima, Zedna, jpm, BugFix, Kleiner
    ; Remarks .......:
    ; Related .......:
    ; Link ..........:
    ; Example .......: Yes
    ; ===============================================================================================================================
    Func _ArrayMultiDisplay(Const ByRef $avArray, $sTitle = 'Array: ListView Display', $iItemLimit = -1, $iTranspose = 0, $sSeparator = '', $sReplace = '|', $sHeader = '')
    If Not IsArray($avArray) Then Return SetError(1, 0, 0)
    Global $avArrayMultiDisplay = $avArray
    Local $iDimension = UBound($avArray, 0), $iUBound = UBound($avArray, 1) - 1, $iSubMax = UBound($avArray, 2) - 1, $3DiUB = UBound($avArray, 3)
    If ($iDimension > 3) Then Return SetError(2, 0, 0)
    If ($sSeparator = '') Then $sSeparator = Chr(124)
    If _ArraySearch($avArray, $sSeparator, 0, 0, 0, 1) <> -1 Then
    For $x = 1 To 255
    If $x >= 32 And $x <= 127 Then ContinueLoop
    Local $sFind = _ArraySearch($avArray, Chr($x), 0, 0, 0, 1)
    If $sFind = -1 Then
    $sSeparator = Chr($x)
    ExitLoop
    EndIf
    Next
    EndIf
    Local $vTmp, $iBuffer = 64
    Local $iColLimit = 250, $iLVIAddUDFThreshold = 4000
    Local $iOnEventMode = Opt('GUIOnEventMode', 0), $sDataSeparatorChar = Opt('GUIDataSeparatorChar', $sSeparator)
    If $iSubMax < 0 Then $iSubMax = 0
    If $iTranspose Then
    $vTmp = $iUBound
    $iUBound = $iSubMax
    $iSubMax = $vTmp
    EndIf
    If $iSubMax > $iColLimit Then $iSubMax = $iColLimit
    If $iItemLimit < 1 Then $iItemLimit = $iUBound
    If $iUBound > $iItemLimit Then $iUBound = $iItemLimit
    If $iLVIAddUDFThreshold > $iUBound Then $iLVIAddUDFThreshold = $iUBound
    If ($sHeader = '') Then
    $sHeader = 'Row '
    For $i = 0 To $iSubMax
    $sHeader &= $sSeparator & 'Col ' & $i
    Next
    EndIf
    If Not $3DiUB Then $3DiUB = 1
    Local $Sub = False
    Local $avArrayText[$iUBound + 1][$3DiUB]
    For $3D = 0 To $3DiUB - 1
    For $i = 0 To $iUBound
    $avArrayText[$i][$3D] = '[' & $i & ']'
    For $j = 0 To $iSubMax
    If ($iDimension = 1) Then
    If $iTranspose Then
    $vTmp = $avArray[$j]
    Else
    $vTmp = $avArray[$i]
    EndIf
    Else
    If ($iDimension = 3) Then
    If $iTranspose Then
    $vTmp = $avArray[$j][$i][$3D]
    Else
    $vTmp = $avArray[$i][$j][$3D]
    EndIf
    Else
    If $iTranspose Then
    $vTmp = $avArray[$j][$i]
    Else
    $vTmp = $avArray[$i][$j]
    EndIf
    EndIf
    EndIf
    If IsArray($vTmp) Then
    $vTmp = '[SubArray]'
    $Sub = True
    Else
    $vTmp = StringReplace($vTmp, $sSeparator, $sReplace, 0, 1)
    EndIf
    $avArrayText[$i][$3D] &= $sSeparator & $vTmp
    $vTmp = StringLen($vTmp)
    If $vTmp > $iBuffer Then $iBuffer = $vTmp
    Next
    Next
    Next
    $iBuffer += 1
    Local Const $_ARRAYCONSTANT_GUI_DOCKBORDERS = 0x66
    Local Const $_ARRAYCONSTANT_GUI_DOCKBOTTOM = 0x40
    Local Const $_ARRAYCONSTANT_GUI_DOCKHEIGHT = 0x0200
    Local Const $_ARRAYCONSTANT_GUI_DOCKLEFT = 0x2
    Local Const $_ARRAYCONSTANT_GUI_DOCKRIGHT = 0x4
    Local Const $_ARRAYCONSTANT_GUI_EVENT_CLOSE = -3
    Local Const $_ARRAYCONSTANT_LVIF_PARAM = 0x4
    Local Const $_ARRAYCONSTANT_LVIF_TEXT = 0x1
    Local Const $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH = (0x1000 + 29)
    Local Const $_ARRAYCONSTANT_LVM_GETITEMCOUNT = (0x1000 + 4)
    Local Const $_ARRAYCONSTANT_LVM_GETITEMSTATE = (0x1000 + 44)
    Local Const $_ARRAYCONSTANT_LVM_INSERTITEMW = (0x1000 + 77)
    Local Const $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE = (0x1000 + 54)
    Local Const $_ARRAYCONSTANT_LVM_SETITEMW = (0x1000 + 76)
    Local Const $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT = 0x20
    Local Const $_ARRAYCONSTANT_LVS_EX_GRIDLINES = 0x1
    Local Const $_ARRAYCONSTANT_LVS_SHOWSELALWAYS = 0x8
    Local Const $_ARRAYCONSTANT_WS_EX_CLIENTEDGE = 0x0200
    Local Const $_ARRAYCONSTANT_WS_MAXIMIZEBOX = 0x00010000
    Local Const $_ARRAYCONSTANT_WS_MINIMIZEBOX = 0x00020000
    Local Const $_ARRAYCONSTANT_WS_SIZEBOX = 0x00040000
    Local Const $_ARRAYCONSTANT_tagLVITEM = 'int Mask;int Item;int SubItem;int State;int StateMask;ptr Text;int TextMax;int Image;int Param;int Indent;int GroupID;int Columns;ptr pColumns'
    Local Const $_ARRAYCONSTANT_WM_NOTIFY = 0x004E
    Local Const $_ARRAYCONSTANT_TCM_GETCURSEL = (0x1300 + 11)
    Local Const $_ARRAYCONSTANT_GUI_WS_EX_PARENTDRAG = 0x00100000
    Local $iAddMask = BitOR($_ARRAYCONSTANT_LVIF_TEXT, $_ARRAYCONSTANT_LVIF_PARAM)
    Local $tBuffer = DllStructCreate('wchar Text[' & $iBuffer & ']'), $pBuffer = DllStructGetPtr($tBuffer)
    Local $tItem = DllStructCreate($_ARRAYCONSTANT_tagLVITEM), $pItem = DllStructGetPtr($tItem)
    DllStructSetData($tItem, 'Param', 0)
    DllStructSetData($tItem, 'Text', $pBuffer)
    DllStructSetData($tItem, 'TextMax', $iBuffer)
    Local $hListView[$3DiUB]
    Local $iWidth = 640, $iHeight = 480
    Global $hArrayDisplayListView[$3DiUB]
    Local $hGUI = GUICreate($sTitle, $iWidth, $iHeight, Default, Default, BitOR($_ARRAYCONSTANT_WS_SIZEBOX, $_ARRAYCONSTANT_WS_MINIMIZEBOX, $_ARRAYCONSTANT_WS_MAXIMIZEBOX))
    Local $aiGUISize = WinGetClientSize($hGUI)
    Global $hArrayDisplayGUI = $hGUI
    Local $Tab = GUICtrlCreateTab(Default, Default, $aiGUISize[0] + 2, $aiGUISize[1] - 48)
    Local $hCopy = GUICtrlCreateButton('Copy Selected', 3, $aiGUISize[1] - 23, $aiGUISize[0] - 6, 20)
    If $3DiUB > 1 Then
    For $i = 0 To $3DiUB - 1
    GUICtrlCreateTabItem('D' & $i)
    $hListView[$i] = GUICtrlCreateListView($sHeader, 0, 22, $aiGUISize[0], $aiGUISize[1] - 48, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS)
    GUICtrlSetResizing($hListView[$i], $_ARRAYCONSTANT_GUI_DOCKBORDERS)
    $hArrayDisplayListView[$i] = $hListView[$i]
    Next
    Else
    $hListView[0] = GUICtrlCreateListView($sHeader, 0, 0, $aiGUISize[0], $aiGUISize[1] - 26, $_ARRAYCONSTANT_LVS_SHOWSELALWAYS)
    GUICtrlSetResizing($hListView[0], $_ARRAYCONSTANT_GUI_DOCKBORDERS)
    $hArrayDisplayListView[0] = $hListView[0]
    EndIf
    GUICtrlSetResizing($Tab, $GUI_DOCKTOP + $GUI_DOCKLEFT + $GUI_DOCKRIGHT + $GUI_DOCKBOTTOM)
    GUICtrlSetResizing($hCopy, $_ARRAYCONSTANT_GUI_DOCKLEFT + $_ARRAYCONSTANT_GUI_DOCKRIGHT + $_ARRAYCONSTANT_GUI_DOCKBOTTOM + $_ARRAYCONSTANT_GUI_DOCKHEIGHT)
    GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_GRIDLINES, $_ARRAYCONSTANT_LVS_EX_GRIDLINES)
    GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT, $_ARRAYCONSTANT_LVS_EX_FULLROWSELECT)
    GUICtrlSendMsg($hListView, $_ARRAYCONSTANT_LVM_SETEXTENDEDLISTVIEWSTYLE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE, $_ARRAYCONSTANT_WS_EX_CLIENTEDGE)
    Local $aItem
    For $i = 0 To $iUBound
    If ($3DiUB > 1) Then
    For $3D = 0 To $3DiUB - 1
    If GUICtrlCreateListViewItem($avArrayText[$i][$3D], $hListView[$3D]) = 0 Then
    $aItem = StringSplit($avArrayText[$i][$3D], $sSeparator)
    DllStructSetData($tBuffer, 'Text', $aItem[1])
    DllStructSetData($tItem, 'Item', $i)
    DllStructSetData($tItem, 'SubItem', 0)
    DllStructSetData($tItem, 'Mask', $iAddMask)
    GUICtrlSendMsg($hListView[$i], $_ARRAYCONSTANT_LVM_INSERTITEMW, 0, $pItem)
    DllStructSetData($tItem, 'Mask', $_ARRAYCONSTANT_LVIF_TEXT)
    For $j = 2 To $aItem[0]
    DllStructSetData($tBuffer, 'Text', $aItem[$j])
    DllStructSetData($tItem, 'SubItem', $j - 1)
    GUICtrlSendMsg($hListView[$i], $_ARRAYCONSTANT_LVM_SETITEMW, 0, $pItem)
    Next
    EndIf
    Next
    Else
    If GUICtrlCreateListViewItem($avArrayText[$i][0], $hListView[0]) = 0 Then
    $aItem = StringSplit($avArrayText[$i][0], $sSeparator)
    DllStructSetData($tBuffer, 'Text', $aItem[1])
    DllStructSetData($tItem, 'Item', $i)
    DllStructSetData($tItem, 'SubItem', 0)
    DllStructSetData($tItem, 'Mask', $iAddMask)
    GUICtrlSendMsg($hListView[0], $_ARRAYCONSTANT_LVM_INSERTITEMW, 0, $pItem)
    DllStructSetData($tItem, 'Mask', $_ARRAYCONSTANT_LVIF_TEXT)
    For $j = 2 To $aItem[0]
    DllStructSetData($tBuffer, 'Text', $aItem[$j])
    DllStructSetData($tItem, 'SubItem', $j - 1)
    GUICtrlSendMsg($hListView[0], $_ARRAYCONSTANT_LVM_SETITEMW, 0, $pItem)
    Next
    EndIf
    EndIf
    Next
    $iWidth = 0
    For $i = 0 To $iSubMax + 1
    $iWidth += GUICtrlSendMsg($hListView[0], $_ARRAYCONSTANT_LVM_GETCOLUMNWIDTH, $i, 0)
    Next
    If $iWidth < 250 Then $iWidth = 230
    $iWidth += 20
    If $iWidth > @DesktopWidth Then $iWidth = @DesktopWidth - 100
    WinMove($hGUI, '', (@DesktopWidth - $iWidth) / 2, Default, $iWidth)
    GUISetState(@SW_SHOW, $hGUI)
    GUIRegisterMsg($_ARRAYCONSTANT_WM_NOTIFY, 'WM_DISPLAY_NOTIFY')
    Global $a_msgARRAY_DISPLAY
    If Not IsDeclared('hSubGUI') Then Global $hSubGUI
    While 1
    $a_msgARRAY_DISPLAY = GUIGetMsg(1)
    Switch $a_msgARRAY_DISPLAY[0]
    Case $_ARRAYCONSTANT_GUI_EVENT_CLOSE
    If ($a_msgARRAY_DISPLAY[1] = $hGUI) Then
    ExitLoop
    Else
    GUIDelete($hSubGUI)
    EndIf
    Case $hCopy
    Local $sClip = ''
    Local $aiCurItems[1] = [0]
    Local $HWnd = GUICtrlSendMsg($Tab, $_ARRAYCONSTANT_TCM_GETCURSEL, 0, 0)
    If (Not $HWnd) Or ($HWnd = -1) Then $HWnd = 0
    For $i = 0 To GUICtrlSendMsg($hListView[$HWnd], $_ARRAYCONSTANT_LVM_GETITEMCOUNT, 0, 0)
    If GUICtrlSendMsg($hListView[$HWnd], $_ARRAYCONSTANT_LVM_GETITEMSTATE, $i, 0x2) Then
    $aiCurItems[0] += 1
    ReDim $aiCurItems[$aiCurItems[0] + 1]
    $aiCurItems[$aiCurItems[0]] = $i
    EndIf
    Next
    If Not $aiCurItems[0] Then
    For $sItem = 0 To UBound($avArrayText) - 1
    $sClip &= $avArrayText[$sItem][$HWnd] & @CRLF
    ConsoleWrite('1Array lauf : ' & $sClip & @CRLF)
    Next
    Else
    For $i = 1 To UBound($aiCurItems) - 1
    $sClip &= $avArrayText[$aiCurItems[$i]][$HWnd] & @CRLF
    ConsoleWrite('2Array lauf : ' & $sClip & @CRLF)
    Next
    EndIf
    ClipPut($sClip)
    EndSwitch
    WEnd
    GUIDelete($hGUI)
    Opt('GUIOnEventMode', $iOnEventMode)
    Opt('GUIDataSeparatorChar', $sDataSeparatorChar)
    Return 1
    EndFunc ;==>_ArrayMultiDisplay

    [/autoit] [autoit][/autoit] [autoit]

    Func WM_DISPLAY_NOTIFY($HWnd, $iMsg, $iwParam, $ilParam)
    If Not IsDeclared('hArrayDisplayListView') Then Local $hArrayDisplayListView
    If Not IsDeclared('avArrayMultiDisplay') Then Local $avArrayMultiDisplay
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $lwHw
    Local Const $USEtagNMHDR = 'hwnd hWndFrom;int IDFrom;int Code'
    Local Const $USEtagNMITEMACTIVATE = 'hwnd hWndFrom;int IDFrom;int Code;int Index;int SubItem;int NewState;int OldState;' & _
    'int Changed;int X;int Y;int lParam;int KeyFlags'
    $tNMHDR = DllStructCreate($USEtagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, 'hWndFrom'))
    $iIDFrom = DllStructGetData($tNMHDR, 'IDFrom')
    $iCode = DllStructGetData($tNMHDR, 'Code')
    For $i = 0 To UBound($hArrayDisplayListView) - 1
    If ($hWndFrom = GUICtrlGetHandle($hArrayDisplayListView[$i])) Then
    $hWndListView = GUICtrlGetHandle($hArrayDisplayListView[$i])
    $lwHw = $i
    ExitLoop
    EndIf
    Next
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case -5
    Local $tInfo = DllStructCreate($USEtagNMITEMACTIVATE, $ilParam)
    Local $ItemIndex = DllStructGetData($tInfo, 'Index'), $SubIndex = DllStructGetData($tInfo, 'SubItem')
    If _GUICtrlListView_GetItemText($hWndListView, $ItemIndex, $SubIndex) = '[SubArray]' Then
    If Not IsArray($avArrayMultiDisplay) Then Return 0
    Local $avArraySub
    If (UBound($avArrayMultiDisplay, 0) = 3) Then
    $avArraySub = $avArrayMultiDisplay[$ItemIndex][$SubIndex - 1][$lwHw]
    ElseIf (UBound($avArrayMultiDisplay, 0) = 2) Then
    $avArraySub = $avArrayMultiDisplay[$ItemIndex][$SubIndex - 1]
    Else
    $avArraySub = $avArrayMultiDisplay[$ItemIndex]
    EndIf
    If Not IsDeclared('hArrayDisplayGUI') Then Local $hArrayDisplayGUI
    Local $aMainPos = WinGetPos($hArrayDisplayGUI)
    Local $hSubGUI = GUICreate('SubArray', 640, 480, -1, -1, Default, 0x00000040, $hArrayDisplayGUI)
    Local $sItemText, $ub2nd, $sHeaderLV = 'Row | Col 1'
    If (UBound($avArraySub, 2) > 1) Then
    $ub2nd = True
    $sHeaderLV = 'Row | '
    For $j = 0 To UBound($avArraySub, 2) - 1
    $sHeaderLV &= 'Col ' & $j & ' | '
    Next
    $sHeaderLV = StringTrimRight($sHeaderLV, 2)
    Else
    $ub2nd = False
    EndIf
    Local $hSubLV = GUICtrlCreateListView($sHeaderLV, 0, 0, 640, 480, Default, 0x00000001)
    For $i = 0 To UBound($avArraySub) - 1
    $sItemText = '[' & $i & ']' & '|'
    If $ub2nd Then
    For $j = 0 To UBound($avArraySub, 2) - 1
    $sItemText &= $avArraySub[$i][$j] & '|'
    Next
    $sItemText = StringTrimRight($sItemText, 1)
    Else
    $sItemText &= $avArraySub[$i]
    EndIf
    GUICtrlCreateListViewItem($sItemText, $hSubLV)
    Next
    GUISetState(@SW_SHOW, $hSubGUI)
    EndIf
    EndSwitch
    EndSwitch
    Return 'GUI_RUNDEFMSG'
    EndFunc ;==>WM_DISPLAY_NOTIFY

    [/autoit]

    LG Kleiner

  • evtl lässt sich das in begrenztem Rahmen 3Dimensional abbilden.

    Man erstellt mit hilfe der GDI+ eine 2D Ansicht. (mit Spalte und Zeile)
    Für die 3-te Dimension erstellt man jeweils eigene Backbuffers auf diese man dann die 2D Ansicht zeichnet.

    Wenn man es jetzt noch schafft diese irgendwie im Raum drehbar zu machen währe das schon hart am Optimum :P
    Vllt reicht ja auch Halbtransparenz dass man sich mit dem Mausrad durch die Dritte Dimension vor und zurück scrollen kann...^^

    War nur ein Vorschlag. ich hab nicht behauptet, dass man das Realisieren kann^^
    (Aber man weiß ja nie, bei den Pro´s hier drin^^)

    mfg
    Mars(i)

  • Hi!

    Update: Habe den 'Copy Selected' Button hinzugefügt!

    @Marsi
    Schöner gedanke, ich glaube nicht das sich 3d Array´s darstellen lassen, vieleicht wie du schon sagst im begrenztem Rahmen!
    Ab der 3 Dimension hat ma zB. ( $avArray[10][10][10] ) = 10 Array * 10 zeilen * 10 spalten usw.

    Edit:/ Jetzt kann man zumindestens komfortabel 3 Dimensionen bearbeiten!

    LG kleiner

    Einmal editiert, zuletzt von Kleiner (30. September 2010 um 23:10)

  • Ist dies noch die aktuelle UDF zum darstellen eines 3D-Arrays?

    Schreibt @Kleiner doch hier...

    BugFix ich habe dein _ArrayMultiDisplay umgeschrieben das, alle unsere Funktionen unter einem dach sind, den Namen habe ich beibehalten.

    ; Modified.......: Gary Frost (gafrost), Ultima, Zedna, jpm, BugFix, Kleiner

    @Kleiner
    Sag mal, hast du nicht bemerkt, dass dein 'Copy Selected' Button nicht mehr ins Window passt, nachdem du die Größe an das anzuzeigende Array angepasst hast? Zudem trifft 'Copy Selected' ja nicht wirklich zu, denn du kopierst das komplette Array ja auch in die Zwischenablage, wenn NICHTS selektiert wurde... und schön wäre, wenn man auswählen kann, ob das Array mit/ohne Header/Rows in die Zwischenablage kopiert, oder als *.csv gespeichert werden soll.


    Was definitiv noch fehlt ist ein Exit-Button und wie beim Original die Möglichkeit eine eigene Funktion mit Parametern einzubinden. Sehr aufwertend wäre dann noch, wenn man dein _ArrayMultiDisplay als Child-Window in die eigene GUI einbinden könnte... so dass es mit dieser dann verschoben/minimiert werden kann und sich die Größe dann auch anpasst, falls die Parent-Gui diese ändert - und es sich dann auch beendet, wenn die Parent-GUI geschlossen wurde.