Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Lösung TListview eigene Farbe andere Icons für Aktive Items (https://www.delphipraxis.net/58244-loesung-tlistview-eigene-farbe-andere-icons-fuer-aktive-items.html)

100nF 4. Dez 2005 15:04

Re: Lösung TListview eigene Farbe andere Icons für Aktive It
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

die lösung war in der DP
ListView_GetSubItemRect(Sender.Handle, Item.Index, SubItem, LVIR_BOUNDS, @aTextRect);
soweit kam ich auch schon.

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:

etom291272 4. Dez 2005 15:09

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:

da die routine im oncustomdrawsubitem nur funktionierte wenn ich im oncustomdrawitem das Defaultdraw auf true liess (was natürlich nicht geht) hab ich versucht alles im oncustomdrawitem zu zeichnen und das ging

100nF 4. Dez 2005 15:20

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?

etom291272 4. Dez 2005 15:55

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

100nF 4. Dez 2005 16:25

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;

etom291272 4. Dez 2005 17:15

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)

100nF 4. Dez 2005 18:18

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:
  • columns hinzugefügt
  • items hinzugefügt
  • multiselect auf true gestellt
  • readonly auf true gestellt
  • rowselect auf true gestellt
  • viewstyle auf vsreport gestellt
dann habe ich beim code noch das image-zeugs entfernt, und so sieht er jetzt aus:
Delphi-Quellcode:
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;
ergebnis: siehe anhang.
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.

etom291272 4. Dez 2005 19:14

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

100nF 4. Dez 2005 19:53

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.

etom291272 4. Dez 2005 20:24

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 00:18 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz