begin process at 2012 02 09 02:28:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Evènements d'un enfant dans l'inspecteur d'objet


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Evènements d'un enfant dans l'inspecteur d'objet

lundi 25 août 2008 à 17:16:36 | Evènements d'un enfant dans l'inspecteur d'objet

Francky23012301

Membre Club
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


lundi 25 août 2008 à 20:24:11 | Re : Evènements d'un enfant dans l'inspecteur d'objet

Francky23012301

Membre Club
Arfff  l'imbécile : Si quelqu'un sait pourquoi les évènements des boutons, du treeview et des gauges n'apparaissent pas, je suis preneur
mardi 26 août 2008 à 16:24:27 | Re : Evènements d'un enfant dans l'inspecteur d'objet

shining

Salut,
Ralala Francky un évènement ... des événements

Okay chui mal placé pour ce genre de remarque .

sinon plus sérieusement j'ai jeté un chti coup d'oeil et franchement je ne vois pas vraiment où tu veux en venir !!, je veux dire que je vois des AddButton

mais ça n'ajoute rien mais permet le changement des couleurs ? et autres... dans ce cas ça ne serait pas DefButton ? pour Valeur par Défaut

et c'est quoi le nom des classes qui sont censées représentées les événements dans l'inspecteur d'objet ?.

de plus j'ai eu un problème lors de la compilation du paquet à cause de "Procedure SetTracksGrid(Value:TTracksGrid);" 
TTracksGrid <===  inconnu au bataillon dans ma version de Delphi , de plus il n'ya que l'entête mais pas le corps(partie implémentation de cette procédure), mais ce n'est pas bien grave car il suffit de mettre cette entête sous forme de comment avec // et ça compile correctement

bon un peu plus de détails serait le bienvenu si tu veux vraiment que l'on puisse te venir en aide et n'ai pas peur de nous pondre un roman

@+

Shining-Freeman

mardi 26 août 2008 à 17:16:54 | Re : Evènements d'un enfant dans l'inspecteur d'objet

Francky23012301

Membre Club
Salut Shining,

En fait tu as 3 boutons créés par la procedure CreateButton  :

    fAddButton:TBrowserButton; //Add est pour additionner un truc
    fDelButton:TBrowserButton; //Del pour supprimer un truc
    fActiveButton:TBrowserButton; //Active pour activer un truc


Ces boutons admettent les  propriétés

    Property OnMouseDown;
    Property OnMouseMove;
    Property OnMouseUp;
    Property OnClick;
    Property OnDblClick;


Quand on installe le composant dans l'insepcteur d'objet tu as 3 croix qui apparaisent avec le nom des boutons en question. Quand on clique dessus une liste déroulante apparait avec les proriétés des boutons (Couleurs, largueur, hauteur, ect ect) par contre dans la partie Evenements de l'inspecteur d'objet aucune des évenements (OnMouseDown, OnMouseMove, OnMouseUp, OnClick, OnDblClick) n'apparaissent et c'est ca que je ne comprend pas.

L'intéret est "simple" : L'idée est  de pouvoir récupérer dans l'inspecteur d'objet les évenements et quand on clique dessus de voir apparaitre dans la forme

procedure TForm1.BrowserEffects1AddButtonClick(Sender: TObject);
begin

end;

C'est à dire l'équivalent de  procedure TForm1.Button1Click(Sender: TObject); quand tu poses un TButton sur une form et que tu cliques dessus

