Tut brauchst du keines. Such einfach nach den drawitem (Listbox, Combobox) oder zur not auch Drawcell-ereignissen im Forum. Läuft alles mehr oder weniger nach dem gleichen Muster ab. Measureitem wäre noch was fürs festlegen der Höhe, wenn das gewünscht ist.
Ein simples Beipiel wäre:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TForm1.test21DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); begin if selected then begin ACanvas.Brush.Color := clred; ACanvas.FillRect(ARect); Acanvas.TextRect(ARect,ARect.Left+2,ARect.top+2,(Sender as TMenuItem).Caption); end else begin ACanvas.Brush.Color := clblue; ACanvas.FillRect(ARect); Acanvas.TextRect(ARect,ARect.Left+2,ARect.top+2,(Sender as TMenuItem).Caption); end; end; |
Einfach allen/deinen gewünschten Items dieses Ereignis zuordnen, oder du tust das per code zur laufzeit
statt dem Hintergrund kannst du auch ein Bildmalen und den Text transparent drüberlegen (brush:=bsclear);
Allerdings habe ich es immer vermieden, im menu rumzupinseln. Erstens sieht es meist nicht schick aus, wenn die Systemvorgaben ignoriert werden und zweitens mußt du dich dann auch ums Zeichnen der Unterstriche, der Shortcuts und der images kümmern. und wenn du da an alles denken willst, hast du was vor.
Mfg Frank