AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TListView, in 1. Spalte Rechteck in bestimmter Farbe

TListView, in 1. Spalte Rechteck in bestimmter Farbe

Ein Thema von hoika · begonnen am 2. Jun 2008 · letzter Beitrag vom 3. Jun 2008
Antwort Antwort
Seite 2 von 2     12
IceTube
(Gast)

n/a Beiträge
 
#11

Re: TListView, in 1. Spalte Rechteck in bestimmter Farbe

  Alt 2. Jun 2008, 23:07
Soo..hab dich falsch verstanden, jedoch weiß ich glaube ich jetzt was du genau meintest..

Hab mal den Code geschrieben:

Delphi-Quellcode:
procedure TForm1.ListView1AdvancedCustomDraw(Sender: TCustomListView;
  const ARect: TRect; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var rect : Trect;
  begin
//Anpassen
rect.Left := Listview1.Column[0].Width;
rect.Top := ListView1.Top;

//Färbt die 2 Spalte
Sender.Canvas.Brush.Color := clWhite;
Sender.Canvas.Brush.Style := bsSolid;
Sender.Canvas.Pen.Style := psClear;
Sender.Canvas.Pen.Color := clBlack;

Sender.Canvas.FillRect(Rect);

end;

procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
(Sender As TListView).Canvas.Brush.Color := clWhite;
(Sender As TListView).Canvas.Font.Color := clBlack;
end;
Du musst halt noch die Sachen an dein Projekt anpassen, wichtig ist die ListView am anfang auf die Farbe zu setzen die du in der ersten Spalte haben möchtest...

lg
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: TListView, in 1. Spalte Rechteck in bestimmter Farbe

  Alt 3. Jun 2008, 07:54
Hallo,

danke, ich habe mich leider nicht genau ausgedrückt.
Die Farbe der Spalte soll natürlich in Abhängigkeit des
jeweiligen ListItems gefärbt werden.

Jetzt habe ich folgende Situation.

Delphi-Quellcode:
procedure TForm.LV_DataAdvancedCustomDraw(
  Sender: TCustomListView; const ARect: TRect; Stage: TCustomDrawStage;
  var DefaultDraw: Boolean);
ARect ist da, aber kein Item


Delphi-Quellcode:
procedure TForm.LV_DataAdvancedCustomDrawItem(
  Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
  Stage: TCustomDrawStage; var DefaultDraw: Boolean);
Item ist da, aber kein Rect, Item.DisplayRect (drLabel) bringt auch nichts.

Da muss ich wohl wirklich auf VST umsteigen,
Mann, Mann, Mann ;(


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: TListView, in 1. Spalte Rechteck in bestimmter Farbe

  Alt 3. Jun 2008, 09:16
Zitat von hoika:
Item ist da, aber kein Rect, Item.DisplayRect (drLabel) bringt auch nichts.
Warum bringt das nichts, habe es ausprobiert und es brachte was:
Angehängte Dateien
Dateityp: zip advancedcustomdrawstate_141.zip (6,7 KB, 18x aufgerufen)
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: TListView, in 1. Spalte Rechteck in bestimmter Farbe

  Alt 3. Jun 2008, 09:39
Hallo,

ahhhh,
nichts bringen war falsch ausgedrückt,
er hatte immer die komplette Ziele gefärbt.

Delphi-Quellcode:
Sender.Canvas.FillRect(r);
Sender.Canvas.Font.Color := Graphics.clBtnText;
Sender.Canvas.TextOut(r.Left + 2, r.Top, Item.Caption);
Sender.Canvas.Brush.Color := TListView(Sender).Color;
die letzte Zeile ist wichtig !

und hier noch mal der Code zum kopieren

Delphi-Quellcode:
procedure TForm.LV_DataAdvancedCustomDrawItem(
  Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
  Stage: TCustomDrawStage; var DefaultDraw: Boolean);
var
  Rect : TRect;
 // ListItem.Data contains our own class
  DataItem : TDataItem;
begin
  DataItem:= Item.Data;
  if DataItem<>NIL then
  begin
    if DataItem.iColor>-1 then
    begin
      begin
        Rect:= Item.DisplayRect(drLabel);
        Sender.Canvas.Brush.Color := DataItemm.iColor;
        Sender.Canvas.FillRect(Rect);
        Sender.Canvas.Brush.Color := TListView(Sender).Color;

        Exit;
      end;
    end;
  end;
end; { LV_DataAdvancedCustomDrawItem }
Deine Unterscheidung nach selected oder nicht habe ich übrigens
absichtlich nicht drin, damit beim Blättern immer die Farbe angezeigt wird.


1000 Dank

jipppiiii



Heiko
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:33 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