Ps : * "SetTracksGrid" : Ah j'ai mal fais le ménage
      *Ce que tu sous entend par classe dans mon cas, c'est de rajouter TEffectCnt = class juste apres le Type

     *Pour faire simple (j'aurais du présenter les choses comme cela )  :

type
  Private
    fImage:TImage,
  Protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    Property Image:TImage Read fImage Write fImage;
End;

Dans l'inspecteur tu vera les propriétés du TImage par ses évenements

Merci

mardi 26 août 2008 à 17:19:02 | Re : Evènements d'un enfant dans l'inspecteur d'objet

Francky23012301

Membre Club
Dans l'inspecteur tu vera les propriétés du TImage pas ses évenement (décidémment )
mardi 26 août 2008 à 18:29:03 | Re : Evènements d'un enfant dans l'inspecteur d'objet

shining

Réponse acceptée !

Re-Salut Francky

Okay je crois que je viens de comprendre en tout cas après ces derniers détails !!!

et à priori je vois deux solutions possibles

le 1er:
tout au début du composant juste en dessous de "  {>>TITLE}"
on met :
TOnBrowserButtonMouseDown = procedure(Sender : TObject; AButton : TBrowserButton; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) of object;

note ceci n'est qu'à titre d'exemple !!( faudra complèté les autres événements)

jusque là tu me suis ?

ensuite..., dans la classe TBrowseEffects >> lisibilité en protected

procedure OnBntMouseDown(Sender : TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

ceci servira à l'interception des événements des boutons là encore faudra faire de même pour les autres événements voulus !!!

bon jusque là c'est pas trop compliquer !!!

ensuite..., toujours dans la classe TBrowserEffects dans la partie Published

published
  OnBrowserButtonMouseDown  : TOnBrowserButtonMouseDown read FOnBrowserButtonMouseDown write FOnBrowserButtonMouseDown;
 
ensuite..., toujours dans la classe TBrowserEffects dans la partie implémentation de procedure CreateButton(...)

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;
        OnMouseDown        := OnButtonMouseDown;
        // ici les autres événements (OnMouseMove ect..)
    end;
end;

ensuite... , toujours dans la classe TBrowserEffects partie implémentation de 
procedure OnButtonMouseDown(...)

procedure TBrowserEffects.OnButtonMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
      if Assigned(FOnBrowserButtonMouseDown) then
       FOnBrowserButtonMouseDown(Self , (Sender as TBrowserButton) , Button , Shift , X , Y);
end;

et au final c'est le composant TBrowserEffects qui contient les événéments des boutons ce qui est plutôt pratique

sinon la 2ème solution est à peu près identique sauf qu'il faudra créer un composant de gestion dans le genre
 

TBrowserButtonManager = class (TComponent)

... ensuite faudra faire les gestion des boutons tout comme décrit plus haut
avec
OnAddButtonMouseMove...
OnActiveButtonMouse

et dans la partie published de TBrowserEffects
published
    BrowserManager : TBrowserButtonManager read FBrowserManager write SetBrowserManager;

et ne pas oublié dans la procedureRegister(..) d'inclure [TBrowserManager]

ceci étant dit je viens de testé la 1ère méthode et elle marche très bien !!!

on prenant les exemples cités plsu haut tu peux ajouer autant d'événements que tu voudras "OnAddClick ect.."

si quelques choses n'est pas clair dans mon exemples fait le moi savoir auquel cas je fait un upload de la modif


@+ et bonne et pardon pour la migraine !!!





 

 

 








   















Shining-Freeman

mardi 26 août 2008 à 18:33:37 | Re : Evènements d'un enfant dans l'inspecteur d'objet

shining

arf j'ai oublié de dire qu'il faudra bien entendu re-déclaré en forward la classe
 TBrowserButton juste après  "  {>>TITLE}"

TBrowserButton = class; <== en mettant ceci mais chui sûr que ce n'est pas nécessaire de le signalé vu la qualité de ton niveau  !!!

sur ce @+

Shining-Freeman
mardi 26 août 2008 à 18:35:28 | Re : Evènements d'un enfant dans l'inspecteur d'objet

shining

Réponse acceptée !
vu la qualité de ton code et de ton niveau arf oué spo mwa c cette fichu textbox

Shining-Freeman
mardi 26 août 2008 à 19:49:23 | Re : Evènements d'un enfant dans l'inspecteur d'objet

WhiteHippo

Membre Club
Réponse acceptée !

Bonsoir

Bon rapidement en regardant ton code, je dirais :

constructor TParamsSound.Create(AOwner:TComponent);
begin
  inherited Create(AOwner);
  Name := 'ParamSound' ;
  SetSubComponent(TRUE);

  Width:=110;
  Height:=250;
  Color:=$00A79AA0;
  CreateGaugeBar(fVolGauge  ,'VolGaugeBar'  ,0,'VOL ',0,100);
  CreateGaugeBar(fPanGauge  ,'PanGaugeBar'  ,1,'PAN ',-100,100);
  CreateGaugeBar(fFreqGauge ,'FreqGaugeBar' ,2,'FREQ ',0,44100);
  CreateGaugeBar(fTempoGauge,'TempoGaugeBar',3,'TEMPO ',0,220);
end;

Procedure TParamsSound.CreateGaugeBar(Var AGaugeBar:TGaugeBar;const AName:String;Index:Cardinal; Title:String; MinVal, MaxVal:Integer);
Begin
  AGaugeBar:=TGaugeBar.Create(self);
  With AGaugeBar Do
    Begin
      Parent:=self;
      Name := AName ;
      SetSubComponent(TRUE);
      Width:=Self.Width-10;
      Left:=5;
      Min:=MinVal;
      Max:=MaxVal;
      Pos:=(Min+Max) Div 2;
      Top:=30*Index+2;
      Text:=Title;
    End;
End;

Cordialement.


"L'imagination est plus importante que le savoir." Albert Einstein

mercredi 27 août 2008 à 01:46:30 | Re : Evènements d'un enfant dans l'inspecteur d'objet

Francky23012301

Membre Club
Merci les gars,

@Shining  : content de voir .  J'avais pensé à cette solution mais ca me semblant plus du bricolage. Enfin bref j'ai pas le choix donc c'est ce que je vais faire merci

@WhiteHippo : Bien vus pour les constantes ca va obtimiser le code (et f0xi va moins raler lol). Par contre pour les strings : c'est un caption en fait et comme c'est pour controler le volume, le pan ect ect je suis pas sur que de rajouter GaugeBar soit utilie. Dis moi ce que tu en penses .

1 2

Cette discussion est classée dans : end, self, value, procedure, begin


Répondre à ce message

Sujets en rapport avec ce message

Problème de control dans un composant hérité de TScrollBox [ par Francky23012301 ] Salut à tous,Je suis entrain de réaliser un composant. J'ai fais des tests préalable et au moment de son élaboration voila que je suis confronté à un Rajouter un TreeNode dans un TreeView [ par Francky23012301 ] Salut à tous,Je suis entrain de réaliser un composant dont voici le code :unit BrowserEffects;interfaceuses  Windows, Messages, SysUtils, Classes, Con Problème de scintillement malgré le DoubleBuffered [ par Francky23012301 ] Salut à tous,Voila je suis entrain de développer un composant de type potentiomètre. Tout fonctionne enfin presque . Ca scintille à mort et quand je Opinion sur un composant TTreePanel [ par Francky23012301 ] Salut à tous,Ca commence à etre de notoriété internationale : Francky et le Design, ca fait deux .Alors quitte à faire un truc autant faire un truc sy résolution sudoku backtrack [ par zwyx ] Bonjour à tous, Pour ceux qui aiment bien se creuser la tête sur de l'algorithmie... J'ai écrit un code permettant de résoude une grille de sudoku ré Refresh trop lent dans un composant [ par Francky23012301 ] Salut la compagnieJ'ai réalisé un petit composant  : Celui fonctionne très bien sauf qu'il est terriblement lent ce qui fait que le refresh de la fich pilotage ouverture/fermeture d'une barrière de sécurité pour boitier TC/USB16IO [ par Wiska ] Bonjour, Avant tout, voici la description de ce fameux boitier: "Le module TC/USB-16IO est un module d'interface pc, comportant 8 entrées logiques iso TDateTime dans un StringGrid [ par notrica ] Salut,j'ai  placé un TDateTime dans un StringGrid  pour me permettre de selectionner la date à saisir. La date est séléctionnée sans problème, mais lo Bien installer un API [ par Also know as ] Bonjour a tous, Bon alors apres une longue surune certaine erreur enfin resolu :-), on m'a conseille d'utiliser un nouvel API. Je souhaiterais utilise PB Bitblt [ par fbalien ] Bonjour J'ai des soucis avec l'API Bilblt je l'utilise pour faire des captures d'écrans J'ai au bout d'un moment une erreur "Espace insuffisant pour t


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,784 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales