ListView im Tab erheblich langsamer??

  • Ich hab grade mal ein wenig rumprobiert und sah folgendes Problem:

    in meiner Gui hab ich mir ein Tab mit 3 Reitern erstellt. Im ersten Tab ist eine Listview drin.

    Spoiler anzeigen
    [autoit]

    ...
    Global $TabSheet1 = GUICtrlCreateTabItem("Server")
    Global $LVUsers = GUICtrlCreateListView("Login|Vollständiger Name|Beschreibung|Telefon|P-Laufwerk", 20, 43, $win_w - 40 , $win_h - 140, -1, BitOR($WS_EX_CLIENTEDGE,$LVS_EX_GRIDLINES,$LVS_EX_FULLROWSELECT))
    ...

    [/autoit]

    Diese Listview wird durch Klick auf einen Button mit Werten aus dem AD gefüllt:

    Spoiler anzeigen
    [autoit]


    ... $sADOU = "ou=" & GUICtrlRead($ServerCombo) & ",ou=yyy,dc=xxx,dc=zzz,dc=de"
    if _getCheckboxState($SperrBox) <> 1 Then
    $aObjects = _AD_GetObjectsInOU($sADOU, "(&(objectcategory=person)(objectclass=user)(cn=*))", 2, "sAMAccountName,displayname,description,telephoneNumber,homeDirectory", "sAMAccountName")
    Else
    $aObjects = _AD_GetObjectsInOU($sADOU, "(&(objectcategory=computer)(objectclass=computer)(name=*))", 2, "cn, description")
    EndIf

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

    If @error > 0 Then
    MsgBox(64, "AD-Functions", "No OUs could be found")
    Else
    _GUICtrlListView_DeleteAllItems($LVUsers)

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

    For $i=1 To UBound($aObjects)-1

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

    if _getCheckboxState($SperrBox) = 1 Then
    GUICtrlCreateListViewItem($aObjects[$i][0] & "|"& $aObjects[$i][1], $LVUsers)
    Else
    if StringLen($aObjects[$i][0]) <= 6 Then
    GUICtrlCreateListViewItem($aObjects[$i][0] & "|"& $aObjects[$i][1]& "|"& $aObjects[$i][2]& "|"& $aObjects[$i][3]& "|"& $aObjects[$i][4], $LVUsers)
    EndIf
    EndIf

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

    Next

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

    EndIf
    ...

    [/autoit]

    Das funktioniert so weit auch, AAAAber:

    Das Füllen der ListView im TAB dauert bei ca. 270 Einträgen etwa 10-12 Sekunden.
    Wenn ich die Listview ausserhalb eines Tabs mit gleichem Code füllen lasse, sind das nur max. 2 Sekunden.

    Wo ist da ein Problem??

  • Hallo,

    danke.
    Verringert die Zeit erheblich jedoch seltsamerweise:

    Habe ich nur ein einzigen Tab auf der GUI geht das in ca. 1-2 Sekunden
    Habe ich mehrere Tabs (auf jeder sind Controls usw), dauert es wieder länger..
    Mache ich mehrere GUI-"Formulare" auf, geht das auch wieder sofort.

    also irgendwie bremst das TabCtrl doch aus..

    • Offizieller Beitrag

    Hast du mal eine lauffähiges Script zum testen?
    Werden nach dem erstellen der Tabs , diese mit GUICtrlCreateTabItem("") abgeschlossen?
    Benutzt du bei _GUICtrlListView_DeleteAllItems das Controlhandle oder die ControlId?