- Offizieller Beitrag
Hi,
ich habe
hier meine HEX-Code Tabelle eingestellt.
Dabei besteht noch folgendes Problem:
Die Liste kann in drei verschiedenen Sortierfolgen angezeigt werden. Da kann ich auch beliebig zwischen wechseln - funktioniert.
Wurde aber das Ereignis "$GUI_EVENT_SECONDARYDOWN" ausgewertet (Kontextmenü zum Kopieren) und ich will anschließend erneut eine andere Sortierung wählen, wird zwar die richtige Reihenfolge aufgelistet aber die Befehle für Setzen der Hintergrund- und Fontfarbe der Items werden nicht ausgeführt.
Spoiler anzeigen
;.....
Dim $arColors[140][5] ; 0=Name, 1=Hex, 2=Sortier-Index Sättigung/Farbton, 3=Sortier-Index Helligkeit, 4= wenn 1 Schrift weiß
;.....
$Form1 = GUICreate("HEX-Code Farbtabelle", 415, 683, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "SpecialEvents")
;.....
Func rNameClick()
_GUICtrlListViewDeleteAllItems($ListView1)
_SetData(0)
EndFunc
Func rSattClick()
_GUICtrlListViewDeleteAllItems($ListView1)
_SetData(2)
EndFunc
Func rHellClick()
_GUICtrlListViewDeleteAllItems($ListView1)
_SetData(3)
EndFunc
Func _SetData($SortIndx)
_ArraySort($arColors, 0, 0, 0, 5, $SortIndx)
For $i = 0 To UBound($arColors)-1
$arItem[$i] = GUICtrlCreateListViewItem( "|" &$arColors[$i][0] & "|0x" & Hex($arColors[$i][1],6), $ListView1)
If $arColors[$i][4] = 1 Then GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1,$arColors[$i][1])
Next
EndFunc
;.....
Func SpecialEvents()
If @GUI_CTRLID = $GUI_EVENT_SECONDARYDOWN Then
If ControlGetFocus($Form1, "HEX-Code Color Table") = "SysListView321" Then
$ind = _GUICtrlListViewGetCurSel($ListView1)
$col = _GUICtrlListViewGetItemText($ListView1, $ind, 1)
$hex = _GUICtrlListViewGetItemText($ListView1, $ind, 2)
If $arColors[$ind][4] = 1 Then
GUISetBkColor($PaleGreen, $GUICopy)
GUICtrlSetColor($lbShowColor, 0xFFFFFF)
Else
GUISetBkColor($Navy, $GUICopy)
GUICtrlSetColor($lbShowColor, 0x000000)
EndIf
GUICtrlSetBkColor($lbShowColor, $arColors[$ind][1])
GUICtrlSetData($lbShowColor, $arColors[$ind][0])
GUISetState(@SW_SHOW, $GUICopy)
EndIf
EndIf
EndFunc
;.....
:hm:
EDIT
So, hab nun auch versucht mit "WM_NOTIFY event handler" über SingleClick, DoubleClick oder RightClick auszuwerten.
Es ist völlig Banane, welches Ereignis ich auswerte - hinterher funktioniert die Farbsetzung nicht mehr. :weinen:
EDIT2
Ha, ich habs gefunden.
Ist zwar für mich nicht erklärbar warum es so ist, aber hier liegt der Fehler:
$arItem[$i] = GUICtrlCreateListViewItem( "|" &$arColors[$i][0] & "|0x" & Hex($arColors[$i][1],6), $ListView1)
If $arColors[$i][4] = 1 Then GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1,$arColors[$i][1])
Mit -1 beziehe ich mich auf das zuvor erstellte ListViewItem.
Aber das versagt nach einem Event. Setze ich dafür $arItem[$i] ein, dann funktioniert es!