Einzelnen Beitrag anzeigen

100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#33

Re: Lösung TListview eigene Farbe andere Icons für Aktive It

  Alt 8. Dez 2005, 21:01
ups, ich glaube ich habe den rahmen mit der gleichen farbe wie der hintergrund gezeichnet

nun habe ich aber noch ein problem...
ich habe es zuerst so gemacht:
wenn das vorherige item markiert ist, soll der obere rahmen nicht gezeichnet werden,
und wenn das untere item markiert ist, soll der untere rahmen nicht gezeichnet werden.
wenn aber die items nacheinander von oben nach unten oder von unten nach oben markiert werden, wird logischerweise immer der untere oder der obere rahmen gezeichnet, und im endeffekt sieht man dann die horizontalen rahmen-linien trotzdem.

dann hatte ich eine andere idee:
wenn das vorherige item markiert ist, soll der untere rahmen vom vorherigen item mit der hintergrundfarbe übermalt werden. klappte aber irgendwie auch nicht, hier der code:
Delphi-Quellcode:
if item.Index > 0 then
  if tlistview(sender).Items.Item[item.Index-1].Selected = true then
  begin
    aVorherRect := tlistview(sender).Items.Item[item.index-1].DisplayRect(drLabel);
    Canvas.Pen.Color := listviewItemBackColor;
    Canvas.Brush.Color := listviewItemBackColor;
    aVorherRect.Left:=aVorherRect.Left+2;
    aVorherRect.Right := aVorherRect.Right+6;
    canvas.MoveTo(aVorherRect.right, aVorherRect.bottom);
    canvas.LineTo(aVorherRect.left, aVorherRect.bottom);
  end;
EDIT: ich habe jetzt herausgefunden, dass wenn man mehrere items mit der maus markiert (also so ein gestricheltes viereck zieht), dass die eigenschaft selected der markierten items erst true wird, wenn die maus losgelassen wird. so funktioniert mein code natürlich auch nicht...
aber wenn man mehrere items mit der Shift-taste markiert, funktionierts wunderbar (siehe anhang)
Miniaturansicht angehängter Grafiken
listview2_109.jpg   listview1_186.jpg  
  Mit Zitat antworten Zitat