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/)
-   -   VirtualImageList Image in VirtualTreeview Background zeichnen (https://www.delphipraxis.net/216203-virtualimagelist-image-virtualtreeview-background-zeichnen.html)

TurboMagic 19. Nov 2024 20:07

VirtualImageList Image in VirtualTreeview Background zeichnen
 
Hallo,

wie bekomme ich ein Bild aus einer TVirtualImageList in z. B. die rechte untere Ecke
des Backgrounds eines TVirtualTreeView?

Hier mein bisheriger Versuch im Event das beim Anklicken eines Knotens aufgerufen wird:
vst_Menu ist dabei das TVirtualTreeView

Delphi-Quellcode:
procedure Tf_Settings.vst_MenuFocusChanged(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex);
var
  bmp: TBitmap;
  ImageIndex : Integer;
  Dest:TRect;
begin
  ImageIndex := 0;

  bmp := TBitmap.Create;
  try
    VirtualImageListLeft.GetBitmap(ImageIndex, bmp);

    Dest := TRect.Create(0, 0, vst_Menu.Height-bmp.Height,
                         bmp.Width, bmp.Height);

    vst_Menu.Background.Bitmap.Canvas.CopyRect(
      Dest,
      bmp.Canvas,
      TRect.Create(0, 0, bmp.Width, bmp.Height));
  finally
    bmp.Free;
  end;
end;
Auf dem Bilschirm ist von diesem Hintergrund jedoch nix zu sehen... :-(

Uwe Raabe 19. Nov 2024 20:48

AW: VirtualImageList Image in VirtualTreeview Background zeichnen
 
Warum verwendest du nicht einfach eines der Draw-Overloads der Imagelist?

TurboMagic 20. Nov 2024 17:32

AW: VirtualImageList Image in VirtualTreeview Background zeichnen
 
Hallo,

hab' ich probiert aber ohne Erfolg.

z. B. so:

FBGImageIndex ist der Index des zu zeichnenden Bildes.
OnPaintBackground wird aufgerufen und enthält folgende Codezeile, wobei es egal ist,
ob 25, 500 oder 0,0 als Koordinaten übergeben werden.

Delphi-Quellcode:
procedure Tf_Settings.vst_MenuPaintBackground(Sender: TBaseVirtualTree;
  TargetCanvas: TCanvas; R: TRect; var Handled: Boolean);
begin
  VirtualImageListLeft.Draw(TargetCanvas, 25, 500, FBGImageIndex, true);
end;
Irgendwer eine Idee?

Uwe Raabe 20. Nov 2024 17:59

AW: VirtualImageList Image in VirtualTreeview Background zeichnen
 
Vielleicht solltest du noch
Delphi-Quellcode:
Handled := True
setzen?

himitsu 20. Nov 2024 18:00

AW: VirtualImageList Image in VirtualTreeview Background zeichnen
 
[deleted]

TurboMagic 20. Nov 2024 18:22

AW: VirtualImageList Image in VirtualTreeview Background zeichnen
 
Hallo,

auch wenn immer noch nicht alles so funktioniert wie erhofft, führt Handled = true
immerhin mal dazu, dass was angezeigt wird.

Danke!

TurboMagic 20. Nov 2024 18:39

AW: VirtualImageList Image in VirtualTreeview Background zeichnen
 
Hallo,

so, jetzt stimmen Größe und Position.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz