![]() |
Nur ein kleines färbiges Kästchen in der ListView zeichnen..
Hallo Leute!!
Ich habe folgenden Code zum befüllen eines gesamten ListView-Items, was auch reibungslos funktioniert:
Delphi-Quellcode:
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...
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; ![]() 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: ![]() 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: ![]() Das will ich schon gar nicht, einen Rahmen um das gesamte Item!! Na gut dann halt einen Rahmen in der Farbe des cremefarbenen Hintergrundes: ![]() Macht er wieder einen Rahmen um alles!! Hilfe!! Wie macht man das?? :zwinker: LG Thomas |
Re: Nur ein kleines färbiges Kästchen in der ListView zeichn
Keiner eine Idee?? :?:
|
Re: Nur ein kleines färbiges Kästchen in der ListView zeichn
Hallo Thomas,
wenn du ein kleines Demo-Projekt vorbereitest, dann kommen die Ideen leichter. Freundliche Grüße |
Re: Nur ein kleines färbiges Kästchen in der ListView zeichn
Wir haben uns dann doch für eine andere Form der Darstellung entschieden...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz