Delphi-PRAXiS

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 VST als Listview - Spalte nur mit Bild (https://www.delphipraxis.net/128644-vst-als-listview-spalte-nur-mit-bild.html)

deadcantdance 3. Feb 2009 11:07


VST als Listview - Spalte nur mit Bild
 
Hi,

ich benutze einen VST als Listview. In die erste Spalte soll nur ein Icon rein, die Spalte hat eine feste Breite (kann auch nicht geändert werden).

Nun habe ich allerdings das Problem, dass das Bild nicht zentriert in der Spalte ist, sondern im rechten Drittel gezeichnet wird. Column.Alignment hat leider auch keinen Einfluss auf die Bildposition.

Hat jemand noch eine Idee?

Viele Grüße,
deadcantdance

nuclearping 3. Feb 2009 11:13

Re: VST als Listview - Spalte nur mit Bild
 
Wie stellst du das Bild dar? Maße des Bildes passen auch mit der ImageList zusammen?

generic 3. Feb 2009 11:55

Re: VST als Listview - Spalte nur mit Bild
 
Im Zweifelsfall mit den Paint Ereignissen selbst malen. Die ImageList hat dazu auch paar nette Funktionen.

deadcantdance 3. Feb 2009 12:00

Re: VST als Listview - Spalte nur mit Bild
 
Die Bilder kommen aus der ImageList, ich weise dem Knoten einfach nur einem Image-Index zu.

nuclearping 3. Feb 2009 12:02

Re: VST als Listview - Spalte nur mit Bild
 
In OnGetImageIndex? Wie schonmal gefragt: Maße der ImageList (Width und Height) passen mit den Bildern zusammen?

deadcantdance 3. Feb 2009 12:05

Re: VST als Listview - Spalte nur mit Bild
 
Richtig, genau dort wird der Index zugewiesen. Maße stimmen überein (16x16).

uligerhardt 3. Feb 2009 13:22

Re: VST als Listview - Spalte nur mit Bild
 
Ich hab sowas mal mit OnAfterCellPaint gemacht:
Delphi-Quellcode:
procedure TForm1.VTAfterCellPaint(
  Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode;
  Column: TColumnIndex; CellRect: TRect);
begin
  if Column = cImageColumn then
  begin
    if Node = VT.HotNode then
    begin
      TargetCanvas.Brush.Color := clBtnFace;
      TargetCanvas.Font.Color := clBtnText;
      DrawEdge(TargetCanvas.Handle, CellRect, BDR_RAISEDINNER, BF_RECT or BF_MIDDLE);
    end;
    ImageList.Draw(TargetCanvas, CellRect.Left + 2, CellRect.Top + 2, 0);
  end;
end;
HTH,
Uli

deadcantdance 3. Feb 2009 14:45

Re: VST als Listview - Spalte nur mit Bild
 
Danke, das funktioniert hervorragend!


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