Hallo Leute!!
Ich habe folgenden Code zum befüllen eines gesamten ListView-Items, was auch reibungslos funktioniert:
Delphi-Quellcode:
procedure TfmLeistungB.lvDataAdvancedCustomDrawSubItem(
Sender: TCustomListView; Item: TListItem; SubItem: Integer;
State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
var
lRect : TRect;
lText : PChar;
lDetail : TStundenrasDetail;
lFontColor : TColor;
lBKGColor : TColor;
lColor : TColor;
begin
inherited;
(* Die 7. Spalte zeichnen (Farbbox zeichnen, Text setzen)!! *)
if SubItem = 7
then begin
(* Rect des Subitems ermitteln und anpassen *)
ListView_GetSubItemRect(Sender.Handle, Item.
Index, SubItem, LVIR_BOUNDS, @lRect);
lRect.Top := lRect.Top - 1;
lRect.Bottom := lRect.Bottom + 1;
lRect.Right := lRect.Right - 1;
with Sender.Canvas
do begin
(* Rahmen zeichnen *)
lColor := clBlack;
Brush.Color := lColor;
FrameRect(lRect);
(* Anpassen für Hintergrund zeichnen *)
Inc(lRect.Left, 1);
Inc(lRect.Top);
Dec(lRect.Bottom);
Brush.Color := ColorEvenLine;
FillRect(lRect);
(* Text schreiben *)
Font.Color := clWhite;
lText := PChar('
1');
SetBkMode(
Handle, Transparent);
DrawText(
Handle, lText, Length(lText), lRect, DT_LEFT + DT_SINGLELINE + DT_VCENTER);
end;
DefaultDraw:=false;
end else
DefaultDraw:= true;
end;
Nun möchte ich zwar auch das komplette SubItem zeichnen, muß ich ja auch (weil DefaultDraw := false
aber irgendwie hab ich Probleme mein gewünschtes Ziel zu erreichen nämlich...
http://www.bos.at/downloads/ListView4.jpg
Probleme hab ich vorwiegend mit den Linien, die ich einfach nicht brauchen kann...
Wenn ich den Code so lasse, wie oben, sieht es so aus:
http://www.bos.at/downloads/ListView1.jpg
Bis auf die Umrahmung des SubItems wär das ja schon ein brauchbarer Hintergrund.
Interessant wird es wenn ich die 3 Zeilen unter 'Rahmen zeichnen' im Code weglasse (also FrameRect, etc.) - weil wiegesagt Rahmen will ich ja eigentlich keinen, dann kommt das:
http://www.bos.at/downloads/ListView2.jpg
Das will ich schon gar nicht, einen Rahmen um das gesamte Item!!
Na gut dann halt einen Rahmen in der Farbe des cremefarbenen Hintergrundes:
http://www.bos.at/downloads/ListView3.jpg
Macht er wieder einen Rahmen um alles!!
Hilfe!! Wie macht man das??
LG
Thomas