Bonjour !!
Est-ce possible de mettre le composant TPanel transparent ou lui donner une opacité (comme la valeur AlphaBlend d'un TForm).
Merci
Bonjour !!
Est-ce possible de mettre le composant TPanel transparent ou lui donner une opacité (comme la valeur AlphaBlend d'un TForm).
Merci
Salut, j'imagine que tu utilises un projet VCL et non FireMonkey?
Pour la VCL regarde le code du composant TJvCustomArrangePanel qui est utilisé en héritage de TJvPanel pour le projet JVCL. Il possède une propriété Transparent. Je pense qu'une partie de la magie se passe dans la méthode TJvCustomArrangePanel.Paint.
Donc, soit tu utilises le composant TJvPanel ou que tu te fabrique ton propre composant en te basant sur le code de celui qui existe.
- Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur. - Dave Barry
- Je n'ai pas peur des ordinateurs. J'ai peur qu'ils viennent à nous manquer. - Isaac Asimov
- Le code source est comme une belle femme, plus on le regarde, plus on trouve des défauts. - Crayon
Salut Crayon !!
Merci pour les liens, C'est bon j'ai réglé le problème de transparence, et voici ma première solution (car ceci marche seulement si le parent est un TForm) :
1 - Créer une nouveau composant qui hérite de TCustomPanel et le installer dans un package souhaité.
2 - Dans le header (.h):
Bien sure vous pouvez ajouter d'autres propriétés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #ifndef TTransparentPanelH #define TTransparentPanelH //--------------------------------------------------------------------------- #include <System.SysUtils.hpp> #include <System.Classes.hpp> #include <Vcl.Controls.hpp> #include <Vcl.ExtCtrls.hpp> //--------------------------------------------------------------------------- class PACKAGE TTransparentPanel : public TCustomPanel { private: protected: void __fastcall CreateParams(Controls::TCreateParams &Params); public: __fastcall TTransparentPanel(TComponent* Owner); __published: }; //--------------------------------------------------------------------------- #endif
3 - Dans le fichier source (.cpp) :
Plus précisément mes besoins sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33
34
35
36
37
38
39
40 //--------------------------------------------------------------------------- //UIElements : c'est le nom de package #include <vcl.h> #pragma hdrstop #include "TTransparentPanel.h" #pragma package(smart_init) //--------------------------------------------------------------------------- // ValidCtrCheck est utilisée pour garantir que les composants créés n'ont pas // de fonctions virtuelles pures. // static inline void ValidCtrCheck(TTransparentPanel *) { new TTransparentPanel(NULL); } //--------------------------------------------------------------------------- __fastcall TTransparentPanel::TTransparentPanel(TComponent* Owner) : TCustomPanel(Owner) { BevelOuter = bvNone; } //--------------------------------------------------------------------------- namespace Ttransparentpanel { void __fastcall PACKAGE Register() { TComponentClass classes[1] = {__classid(TTransparentPanel)}; RegisterComponents(L"UIElements", classes, 0); } } //--------------------------------------------------------------------------- void __fastcall TTransparentPanel::CreateParams(Controls::TCreateParams &Params) { TCustomPanel::CreateParams(Params); Params.ExStyle = Params.ExStyle | WS_EX_TRANSPARENT; ControlStyle = ControlStyle << csOpaque; }
1 - Créer un composant (TPanel si possible) transparent (pour l'opacité je peux utiliser une image transparente) qui peut être placé en dessus de chaque composant dans la fenêtrer.
2 - Et qui peut être un container de d'autres éléments aussi.
Mon premier besoin à pour but de mettre les autres éléments de la fenêtre inaccessible sans les cacher (éviter de jouer sur la propriété Enabled).
Et mon deuxième besoin à pour but de créer des calques container.
Merci une autre fois Crayon !!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager