selber ZEICHNEN reicht nicht .. du musst der aufgeklappten Liste eine neue Windows-Prozedur verpassen, in der Du dann prüfen kannst, ob beim Klick der aktuelle Eintrag evtl disabled ist.
Dazu musst Du folgendes machen.
1. ListHandle Property überschreiben und dein eigenes
Handle zurückgeben, bzw die eigene Set-Methode rufen
2. Im Konstruktor mit
pListInstance := MakeObjectInstance(ListWndProc);
einen Zeiger auf deine eigene ListWindowProc geben lassen (geht aber nicht im .net!)->member der Klasse
3. Im SetListHandle mit
pDefListProc := Pointer(GetWindowLong(hListHandle, GWL_WNDPROC));
die ursprüngliche WindowProc in ner Membervariable speichern(das übergebene HWND auch) und mit
SetWindowLong(hListHandle, GWL_WNDPROC, Longint(pListInstance));
deine eigene WindowProc dem Listhandle zuweisen.
4. jetzt endlich kannst Du in Deiner eigenen ListWindowProc prüfen, ob der Klick zufällig auf ein disabled eintrag fällt. In diesem Fall wirfst Du die Nachricht einfach weg, anderenfalls rufst du die DefListProc mit
Result := CallWindowProc(pDefListProc, ListHandle, Msg, WParam, LParam);
auf.
selber Zeichnen musst du aber trotzdem in ner überschriebenen DrawItem
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>