Salut
j'essaie de developper un composant basé sur TgraphicControl.
Le code se compile correctement, et le composant est correctement installé dans un nouvel onglet.
Par contre quand j'essaie de metttre ce composant dans une feuille, voici le message d'erreur que j'obtiens: -- Control " has no parent windows --
Est ce que qulqu'un peut m'aider ?
J'ai remarqué que le message d'erreur n'apparait que si la procedure drawComposant est appelée dans le constructor Create.
Le but est que le composant se dessine avec (par exemple) un fond noir et un cadre. Si j'enleve drawComposant du constructeur, je n'ai pas de message d'erreur, mais le composant qui se dessine alors dans la feuille n'a pas de contour, bref il est difficile de le visualiser.
Merci
Voici le bout de code simplifié qui presente le probleme:
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 unit test ; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls ; type TTest = class(TGraphicControl) private P_ComponentBackGroundColor : TColor; procedure SetCpBckgColor(Value:TColor) ; protected procedure DrawComposant; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published property CpBckgColor : TColor read P_ComponentBackGroundColor write SetCpBckgColor ; end; procedure Register; implementation procedure TTest.DrawComposant; begin // creation Background du composant self.Canvas.Brush.Color := P_ComponentBackGroundColor; self.Canvas.FillRect(Rect(0,0,self.Width,self.Height)); // -------------------------------- invalidate; end; procedure TTest.SetCpBckgColor (Value:TColor); begin if P_ComponentBackGroundColor <> value then begin P_ComponentBackGroundColor := Value ; DrawComposant ; end; end; constructor TTest.Create(AOwner: TComponent); begin inherited Create (AOwner); P_ComponentBackGroundColor := clBlack ; Height := 100; Width := 400; DrawComposant; end; destructor TTEST.Destroy; begin inherited Destroy; end; procedure Register; begin RegisterComponents('Tests', [TTEST]); end; end.
[Balise [code] rajoutée par Seb]
[Pensez-y vous-même à l'avenir. Merci.]
Partager