Dans la FAQ Delphi il y a cette astuce mais j'y comprend rien :/
Je voulais faire avoir un panel transparent mais je comprend pas cette astuce :/
Si votre contrôle possède une propriété Transparent, il suffit de positionner celle-ci à True.
Dans le cas contraire, vous devez dériver un nouveau composant à partir de celui-ci, surcharger la méthode CreateParams et intercepter le message WM_ERASEBKGND comme ci-dessous :
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 type TConteneur = class(TScrollBox) private { Déclarations privées } public { Déclarations publiques } constructor Create(AOwner: TComponent); override; procedure CreateParams(var Params: TCreateParams); override; procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND; end; procedure TConteneur.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.ExStyle := params.ExStyle or WS_EX_TRANSPARENT; end; procedure TConteneur.WMEraseBkgnd(var Msg: TWMEraseBkgnd); begin SetBkMode(Msg.DC, TRANSPARENT); Msg.Result := 1; end;
Partager