Salut à tous,
J'ai un ptit soucis

: j'ai fais un composant qui créer d'autres composants ent tant qu' enfants. Dans l'inspecteur d'objet, les propriétés des enfants apparaissent mais pas leur évènements et je ne comprend pas pourquoi :
Voila le code :
unit BrowserEffects;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, ComCtrls, Graphics;
type
{>>TITLE}
TBrowserTitle = class(TGraphicControl)
private
fColorTitle:TColor;
fColorSubTitle:TColor;
fColorRectTitle:TColor;
fTitle:String;
fSubTitle:String;
Procedure setColorTitle(Value:TColor);
Procedure setColorSubTitle(Value:TColor);
Procedure setColorRectTitle(Value:TColor);
Procedure SetTitle(Value:String);
Procedure SetSubTitle(Value:String);
protected
procedure Paint; override;
procedure Resize; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
Property ColorTitle:TColor Read fColorTitle Write SetColorTitle;
Property ColorSubTitle:TColor Read fColorSubTitle Write SetColorSubTitle;
Property ColorRectTitle:TColor Read fColorRectTitle Write SetColorRectTitle;
Property Title:String Read fTitle Write SetTitle;
Property SubTitle:String Read fSubTitle Write SetSubTitle;
end;
{>>TBrowserButton}
TBrowserButton = class(TGraphicControl)
private
fColorLine:TColor;
fColorTop:TColor;
fColorBottom:TColor;
fClicked:Boolean;
fCaption:String;
Procedure SetColorLine(Value:TColor);
Procedure SetColorTop(Value:TColor);
Procedure SetColorBottom(Value:TColor);
Procedure SetCaption(Value:String);
Procedure DrawBorder;
protected
procedure Paint; override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: integer); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
Property ColorLine:TColor Read fColorLine Write SetColorLine;
Property ColorTop:TColor Read fColorTop Write SetColorTop;
Property ColorBottom:TColor Read fColorBottom Write SetColorBottom;
Property Tag;
Property Enabled;
Property OnMouseDown;
Property OnMouseMove;
Property OnMouseUp;
Property OnClick;
Property OnDblClick;
Property Caption : String Read fCaption Write SetCaption;
Property Font;
end;
{>>TEffect}
TEffect=class(TCollectionItem)
protected
fName:String;
fFileName:String;
Procedure SetName(Value:String);
public
constructor Create(ACollection: TCollection); override;
destructor Destroy; override;
Published
Property FileName:String Read fFileName Write fFileName;
Property Name:String Read fName Write SetName;
end;
{>>TEffectCnt}
TEffectCnt = class(TOwnedCollection)
protected
function GetItem(Index: integer): TEffect;
procedure SetItem(Index: integer; Value: TEffect);
public
constructor Create(AOwner: TComponent);
function Add: TEffect;
property Items[Index: integer]: TEffect Read GetItem Write SetItem;
end;
{>>TGaugeBar}
TGaugeBar = class(TCustomControl)
private
fMin:Integer;
fMax:Integer;
fPos:Integer;
fStickColor:TColor;
fBackGroundColor:TColor;
fFullColor:TColor;
fText:String;
Procedure SetStickColor(Value:TColor);
Procedure SetBackGroundColor(Value:TColor);
Procedure SetFullColor(Value:TColor);
Procedure SetMin(Value:Integer);
Procedure SetMax(Value:Integer);
Procedure SetPos(Value:Integer);
Procedure SetText(Value:String);
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
Procedure Paint; override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: integer); override;
procedure MouseMove(Shift: TShiftState; X, Y: integer); override;
Procedure Resize; override;
published
Property StickColor:TColor Read fStickColor Write SetStickColor;
Property BackGroundColor:TColor Read fBackGroundColor Write SetBackGroundColor;
Property FullColor:TColor Read fFullColor Write SetFullColor;
Property Color;
Property Min:Integer Read fMin Write SetMin;
Property Max:Integer Read fMax Write SetMax;
Property Pos:Integer Read fPos Write SetPos;
Property Text:String Read fText Write SetText;
Property OnMouseDown;
Property OnMouseMove;
Property OnMouseUp;
Property OnClick;
end;
{>>TParamsSound}
TParamsSound = class(TCustomControl)
private
fVolGauge:TGaugeBar;
fPanGauge:TGaugeBar;
fFreqGauge:TGaugeBar;
fTempoGauge:TGaugeBar;
protected
Procedure CreateGaugeBar(Var AGaugeBar:TGaugeBar;Index:Cardinal; Title:String; MinVal, MaxVal:Integer);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
Procedure Paint; override;
published
Property VolGauge:TGaugeBar Read fVolGauge Write fVolGauge;
Property PanGauge:TGaugeBar Read fPanGauge Write fPanGauge;
Property FreqGauge:TGaugeBar Read fFreqGauge Write fFreqGauge;
Property TempoGauge:TGaugeBar Read fTempoGauge Write fTempoGauge;
Property Color;
Property OnMouseDown;
Property OnMouseMove;
Property OnMouseUp;
Property OnClick;
end;
TBrowserEffects = class(TCustomControl)
private
fVSTICnt:TEffectCnt;
fVSTECnt:TEffectCnt;
fSoundFontCnt:TEffectCnt;
fParamsSound:TParamsSound;
fBrowserTitle : TBrowserTitle;
fEffectsView:TTreeView;
fAddButton:TBrowserButton;
fDelButton:TBrowserButton;
fActiveButton:TBrowserButton;
SndFontNode:TTreeNode;
VSTINode:TTreeNode;
VSTENode:TTreeNode;
DSPNode:TTreeNode;
Procedure SetTracksGrid(Value:TTracksGrid);
protected
Procedure Create_Constantes_Nodes;
Procedure CreateButton(var Button:TBrowserButton;BtLeft,BtTop:Integer; BtCaption:String);
public
Procedure Resize; override;
Procedure Paint; override;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
Property Color;
property BrowserTitle : TBrowserTitle Read FBrowserTitle Write FBrowserTitle;
property AnVSTICnt:TEffectCnt Read fVSTICnt Write fVSTICnt;
property AnVSTECnt:TEffectCnt Read fVSTECnt Write fVSTECnt;
property AnSoundFontCnt:TEffectCnt Read fSoundFontCnt Write fSoundFontCnt;
Property ParamsSound:TParamsSound Read fParamsSound Write fParamsSound;
Property EffectsView:TTreeView Read fEffectsView Write fEffectsView;
Property AddButton:TBrowserButton Read fAddButton Write fAddButton;
Property DelButton:TBrowserButton Read fDelButton Write fDelButton;
Property ActiveButton:TBrowserButton Read fActiveButton Write fActiveButton;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MUSIC_PRO', [TBrowserEffects]);
end;
{>>TITLE}
constructor TBrowserTitle.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
fColorRectTitle:=ClSilver;
Title:='Browser';
fColorTitle:=$0012526D;
SubTitle:='Sonorisation';
fColorSubTitle:=$001A7297;
end;
destructor TBrowserTitle.Destroy;
begin
inherited;
end;
Procedure TBrowserTitle.setColorTitle(Value:TColor);
Begin
fColorTitle:=Value;
Invalidate;
End;
Procedure TBrowserTitle.setColorSubTitle(Value:TColor);
Begin
fColorSubTitle:=Value;
Invalidate;
End;
Procedure TBrowserTitle.setColorRectTitle(Value:TColor);
Begin
fColorRectTitle:=Value;
Invalidate;
End;
Procedure TBrowserTitle.SetTitle(Value:String);
Begin
fTitle:=Value;
Invalidate;
End;
Procedure TBrowserTitle.SetSubTitle(Value:String);
Begin
fSubTitle:=Value;
Invalidate;
End;
procedure TBrowserTitle.Resize;
Begin
Width:=113;
If Height<49 Then
Height:=49;
Invalidate;
End;
procedure TBrowserTitle.Paint;
Var
RectTitle:TRect;
WidthString,HeightString,LeftString,TopString:Integer;
Begin
InHerited;
With Canvas Do
Begin
Brush.Style:=BsClear;
With RectTitle Do
Begin
Left:=0;
Right:=Self.Width;
Top:=0;
Bottom:=49;
Brush.Color:=Self.fColorRectTitle;
Pen.Color:=ClBlack;
Pen.Width:=4;
Rectangle(RectTitle);
Font.Name:='ARIAL';
Font.Size:=14;
Font.Color:=fColorTitle;
LeftString:=Round(0.05*Self.Width);
TopString:=Pen.Width;
TextOut(LeftString,TopString,fTitle);
Font.Name:='Comic Sans MS';
Font.Size:=11;
Font.Color:=Self.fColorSubTitle;
WidthString:=TextWidth(fSubTitle);
HeightString:=TextHeight(fSubTitle);
LeftString:=Self.Width-WidthString-5;
TopString:=Bottom-Pen.Width-HeightString;
TextOut(LeftString,TopString,fSubTitle);
End;
End
End;
{>>TBrowserButton}
constructor TBrowserButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
fClicked:=False;
end;
destructor TBrowserButton.Destroy;
begin
inherited;
end;
Procedure TBrowserButton.SetColorLine(Value:TColor);
begin
Self.fColorLine:=Value;
Self.Invalidate;
end;
Procedure TBrowserButton.SetColorTop(Value:TColor);
begin
Self.fColorTop:=Value;
Self.Invalidate;
end;
Procedure TBrowserButton.SetColorBottom(Value:TColor);
begin
Self.fColorBottom:=Value;
Self.Invalidate;
end;
Procedure TBrowserButton.SetCaption(Value:String);
begin
Self.fCaption:=Value;
Self.Invalidate;
end;
procedure TBrowserButton.Paint;
Var
RectTop,RectBottom : TRect;
HeightCaption, WidthCaption:Integer;
Begin
InHerited;
DrawBorder;
With Self.Canvas Do
Begin
Font:=Self.Font;
With RectTop Do
Begin
Top:=6;
Bottom:=Self.Height Div 2 ;
Left:=6;
Right:=Self.Width-6;
Brush.Color:=Self.fColorTop;
Pen.Color:=Self.fColorTop;
Rectangle(RectTop);
End;
With RectBottom Do
Begin
Top:=Self.Height Div 2;
Bottom:=Self.Height-6;
Left:=6;
Right:=Self.Width-6;
Brush.Color:=Self.fColorBottom;
Pen.Color:=Self.fColorBottom;
Rectangle(RectBottom );
End;
Brush.Color:=Self.fColorLine;
Pen.Color:=Self.fColorLine;
Pen.Width:=2;
MoveTo(5,Self.Height Div 2);
LineTo(Self.Width-7,Self.Height Div 2);
HeightCaption:=Self.Canvas.TextHeight(Self.Caption);
WidthCaption:=Self.Canvas.TextWidth(Self.Caption);
Brush.Style:=BsClear;
TextOut((Self.Width - WidthCaption) Div 2,(Self.Height - HeightCaption) Div 2, Self.Caption);
End;
End;
Procedure TBrowserButton.DrawBorder;
Var
LeftColor, RightColor:TColor;
UpperCorner,LowerCorner:Array [0..2] Of TPoint;
Begin
If Not fClicked Then
Begin
LeftColor:=ClWhite;
RightColor:=$00657271;
End
Else
Begin
LeftColor:=$00657271;
RightColor:=ClWhite;
End;
With Self.Canvas Do
Begin
Pen.Width:=2;
UpperCorner[0]:=Point(Pen.Width,Self.Height-Pen.Width);
UpperCorner[1]:=Point(Pen.Width,Pen.Width);
UpperCorner[2]:=Point(Self.Width-Pen.Width,Pen.Width);
LowerCorner[0]:=Point(Pen.Width,Self.Height-Pen.Width);
LowerCorner[1]:=Point(Self.Width-Pen.Width,Self.Height-Pen.Width);
LowerCorner[2]:=Point(Self.Width-Pen.Width,Pen.Width);
Brush.Color:=LeftColor;
Pen.Color:=LeftColor;
Polyline(UpperCorner);
Brush.Color:=RightColor;
Pen.Color:=RightColor;
Polyline(LowerCorner);
End;
End;
procedure TBrowserButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: integer);
Begin
InHerited;
If Shift=[SSLeft] Then
Begin
Self.fClicked:= True;
Self.Invalidate;
End;
End;
procedure TBrowserButton.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: integer);
Begin
InHerited;
Self.fClicked:= False;
Self.Invalidate;
End;
{>>TEffect}
constructor TEffect.Create(ACollection: TCollection);
begin
inherited Create(ACollection);
end;
destructor TEffect.Destroy;
begin
inherited Destroy;
end;
Procedure TEffect.SetName(Value:String);
Begin
fName:=UpperCase(Value);
End;
{>>TEffectCNT}
constructor TEffectCnt.Create(AOwner: TComponent);
begin
inherited Create(AOwner,TEffect);
end;
function TEffectCnt.Add:TEffect;
begin
Result := TEffect(inherited Add);
end;
function TEffectCnt.GetItem(Index: integer):TEffect;
begin
Result := TEffect(inherited Items[Index]);
end;
procedure TEffectCnt.SetItem(Index: integer; Value:TEffect);
begin
inherited SetItem(Index, Value);
end;
{>>TGaugeBar}
constructor TGaugeBar.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
fMin:=0;
fMax:=100;
fPos:=fMin;
Width:=100;
fStickColor:=ClRed;
Color:=$00A79AA0;
BackGroundColor:=$00C8D7DD;
FullColor:=$00400080;
fText:='Value';
end;
destructor TGaugeBar.Destroy;
begin
inherited;
end;
Procedure TGaugeBar.SetMin(Value:Integer);
Begin
If (Value<=fMax) And (Value<=fPos) Then
Begin
fMin:=Value;
Self.Invalidate;
End;
End;
Procedure TGaugeBar.SetMax(Value:Integer);
Begin
If (Value>=fMin) And (Value>=fPos) Then
Begin
fMax:=Value;
Self.Invalidate;
End;
End;
Procedure TGaugeBar.SetPos(Value:Integer);
Begin
If (Value>=fMin) And (Value<=fMax) Then
Begin
fPos:=Value;
Self.Invalidate;
End;
End;
Procedure TGaugeBar.SetStickColor(Value:TColor);
Begin
fStickColor:=Value;
Self.Invalidate;
End;
Procedure TGaugeBar.SetBackGroundColor(Value:TColor);
Begin
fBackGroundColor:=Value;
Self.Invalidate;
End;
Procedure TGaugeBar.SetFullColor(Value:TColor);
Begin
fFullColor:=Value;
Self.Invalidate;
End;
Procedure TGaugeBar.SetText(Value:String);
Begin
fText:=Value;
Self.Invalidate;
End;
Procedure TGaugeBar.Resize;
begin
inherited;
Height:=25;
end;
Procedure TGaugeBar.Paint;
Var
LeftRect,StickRect,BackGroundRect:TRect;
WidthText:Integer;
Str:String;
begin
inherited;
With Canvas Do
Begin
Font.Size:=8;
Pen.Width:=2;
Str:=fText+IntToStr(fPos);
WidthText:=(Width-TextWidth(Str)) Div 2;
Brush.Style:=BsClear;
TextOut(WidthText,0,Str);
With BackGroundRect Do
Begin
Left:=0;
Right:=Width;
Top:=15;
Bottom:=23;
Brush.Color:=fBackGroundColor;
Rectangle(BackGroundRect);
End;
With LeftRect Do
Begin
Left:=0;
Right:=Round(Width*(fPos-fMin) / (fMax-fMin));
Top:=15;
Bottom:=23;
Brush.Color:=fFullColor;
Rectangle(LeftRect);
End;
Brush.Color:=ClWhite;
Pen.Color:=ClWhite;
Pen.Width:=0;
MoveTo(4,19);
LineTo(Width-4,19);
With StickRect Do
Begin
Left:=Round(Width*((fPos-fMin) / (fMax-fMin))-0.01*Width);
Right:=Round(Width*((fPos-fMin) / (fMax-fMin))+0.01*Width);
If Left<=0 Then
Begin
Left:=0;
Right:=Round(0.02*Width);
End;
If Right>=Width Then
Begin
Left:=Round(Width*0.98);
Right:=Width;
End;
Top:=13;
Bottom:=25;
Brush.Color:=fStickColor;
Pen.Color:=ClBlack;
Pen.Width:=2;
Rectangle(StickRect);
End;
End;
End;
Procedure TGaugeBar.MouseDown(Button: TMouseButton; Shift: TShiftState;X, Y: integer);
Var
BnMax,BnMin : Integer;
begin
inherited;
If (Shift=[SSLeft]) Then
Begin
BnMin:=Round(Width*((fPos-fMin) / (fMax-fMin))-0.01*Width);
BnMax:=Round(Width*((fPos-fMin) / (fMax-fMin))+0.01*Width);
If (Shift=[SSLeft]) And (X>=BnMin) And (X<=BnMax) Then
fPos:=X*(fMax-fMin) Div Width+fMin;
If fPos<fMin Then fPos:=fMin;
If fPos>fMax Then fPos:=fMax;
Self.Invalidate;
End;
End;
procedure TGaugeBar.MouseMove(Shift: TShiftState; X, Y: integer);
begin
inherited;
If (Shift=[SSLeft]) Then
Begin
fPos:=X*(fMax-fMin) Div Width+fMin;
If fPos<fMin Then fPos:=fMin;
If fPos>fMax Then fPos:=fMax;
Self.Invalidate;
End;
End;
{>>TParamsSound}
constructor TParamsSound.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
Width:=110;
Height:=250;
Color:=$00A79AA0;
CreateGaugeBar(fVolGauge,0,'VOL ',0,100);
CreateGaugeBar(fPanGauge,1,'PAN ',-100,100);
CreateGaugeBar(fFreqGauge,2,'FREQ ',0,44100);
CreateGaugeBar(fTempoGauge,3,'TEMPO ',0,220);
end;
Procedure TParamsSound.CreateGaugeBar(Var AGaugeBar:TGaugeBar;Index:Cardinal; Title:String; MinVal, MaxVal:Integer);
Begin
AGaugeBar:=TGaugeBar.Create(Self);
With AGaugeBar Do
Begin
Parent:=Self;
Width:=Self.Width-10;
Left:=5;
Min:=MinVal;
Max:=MaxVal;
Pos:=(Min+Max) Div 2;
Top:=30*Index+2;
Text:=Title;
End;
End;
destructor TParamsSound.Destroy;
begin
fVolGauge.Free;
fPanGauge.Free;
fFreqGauge.Free;
fTempoGauge.Free;
inherited;
end;
Procedure TParamsSound.Paint;
begin
inherited;
Canvas.Pen.Width:=2;
Canvas.Pen.Color:=ClWhite;
Canvas.Brush.Color:=Color;
Canvas.Rectangle(ClientRect);
end;
{>>BrowserEffects}
constructor TBrowserEffects.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Color:=ClBlack;
fVSTICnt:=TEffectCnt.Create(Self);
fVSTECnt:=TEffectCnt.Create(Self);
fSoundFontCnt:=TEffectCnt.Create(Self);
fBrowserTitle:=TBrowserTitle.Create(Self);
With fBrowserTitle Do
Begin
Parent:=Self;
Top:=5;
Left:=4;
End;
fParamsSound:=TParamsSound.Create(Self);
With fParamsSound Do
Begin
Parent:=Self;
Left:=5;
Height:=122;
Top:=fBrowserTitle.Top+fBrowserTitle.Height+5;
End;
CreateButton(fAddButton,9,fParamsSound.Top+fParamsSound.Height+5,'A');
CreateButton(fDelButton,45,fParamsSound.Top+fParamsSound.Height+5,'D');
CreateButton(fActiveButton,82,fParamsSound.Top+ParamsSound.Height+5,'S');
fEffectsView:=TTreeView.Create(Self);
With fEffectsView Do
Begin
Left:=5;
Height:=105;
Width:=110;
Top:=fParamsSound.Top+fParamsSound.Height+38;
End;
end;
destructor TBrowserEffects.Destroy;
begin
fVSTICnt.Free;
fVSTECnt.Free;
fSoundFontCnt.Free;
fParamsSound.Free;
fBrowserTitle.Free;
fEffectsView.Free;
fAddButton.Free;
fDelButton.Free;
fActiveButton.Free;
inherited;
end;
Procedure TBrowserEffects.Resize;
Begin
InHerited;
Width:=120;
Height:=329;
End;
Procedure TBrowserEffects.CreateButton(var Button:TBrowserButton;BtLeft,BtTop:Integer; BtCaption:String);
Begin
Button:=TBrowserButton.Create(Self);
With Button Do
Begin
Parent:=Self;
Width:=28;
Height:=28;
Left:=BtLeft;
Top:=BtTop;
Caption:=BtCaption;
Font.Size:=14;
Font.Style:=[FsBold];
Button.ColorTop:=$00FFE6E1;
Button.ColorBottom:=$00E8E8E8;
Button.ColorLine:=$0041C9D3;
End;
End;
Procedure TBrowserEffects.Create_Constantes_Nodes;
Begin
With fEffectsView Do
Begin
SndFontNode:=Items.Add(NIL,'SOUNDFONTS');
VSTINode:=Items.Add(NIL,'EFFETS VSTI');
VSTENode:=Items.Add(NIL,'EFFETS VSTE');
DSPNode:=Items.Add(NIL,'EFFETS DSP');
End;
End;
Procedure TBrowserEffects.Paint;
Begin
InHerited;
With fEffectsView Do
Begin
Parent:=Self;
Font.Color:=$00400080;
Font.Size:=6;
Color:=ClSilver;
If Items.Count=0 Then Create_Constantes_Nodes;
End;
End;
end.
Si quelqu'un sait pourquoi les propriétés des boutons, du treeview et des gauges n'apparaissent pas, je suis preneur

.
Merci