Delphi-PRAXiS
Seite 1 von 2  1 2      

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 TListView, in 1. Spalte Rechteck in bestimmter Farbe (https://www.delphipraxis.net/114911-tlistview-1-spalte-rechteck-bestimmter-farbe.html)

hoika 2. Jun 2008 19:23


TListView, in 1. Spalte Rechteck in bestimmter Farbe
 
Hallo,

wie der Titel schon sagt,
will ich die erste Spalte eines ListViews farbich darstellen.

OnAdvancedCustomDrawItem: keine Info
AdvancedCustomDrawSubItem: nur SubItems

Wie geh ich vor ?


Danke

Heiko

mkinzler 2. Jun 2008 19:27

Re: TListView (Caption) 1. Spalte farbich
 
Was meinst du mit kein Info?

hoika 2. Jun 2008 19:39

Re: TListView (Caption) 1. Spalte farbich
 
Hallo,

ich will SubItem 0, also die 1. Spalte farbich machen,
keine Info = keine Ahnung, was gerade gemalt wird.

Bei AdvancedCustomDrawSubItem wird das SubItem übergeben,
aber leider erst ab 1 (also das 1. SubItem).


Heiko

mkinzler 2. Jun 2008 20:59

Re: TListView (Caption) 1. Spalte farbich
 
OnAdvancedCustomDrawItem gilt für ein Item und seine SubItems.
Soll, das für diese nicht gelten, sorg in AdvancedCustomDrawSubItem dafür

IceTube 2. Jun 2008 21:01

Re: TListView (Caption) 1. Spalte farbich
 
Würd so gehen denke ich

Delphi-Quellcode:

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
//Farbige Zeilen
(Sender As TListView).Canvas.Brush.Color := clSilver;
(Sender As TListView).Canvas.Font.Color := clBlack;
end;

procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
//SubItem Color
(Sender As TListView).Canvas.Brush.Color := clWhite;
lg

hoika 2. Jun 2008 21:06

Re: TListView (Caption) 1. Spalte farbich
 
allo,

mklinzler

< OnAdvancedCustomDrawItem gilt für ein Item und seine SubItems. >
< Soll, das für diese nicht gelten, sorg in AdvancedCustomDrawSubItem dafür >

Ich will aber nicht in den SubItems malen,
sondern in der Caption (1. Spalte)
Ich bin schin drauf und dran, ein Dummy-Caption (Width=0) zu nehmen,
um dann das SubItem=1 als sichtbare 1. Spalte zu nehmen.

< IceCube >
Ich will in der 1. Spalte ein farbiges Rechteck malen,
dein Code malt die komplette Zeile in der Farbe.

So mache ich es gerade als Notlösung.


Heiko

mkinzler 2. Jun 2008 21:10

Re: TListView (Caption) 1. Spalte farbich
 
So meinte ich das ja auch

IceTube 2. Jun 2008 21:11

Re: TListView (Caption) 1. Spalte farbich
 
:shock:

Also..schau mal

Zitat:

Zitat von hoika
...will ich die erste Spalte eines ListViews farbich darstellen.

dann...

Zitat:

Zitat von hoika
..ich will SubItem 0, also die 1. Spalte farbich machen

und jetzt...

Zitat:

Zitat von hoika
Ich will in der 1. Spalte ein farbiges Rechteck malen..

Zitat:

Zitat von hoika
dein Code malt die komplette Zeile in der Farbe.

1. Ich heiße IceTube(nicht IceCube)
2. Weißt du anscheind nicht was du willst wie ich dir es oben gezeigt habe
3. Stell die richtige Frage
4. Was solln die Klammern???
5. Titel passt dann nicht!!!

Edit:
Wenn du ein "Rechteck" in der Zeile haben willst dann schau dir Canvas an, oder du erzeugst ein "TShape" und berechnest die Größe,Breite,etc. und fügst das in die 1. Spalte der Listview ein!


:/

hoika 2. Jun 2008 21:19

Re: TListView (Caption) 1. Spalte farbich
 
Hallo IceTube (jaja ;))

Der Titel sagt, ich will die 1. Spalte farbich.
Sämtliche OnDrawItem Methoden geben entweder nur das Item zurück,
dann kann ich nur die Zeile komplett malen,
oder im Falle von AdvancedCustomDrawSubItem erlauben es nur,
die SubItems zu malen.

Das Caption (1. Spalte) wird in AdvancedCustomDrawSubItem gar nicht aufgerufen,
klar heisst ja auch SubItem.

Ich werden das jetzt mal mit dem Dummy-Caption probieren,
die 1. sichtbare Spalte ist dann also das 1. SubItem.

Es sieht so aus, als ob Caption (1. Spalte des ListView) was besonderes ist.

In einem StringGrid läßt sich das viel einfacher machen
(habe ich auch schon gemacht), nur das ListView ist bockig.

Bitte kein Spruch VST benutzen,
will ich später auch,
aber die Umstellung ist so gross,
dass ich erst mal ne Cover-Klasse dafür basteln muss,
um nicht den ganzen Code umstellen zu müssen.


Ok ein Edit ;)
OK, Camvas ist ja da.
Wie bekomme ich denn das Rechteck raus ?
Width ist z.B. 20.


Heiko

mkinzler 2. Jun 2008 21:36

Re: TListView, in 1. Spalte Rechteck in bestimmter Farbe
 
Delphi-Quellcode:
     rect := Item.DisplayRect(drBounds);
     Sender.Canvas.Brush.Color := clBlue;
     Sender.Canvas.DrawFocusRect( Rect);


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.
Seite 1 von 2  1 2      

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