AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Lösung TListview eigene Farbe andere Icons für Aktive Items
Thema durchsuchen
Ansicht
Themen-Optionen

Lösung TListview eigene Farbe andere Icons für Aktive Items

Ein Thema von etom291272 · begonnen am 4. Dez 2005 · letzter Beitrag vom 9. Dez 2005
Antwort Antwort
Seite 2 von 4     12 34      
100nF

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

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

  Alt 4. Dez 2005, 16:04
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

also dein screenshot sieht schon schöner aus als meiner

was ist das problem?

ach ja, danke für den link (button)
aber könntest du noch den direktlink posten, ich weiss nicht recht was ich da genau downloaden muss...
EDIT: habs gefunden
Miniaturansicht angehängter Grafiken
listview_132.jpg  
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#12

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

  Alt 4. Dez 2005, 16:09
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
  Mit Zitat antworten Zitat
100nF

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

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

  Alt 4. Dez 2005, 16:20
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?
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#14

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

  Alt 4. Dez 2005, 16:55
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
  Mit Zitat antworten Zitat
100nF

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

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

  Alt 4. Dez 2005, 17:25
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;
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#16

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

  Alt 4. Dez 2005, 18:15
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)
Miniaturansicht angehängter Grafiken
eitslistvganz_905.jpg  
  Mit Zitat antworten Zitat
100nF

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

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

  Alt 4. Dez 2005, 19:18
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.
Miniaturansicht angehängter Grafiken
listview_758.jpg  
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#18

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

  Alt 4. Dez 2005, 20:14
der grund ist rowselect gehört auf false das zeichnen der markierungen machen wir ja selber
  Mit Zitat antworten Zitat
100nF

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

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

  Alt 4. Dez 2005, 20:53
habe jetzt rowselect auf false gestellt, funzt aber immernoch nicht.

ich hänge mal mein test-projekt an, kannst es ja mal anschauen.
Angehängte Dateien
Dateityp: rar listview_350.rar (196,0 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
etom291272

Registriert seit: 16. Feb 2004
Ort: ---
232 Beiträge
 
#20

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

  Alt 4. Dez 2005, 21:24
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
Miniaturansicht angehängter Grafiken
deinelistvmitpanel_198.jpg  
Angehängte Dateien
Dateityp: zip listview_679.zip (249,2 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.
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