Bonjour,
Je cherche a remplacer le fond blanc de mon treeview par une image ...
Est ce possible ? et si oui comment ?
Merci a tous et meilleur voeux 2007 !
Version imprimable
Bonjour,
Je cherche a remplacer le fond blanc de mon treeview par une image ...
Est ce possible ? et si oui comment ?
Merci a tous et meilleur voeux 2007 !
Bonjour,
pour commencer j'ai essayer ce code mais il presente certaine anomalie :oops::
c'est déjà un commencement ... bon courageCode:
1
2 TreeView1 -> Canvas -> Draw(0,0, Image1 -> Picture -> Bitmap) ;
A oui ...
effectivement c'est pas vraiment utiliseable ... si quelqu'un a une autre idée, ou un moyen de valoriser celle - ci :)
:merci:
Salut netah25
Je pense que c'est possible l'aide en ligne de Canvas dit:
et l'exemple:Citation:
Donne accès au canevas.
__property Graphics::TCanvas* Canvas = {read=FCanvas};
Description
Utilisez la propriété Canvas pour dessiner dans le canevas à partir des gestionnaires d'événements OnCustomDraw et OnCustomDrawItem.
en esperant t'aider.Citation:
L'exemple suivant illustre comment le gestionnaire d'événement OnCustomDraw dessine le fond d'une vue arborescente avant le dessin des éléments et des traits.
void __fastcall TCustomDrawForm::TVCustomDraw(TCustomTreeView *Sender, const TRect ARect, bool &DefaultDraw)
{
//Cet événement doit être utilisé pour dessiner les couleurs et images de fond.
//ARect représente toute la zone client de TreeView.
//Utilisez le canevas de TreeView pour dessiner.
//Le dessin d'un bitmap de fond n'est pas vraiment géré par CustomDraw,
//le défilement peut donc être heurté. Mieux vaut dériver TreeView et gérer
//les messages de défilement.
TCanvas *pCanvas = TreeView1->Canvas;
if (None1->Checked) //no picture
{
pCanvas->Brush->Color = BkgColorDialog->Color;
pCanvas->Brush->Style = FBrushStyle;
pCanvas->FillRect(ARect);
}
else
{
if (Tile1->Checked) //bitmap en mosaïque
{
pCanvas->Brush->Bitmap = Image1->Picture->Bitmap;
pCanvas->FillRect(ARect);
}
else //Etirer le long du canevas.
pCanvas->StretchDraw(ARect, Image1->Picture->Bitmap);
}
DefaultDraw = FDefaultDraw;
// Initialiser DefaultDraw à false empêche ici tous les appels de OnCustomDrawItem.
}
A la suite d'une reponse de bandit boy dans ce post
J'ai fait un essai chez moi et ca a l'air de marcher.
Le .cpp
Le .hCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { TreeView1->Canvas->CopyRect(TreeView1->Canvas->ClipRect, Image1->Canvas, Image1->ClientRect); } //---------------------------------------------------------------------------
J'ai place une image dans le TImage apres appuie sur le bouton l'image se place dans le TreeView.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ComCtrls.hpp> #include <ExtCtrls.hpp> #include <jpeg.hpp> #include <Graphics.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TTreeView *TreeView1; TButton *Button1; TImage *Image1; void __fastcall Button1Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
Les deux composants on la meme dimension.
A+
Bonsoir,
je viens juste de tester la solution de "Blondelle", elle donne le même résultat que la méthode déjà prsentée (TTreeViex avec plusieur Items et sSubItem).
Comment faire pour remédier à ce problème.
Un lien qui pourra peut etre aider.