Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   TListView - Zellen verbinden (https://www.delphipraxis.net/174761-tlistview-zellen-verbinden.html)

tofse 8. Mai 2013 14:11

TListView - Zellen verbinden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe eine TListView mit
Delphi-Quellcode:
ViewStyle:=vsReport;
GridLines:=true;
In manchen Zeilen sollen die Zellen mit verschiedener Hintergrundfarbe verbunden werden.
Ich verwende
Delphi-Quellcode:
procedure TKabOpTerminManager.ListViewSucheCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var x,y:Integer;
    Rect:TRect;
begin
  if TMiniTermin(Item.Data).InfoText<>'' then
  begin
    Sender.Canvas.Brush.Color:=stringToColor(TMiniTermin(Item.Data).Farbe);
    Rect:=Item.DisplayRect(drBounds);
    y:= Rect.Top;
    x:= Rect.Left + 2;
    Rect.Right:=Rect.Left+Sender.Width-10;
    Sender.Canvas.Brush.Style := bsSolid;
    Sender.Canvas.FillRect(Rect);
    Sender.Canvas.TextRect( Rect, x, y, TMiniTermin(Item.Data).InfoText );
  end;
end;
Das Problem ist nun, dass 1. die GridLines angezeigt werden und 2. der Text nicht erscheint.
Erst wenn ich die Maus "wild" über die Fläche bewege, wird die Zeile irgendwann ausgefüllt und der Text wird sichtbar.

Ich hatte es auch schon mit OwnerDraw:=true und onDrawItem versucht, da erscheint der Text zwar von Anfang an, aber die Gridlines sind dennoch sichtbar.

Hat jemand eine Idee??
Christof

Helmi 8. Mai 2013 15:27

AW: TListView - Zellen verbinden
 
Hallo,

vielleicht hilft dir dieser Link weiter

[Edit]
sorry - Missverständnis! - das hilft dir nicht wirklich weiter

[Edit2]

ich hätte noch diesen Beispiel-Code anzubieten:
Delphi-Quellcode:
procedure TForm3.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
var
  x, y: Integer;
  Rect: TRect;

begin
  Sender.Canvas.Brush.Color := clRed;

  If Item.Selected then
    begin
      Sender.GridLines := false;
      Sender.Canvas.Brush.Color := clBlue;
      Sender.Canvas.Brush.Style := bsSolid;
    end;

  Rect := Item.DisplayRect(drBounds);
  y := Rect.Top;
  x := Rect.Left + 2;
//      Rect.Right := Rect.Left + Sender.Width - 10;

  Sender.Canvas.FillRect(Rect);
  Sender.Canvas.TextRect( Rect, x, y, Item.Caption );

  //
  DefaultDraw := false;
end;
Im nicht markierten Zustand Hintergrundfarbe rot, im markierten Zustand blau und dann ohne GridLines.
Dummerweise scheint es nicht ohne alle auszublenden zu funktionieren.

tofse 8. Mai 2013 19:45

AW: TListView - Zellen verbinden
 
Hallo und danke,
werde es am Freitag in der Arbeit testen.

tofse 10. Mai 2013 06:34

AW: TListView - Zellen verbinden
 
Hallo,
funktioniert leider nicht wie gewünscht.
Die "verbundenen" Zellen werden auch in dieser Variante durch die Gridlines "getrennt".
Ich denke, ich stelle auf ein StringGrid um.

Trotzdem danke
Christof


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 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