Möglichkeit CoboBox/ListView-Inhalte unterschiedliches Design zuweißen

  • Hallo AutoBert,

    danke für deine schnelle Antwort. Hab _GUIImageList_AddBitmapEx von UEZ gefunden und bin schon dabei zu testen. ein sehr viel versprechende UDF
    vielen dank!

    noch ne frage wie steht es mit ListBoxen?
    ist es dort einfacher 2 Farben anzeigen zu lassen?

    brauche in einer ListBox bestimmte werte in rot und andere in grün
    mit GUICtrlSetColor kann man die Farbe ja problemlos ändern jedoch kann man keine 2. festlegen in dem schema:

    [autoit]

    $ListBox = GUICtrlCreateList ("", 8, 115, 164, 670)
    GUICtrlSetData(-1, $Data_in_gruen)
    GUICtrlSetColor(-1, 0x22C21F)
    GUICtrlSetData(-1, $Data_in_rot)
    GUICtrlSetColor(-1, 15604771)

    [/autoit]

    Einmal editiert, zuletzt von Inferior (18. Juli 2010 um 19:32)

  • Hallo inferior,

    auch da ist mir keine bekannt, dies kannst du aber durch Verwenden einer ListView umgehen- Da du dort ja eine ConrolID für das einfügte Item zurückbekommst kannst du jedes Item einzeln einfärben.

    mfg (Auto)Bert

  • an sich ist das mit ListView eine Sache mit der ich schon gut leben könnte..

    hier mal ein Beispiel:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ListviewConstants.au3>

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

    $msg = GUICreate("", 200, 800)
    $listview = GUICtrlCreateListView("Online ", 10, 20, 180)
    GUICtrlCreateListViewItem("Hans", $listview)
    GUICtrlSetColor(-1, 0x22C21F)
    GUICtrlCreateListViewItem("Fritz", $listview)
    GUICtrlSetColor(-1, 0x22C21F)
    GUICtrlCreateListViewItem("Peter", $listview)
    GUICtrlSetColor(-1, 0x22C21F)

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

    $listview2 = GUICtrlCreateListView("Offline ", 10, 200, 180)
    GUICtrlCreateListViewItem("Mina", $listview2)
    GUICtrlSetColor(-1, 0xAA0000)
    GUICtrlCreateListViewItem("Hannelore", $listview2)
    GUICtrlSetColor(-1, 0xAA0000)
    GUICtrlCreateListViewItem("Anna", $listview2)
    GUICtrlSetColor(-1, 0xAA0000)
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    jedoch würde ich das gern in einer ListView haben aber mit zwei Unterteilungen mit Offline und Online
    geht das?
    wenn nun bei "online" mehr dazu kommen wird die Listview größer und wird irgendwann die "offline"-listview überlappen :(

    Einmal editiert, zuletzt von Inferior (18. Juli 2010 um 20:07)

  • Hallo inferior,

    du kannst ja alle Einräge in einer ListView führen und diese dann nach OFF-/ON sortieren. Hier ein Beispiel-Skript:

    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <ListviewConstants.au3>
    #include <array.au3>

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

    Dim $aNames[20][2]
    $aNames[0][0] = "Jürgen"
    $aNames[1][0] = "Peter"
    $aNames[2][0] = "Bert"
    $aNames[3][0] = "Christina"
    $aNames[4][0] = "Alex"
    $aNames[5][0] = "Roberta"
    $aNames[6][0] = "Roberto"
    $aNames[7][0] = "Heinz"
    $aNames[8][0] = "Iwan"
    $aNames[9][0] = "Kurt"
    $aNames[10][0] = "Hans"
    $aNames[11][0] = "Peter II."
    $aNames[12][0] = "Tina"
    $aNames[13][0] = "Michael"
    $aNames[14][0] = "Gunnar"
    $aNames[15][0] = "Kurt II."
    $aNames[16][0] = "Gerald"
    $aNames[17][0] = "Alfred"
    $aNames[18][0] = "Stefanie"
    $aNames[19][0] = "Nicole"
    Dim $aItems[20]

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

    $msg = GUICreate("", 200, 400)
    $listview = GUICtrlCreateListView("Name|Status", 10, 10, 180, 350)
    For $i = 0 To 19
    $aItems[$i] = GUICtrlCreateListViewItem($aNames[$i][0] & "|Offline", $listview)
    Next
    _GUICtrlListView_SetColumnWidth($listview,0,140)
    _GUICtrlListView_SetColumnWidth($listview,1,40) ;0 = unsichtbar
    _GUICtrlListView_RegisterSortCallBack($listview)

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

    AdlibRegister("_RandomOnOff")

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

    GUISetState(@SW_SHOW)

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

    ;GUICtrlSetColor(-1, 0x22C21F)
    ;GUICtrlSetColor(-1, 0xAA0000)

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    _GUICtrlListView_UnRegisterSortCallBack($ListView)
    Exit
    EndSwitch
    WEnd

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

    Func _RandomOnOff()
    _GUICtrlListView_BeginUpdate($ListView)
    For $i = 0 To 19
    $iItem = _GUICtrlListView_FindText ($listview,$aNames[$i][0],-1,False,True)
    If Random(1, 3, 1) = 1 Then
    $aNames[$i][1]="Off"
    Else
    $aNames[$i][1]="On"
    EndIf
    Next
    For $i = 0 To 19
    $iItem = _GUICtrlListView_FindText ($listview,$aNames[$i][0],-1,False,True)
    If $aNames [$i][1] = "Off" Then
    GUICtrlSetData($aItems[$iItem],"|Off")
    GUICtrlSetBkColor($aItems[$iItem], 0xAA0000)
    Else
    GUICtrlSetData($aItems[$iItem],"|On")
    GUICtrlSetBkColor($aItems[$iItem], 0x22C21F)
    EndIf
    Next
    _GUICtrlListView_SortItems($listview, 0)
    _GUICtrlListView_SortItems($listview, 1)
    _GUICtrlListView_EndUpdate($ListView)
    AdlibRegister("_RandomOnOff",Random(5000,10000,1))
    EndFunc ;==>_RandomOnOff

    [/autoit]

    oder du machst die LVs nebeneinander

    Edit: Skript ausgetauscht

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (18. Juli 2010 um 23:40)