![]() |
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
das resultat von deinem und meinem code war das gleiche, allerdings nicht das gleiche wie auf deinem screenshot :gruebel: also dein screenshot sieht schon schöner aus als meiner :mrgreen: was ist das problem? ach ja, danke für den link (button) :angel: aber könntest du noch den direktlink posten, ich weiss nicht recht was ich da genau downloaden muss... EDIT: habs gefunden :stupid: |
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
das kommt raus wenn sich die defaultdraw gegenseitig stören darum habe ich allen code nur im drawitem und zeichne dort die items und alle subitems
Zitat:
|
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
und was müsste ich jetzt tun?
ach ja, wegen den rbControls: sieht aus als würde es nicht für delphi 7 gehen, oder soll ich mal die package für D6 öffnen? |
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
rb controls gehen super über delphi7 (hab delphi7)
du musst allen zeichencode im oncustomdrawiten und nicht subitem haben wenn das nicht hilft poste mal code |
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
also ich habe alles im oncustomdrawitem, hier der code:
Delphi-Quellcode:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var aTextRect, aIconRect:TRect; subitem: integer; begin if (Item.Index=TListView(Sender).ItemIndex) or (TListView(Sender).ItemFocused=Item) or (Item.selected) then begin DefaultDraw:=false; aIconRect:=Item.DisplayRect(drBounds); aTextRect:=Item.DisplayRect(drLabel); with Sender do begin Canvas.Pen.Color := $00CDEFE9; Canvas.Brush.Color := $00CDEFE9; Canvas.Rectangle(aTextRect); aTextRect.Left:=aTextRect.Left+2; Windows.DrawText(Canvas.Handle, @Item.Caption[1], Length(Item.Caption), aTextRect, DT_VCENTER); Canvas.Brush.Color:=$008FC2B3; Canvas.FrameRect(aTextRect); TListView(Sender).SmallImages.Draw(Canvas,aIconRect.Left+2 ,aIconRect.Top,1); for SubItem:=1 to Item.SubItems.Count do begin ListView_GetSubItemRect(Sender.Handle, Item.Index, SubItem, LVIR_BOUNDS, @aTextRect); if TListView(Sender).ViewStyle=vsReport then begin with Sender do begin Canvas.Pen.Color := $00CDEFE9; Canvas.Brush.Color := $00CDEFE9; aTextRect.Left:=aTextRect.Left+2; Canvas.Rectangle(aTextRect); Windows.DrawText(Canvas.Handle, @Item.SubItems[SubItem-1][1], Length(Item.SubItems[SubItem-1]), aTextRect, DT_VCENTER); Canvas.Brush.Color:=$008FC2B3; Canvas.FrameRect(aTextRect); end; end; end; end; end; end; |
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
Liste der Anhänge anzeigen (Anzahl: 1)
:?: :?: :?: :?: :?: :?: :?: :?: bahnhof
ich hab den code den du gepostet hast mit copy und paste eingefügt und dass kam dabei raus (anlage) shick mal nen kompletten screenshot vielleich sehe ich dann was (1024x768) |
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
Liste der Anhänge anzeigen (Anzahl: 1)
also ich habe jetzt mal ein neues projekt gemacht, eine listview auf die form plaziert, und diese eigenschaften verändert:
Delphi-Quellcode:
ergebnis: siehe anhang.
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); var aTextRect:TRect; subitem: integer; begin if (Item.Index=TListView(Sender).ItemIndex) or (TListView(Sender).ItemFocused=Item) or (Item.selected) then begin DefaultDraw:=false; aTextRect:=Item.DisplayRect(drLabel); with Sender do begin Canvas.Pen.Color := $00CDEFE9; Canvas.Brush.Color := $00CDEFE9; Canvas.Rectangle(aTextRect); aTextRect.Left:=aTextRect.Left+2; Windows.DrawText(Canvas.Handle, @Item.Caption[1], Length(Item.Caption), aTextRect, DT_VCENTER); Canvas.Brush.Color:=$008FC2B3; Canvas.FrameRect(aTextRect); for SubItem:=1 to Item.SubItems.Count do begin ListView_GetSubItemRect(Sender.Handle, Item.Index, SubItem, LVIR_BOUNDS, @aTextRect); if TListView(Sender).ViewStyle=vsReport then begin with Sender do begin Canvas.Pen.Color := $00CDEFE9; Canvas.Brush.Color := $00CDEFE9; aTextRect.Left:=aTextRect.Left+2; Canvas.Rectangle(aTextRect); Windows.DrawText(Canvas.Handle, @Item.SubItems[SubItem-1][1], Length(Item.SubItems[SubItem-1]), aTextRect, DT_VCENTER); Canvas.Brush.Color:=$008FC2B3; Canvas.FrameRect(aTextRect); end; end; end; end; end; end; mach doch auch mal ein leeres projekt auf, und ändere die selben eigenschaften wie ich. dann fügst du genau den selben code rein und schaust was rauskommt. vielleicht ist in deinem projekt noch mehr code drin, der irgendwas an der listview verändert, oder es ist irgend eine eigenschaft anders eingestellt als bei mir. |
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
der grund ist rowselect gehört auf false das zeichnen der markierungen machen wir ja selber
|
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
Liste der Anhänge anzeigen (Anzahl: 1)
habe jetzt rowselect auf false gestellt, funzt aber immernoch nicht.
ich hänge mal mein test-projekt an, kannst es ja mal anschauen. |
Re: Lösung TListview eigene Farbe andere Icons für Aktive It
Liste der Anhänge anzeigen (Anzahl: 2)
habs gefunden aber dass versteh einer wenn einmal ein echter guru diesen beitrag lest mich würde brennend interessieren warum sich das so verhält.
bei mir gings weil ich ein panel mit der selben farbe darunter habe als die helle markierung in der listview hab dein projekt angehängt mit dem notwendigen panel und einen shot wies bei mir jetzt aussieht |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:57 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