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 overlay von treenode images (https://www.delphipraxis.net/55899-overlay-von-treenode-images.html)

ibp 28. Okt 2005 11:32


overlay von treenode images
 
Hallo,

ich weise den Nodes per imageindex und selectedidex ein Index aus einer ImageList zu, jeweils für den bestimmten Knotentyp. Ich möchte Klone von einigen Knoten erstellen und dieses im TreeView darstellen, so dass es aussieht wie bei Windows der Pfeil bei Verknüpfungen. D.h. zum Image soll ZUSÄTZLICH dieser Pfeil angezeigt werden. Jetzt will ich aber nicht weitere Bilder in der Imagelist haben. Wie kann ich direkt das Image des Knotens zuweisen ohne über Imageindex etc. zu gehen?

grüße

[edit=Sharky]Ich habe den Titel des Threads, auf wunscht des Fragestellers, von "Wie komme ich an das TTreeNode Image?" nach "overlay von treenode images" geändrt. Mfg, Sharky[/edit]

dimo 28. Okt 2005 11:43

Re: Wie komme ich an das TTreeNode Image?
 
Hi,

Du musst dann dein Knoten selber zeichnen.

Grüße,
Dimo

Aenogym 28. Okt 2005 11:51

Re: Wie komme ich an das TTreeNode Image?
 
Zitat:

Zitat von dimo
Hi,

Du musst dann dein Knoten selber zeichnen.

Grüße,
Dimo

:hi: hallo und herzlich willkommen in der DP, dimo!
gearde erst angemeldet und schon eine frage beantwort - super :thumb:

ergänzend zu deiner antwort:
selbst zeichnen und dann die TImageList.Draw() aufrufen, um ein Image auf den Canvas des TreeView zu zeichnen.
sollte recht einfach sein.

aenogym

Lannes 28. Okt 2005 12:36

Re: Wie komme ich an das TTreeNode Image?
 
Hallo,
Zitat:

Zitat von ibp
...Jetzt will ich aber nicht weitere Bilder in der Imagelist haben....

darf es den wenigstens ein Bild sein? :wink:
Dieses eine Bild kannst Du dann bei Bedarf als Overlay über alle anderen legen.

Erstell mal ein neues Projekt mit einem Treeview,
einer ImageList und einen Button.

- im Treeview drei Einträge im OI-Editor erstellen
- der ImageList weist Du 3 Bilder zu.
  • Bild 0 für ImageIndex
    Bild 1 für StateIndex
    Bild 2 für OverlayIndex (Dein Verknüpfungspfeil)
- die ImageList den TreeView-Eigenschaften Images und StateImages zuweisen
- den folgenden Code in OnClick des Buttons einfügen
Delphi-Quellcode:
//Item 0
TreeView1.Items[0].StateIndex := 1;
TreeView1.Items[0].ImageIndex := 0;
//Item 1
TreeView1.Items[1].StateIndex := 1;
ImageList1.Overlay(2, 0);
TreeView1.Items[1].OverlayIndex := 0;
//Item 2
TreeView1.Items[2].StateIndex := 1;
TreeView1.Items[2].ImageIndex := 0;
- testen und :-D

jim_raynor 28. Okt 2005 12:40

Re: Wie komme ich an das TTreeNode Image?
 
Ähh. Was macht das Overlay(2,0). Meines erachtens reicht es doch, wenn du OverlayIndex auf 2 setzt. Den Rest macht die Treeview alleine.

Lannes 28. Okt 2005 12:52

Re: Wie komme ich an das TTreeNode Image?
 
Hallo,
Zitat:

Zitat von jim_raynor
Ähh. Was macht das Overlay(2,0). Meines erachtens reicht es doch, wenn du OverlayIndex auf 2 setzt. Den Rest macht die Treeview alleine.

Overlay(2,0) weist dem Bild mit dem Index 0 das Bild mit dem Index 2 als Overlay zu.
erst dann hat das setzen von OverlayIndex auf 2 eine Auswirkung im Treeview.
Ist zumindest bei Delphi 3 so, ist es in neueren Delphi-Version anders?

ibp 28. Okt 2005 13:25

Re: Wie komme ich an das TTreeNode Image?
 
@lannes

danke erstmal werde es ausprobieren klingt gut! :thumb:

ibp 1. Nov 2005 12:04

Re: Wie komme ich an das TTreeNode Image?
 
also das funktioniert! danke nochmals!

ich fasse mal zusammen....

man muss aber die overlaymaske nur einmal definieren!
dabei kann man vier stück definieren! (0..3) man muss aber nicht !

1. maske: ImageList1.Overlay(OverlayImageIndex, 0);
2. maske: ImageList1.Overlay(OverlayImageIndex1, 1);
3. maske: ImageList1.Overlay(OverlayImageIndex2, 2);
4. maske: ImageList1.Overlay(OverlayImageIndex3, 3);

und dann kann man z.b. die maske (overlay) über das node-image legen...

treenode.OverlayIndex := 0; // für maske 1

oder

treenode.OverlayIndex := 2; // für maske 3

zum löschen des Overlays aus dem image des nodes:

treenode.OverlayIndex := -1;


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