begin process at 2008 07 05 05:47:13
1 205 051 membres
37 nouveaux aujourd'hui
14 118 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UNE BARRE DE COMPRESSION ET PROGRESSION DE TYPE WINRAR (TRARBAR)


Information sur la source

Catégorie :Composants Niveau : Débutant Date de création : 23/02/2004 Date de mise à jour : 08/02/2005 19:37:30 Vu / téléchargé: 4 660 / 501

Note :
9,5 / 10 - par 2 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

Description

Une jauge de progression et de compression comme celle qu'on trouve dans WinRAR... super pratique et très belle par ailleurs!

Pour installer le composant:
http://www.delphifr.com/tutorial.aspx?id=86

Source

  • unit rar_bar;
  • interface
  • uses
  • Windows, Messages, SysUtils, Classes, Graphics,
  • Controls, Forms, Dialogs, StdCtrls, Consts;
  • type
  • TRarBar = class(TCustomControl)
  • private
  • FMinValue: Integer;
  • FMaxValue: Integer;
  • FCurValue: Integer;
  • FRatValue: Integer;
  • FBackColor: TColor;
  • FOnProgress: TNotifyEvent;
  • procedure PaintBackground;
  • procedure PaintProgress;
  • procedure PaintRate;
  • procedure SetBackColor(Value: TColor);
  • procedure SetMinValue(Value: Longint);
  • procedure SetMaxValue(Value: Longint);
  • procedure SetProgress(Value: Longint);
  • procedure SetRate(Value: Longint);
  • protected
  • procedure Paint; override;
  • public
  • constructor Create(AOwner: TComponent); override;
  • procedure IncrementProgress;
  • procedure IncrementRate;
  • function GetPercentDone: integer;
  • function GetRatePercentDone: integer;
  • published
  • property Align;
  • property Enabled;
  • property ShowHint;
  • property Hint;
  • property Visible;
  • property ParentShowHint;
  • property PopupMenu;
  • property BackColor: TColor read FBackColor write SetBackColor default clBtnFace;
  • property Min: Longint read FMinValue write SetMinValue default 0;
  • property Max: Longint read FMaxValue write SetMaxValue default 100;
  • property Position: Longint read FCurValue write SetProgress;
  • property Rate: Longint read FRatValue write SetRate;
  • {évènements}
  • property OnClick;
  • property OnDblClick;
  • property OnMouseDown;
  • property OnMouseMove;
  • property OnMouseUp;
  • property OnProgress: TNotifyEvent read FOnProgress write FOnProgress;
  • end;
  • var RarBmp : TBitmap;
  • procedure Register;
  • implementation
  • function SolveForY(X, Z: Integer): integer;
  • begin
  • if Z=0 then Result := 0
  • else Result:=trunc((X*100)/Z);
  • end;
  • constructor TRarBar.Create(AOwner: TComponent);
  • begin
  • inherited Create(AOwner);
  • ControlStyle := ControlStyle + [csOpaque, csCaptureMouse,
  • csClickEvents, csDoubleClicks];
  • FMinValue:=0;
  • FMaxValue:=100;
  • FCurValue:=0;
  • FRatValue:=0;
  • FBackColor:=clBtnFace;
  • Width:=177;
  • Height:=17;
  • end;
  • function TRarBar.GetPercentDone: integer;
  • begin
  • Result := SolveForY(FCurValue - FMinValue, FMaxValue - FMinValue);
  • end;
  • function TRarBar.GetRatePercentDone: integer;
  • begin
  • Result := SolveForY(FRatValue - FMinValue, FMaxValue - FMinValue);
  • end;
  • procedure TRarBar.Paint;
  • begin
  • with Canvas do
  • begin
  • rarbmp.Height:=Height;
  • rarbmp.Width:=Width;
  • PaintBackground;
  • PaintProgress;
  • PaintRate;
  • Canvas.Draw(0,0,RarBmp);
  • if Assigned(FOnProgress) then FOnProgress(Self);
  • Refresh;
  • end;
  • end;
  • procedure TRarBar.PaintBackground;
  • begin
  • with RarBmp.Canvas do
  • begin
  • {--- arrière plan ---}
  • Brush.Style:=bsSolid;
  • Brush.Color:=FBackColor;
  • Pen.Color:=FBackColor;
  • RarBmp.Canvas.Rectangle(0,0,Width,Height);
  • {--- fond noir ---}
  • Brush.Style:=bsSolid;
  • Brush.Color:=clBlack;
  • Pen.Width:=1;
  • Pen.Color:=clBlack;
  • RarBmp.Canvas.Rectangle(1,2,Width,Height);
  • {--- contour beige ---}
  • Brush.Style:=bsClear;
  • Pen.Width:=1;
  • Pen.Color:=$9898B8;
  • RarBmp.Canvas.Rectangle(0,0,Width-1,Height-2);
  • {--- contour beige ---}
  • Brush.Style:=bsClear;
  • Pen.Width:=1;
  • Pen.Color:=$9898B8;
  • RarBmp.Canvas.Rectangle(0,0,Width-1,Height-2);
  • {--- contour pourpre ---}
  • Brush.Style:=bsClear;
  • Pen.Width:=1;
  • Pen.Color:=$8080A0;
  • RarBmp.Canvas.Rectangle(1,1,Width-2,Height-3);
  • {--- remplissage ---}
  • Brush.Style:=bsSolid;
  • Brush.Color:=$707098;
  • Pen.Color:=$707098;
  • Pen.Width:=1;
  • RarBmp.Canvas.Rectangle(2,2,Width-3,Height-4);
  • {--- ligne grise ---}
  • Pen.Color:=$606060;
  • Pen.Width:=1;
  • RarBmp.Canvas.MoveTo(0,Height-2);
  • RarBmp.Canvas.LineTo(Width-1,Height-2);
  • end;
  • end;
  • procedure TRarBar.PaintProgress;
  • var i, wi : integer;
  • begin
  • with RarBmp.Canvas do
  • begin
  • i:=GetPercentDone;
  • {--- trace bordure gauche ---}
  • if i>0 then
  • begin
  • {--- ligne blanche ---}
  • Pen.Color:=clWhite;
  • Pen.Width:=1;
  • RarBmp.Canvas.MoveTo(0,0);
  • RarBmp.Canvas.LineTo(0,Height-2);
  • {--- ligne violasse ---}
  • Pen.Color:=$F0E8E8;
  • Pen.Width:=1;
  • RarBmp.Canvas.MoveTo(1,0);
  • RarBmp.Canvas.LineTo(1,Height-2);
  • end;
  • {--- trace le remplissage ---}
  • wi:=((Width-3)*i) div 100+2;
  • {--- ligne blanche ---}
  • Pen.Color:=clWhite;
  • Pen.Width:=1;
  • RarBmp.Canvas.MoveTo(2,0);
  • RarBmp.Canvas.LineTo(wi,0);
  • {--- ligne violasse ---}
  • Pen.Color:=$F0E8E8;
  • Pen.Width:=1;
  • //haut
  • RarBmp.Canvas.MoveTo(2,1);
  • RarBmp.Canvas.LineTo(wi,1);
  • //bas
  • RarBmp.Canvas.MoveTo(2,Height-3);
  • RarBmp.Canvas.LineTo(wi,Height-3);
  • {--- remplissage ---}
  • Brush.Style:=bsSolid;
  • Brush.Color:=$D8D8D8;
  • Pen.Color:=$D8D8D8;
  • Pen.Width:=1;
  • RarBmp.Canvas.Rectangle(2,2,wi,Height-3);
  • {--- trace du marqueur relief ---}
  • if wi>2 then
  • begin
  • Pixels[1,0]:=clWhite;
  • Pixels[wi-1,0]:=clWhite;
  • Pen.Width:=1;
  • Pen.Color:=$F0E8E8;
  • MoveTo(wi-1,1);
  • LineTo(wi-1,Height-3);
  • end;
  • if wi<Width-2 then
  • begin
  • Pixels[wi+1,0]:=$9898B8;
  • Pixels[wi+1,Height-3]:=$9898B8;
  • end;
  • if (wi>2) and (wi<Width-2) then
  • begin
  • Pen.Color:=$8080A0;
  • MoveTo(wi+1,1);
  • LineTo(wi+1,Height-4);
  • Pen.Color:=$606060;
  • MoveTo(wi,0);
  • LineTo(wi,Height-2);
  • end;
  • end;
  • end;
  • procedure TRarBar.PaintRate;
  • var i, wi : integer;
  • begin
  • with RarBmp.Canvas do
  • begin
  • i:=GetRatePercentDone;
  • {--- trace bordure gauche ---}
  • if i>0 then
  • begin
  • {--- ligne jaune ---}
  • Pen.Color:=$C0FFFF;
  • Pen.Width:=1;
  • RarBmp.Canvas.MoveTo(0,0);
  • RarBmp.Canvas.LineTo(0,Height-2);
  • {--- ligne orangée ---}
  • Pen.Color:=$B8D8E8;
  • Pen.Width:=1;
  • RarBmp.Canvas.MoveTo(1,0);
  • RarBmp.Canvas.LineTo(1,Height-2);
  • end;
  • {--- trace le remplissage ---}
  • wi:=((Width-3)*i) div 100+2;
  • if wi>2 then
  • Pixels[1,0]:=$C0FFFF;
  • {--- ligne jaune ---}
  • Pen.Color:=$C0FFFF;
  • Pen.Width:=1;
  • RarBmp.Canvas.MoveTo(2,0);
  • RarBmp.Canvas.LineTo(wi,0);
  • {--- ligne orangée ---}
  • Pen.Color:=$B8D8E8;
  • Pen.Width:=1;
  • //haut
  • RarBmp.Canvas.MoveTo(2,1);
  • RarBmp.Canvas.LineTo(wi,1);
  • //bas
  • RarBmp.Canvas.MoveTo(2,Height-3);
  • RarBmp.Canvas.LineTo(wi,Height-3);
  • {--- remplissage ---}
  • Brush.Style:=bsSolid;
  • Brush.Color:=$A0C0D0;
  • Pen.Color:=$A0C0D0;
  • Pen.Width:=1;
  • RarBmp.Canvas.Rectangle(2,2,wi,Height-3);
  • end;
  • end;
  • procedure TRarBar.SetMinValue(Value: Longint);
  • begin
  • if Value <> FMinValue then
  • begin
  • if Value > FMaxValue then
  • if not (csLoading in ComponentState) then
  • raise EInvalidOperation.CreateFmt(SOutOfRange, [-MaxInt, FMaxValue - 1]);
  • FMinValue := Value;
  • if FCurValue < Value then FCurValue := Value;
  • if FRatValue < Value then FRatValue := Value;
  • Refresh;
  • end;
  • end;
  • procedure TRarBar.SetMaxValue(Value: Longint);
  • begin
  • if Value <> FMaxValue then
  • begin
  • if Value < FMinValue then
  • if not (csLoading in ComponentState) then
  • raise EInvalidOperation.CreateFmt(SOutOfRange, [FMinValue + 1, MaxInt]);
  • FMaxValue := Value;
  • if FCurValue > Value then FCurValue := Value;
  • if FRatValue > Value then FRatValue := Value;
  • Refresh;
  • end;
  • end;
  • procedure TRarBar.SetProgress(Value: Longint);
  • var TempPercent: integer;
  • begin
  • TempPercent := GetPercentDone; { remember where we were }
  • if Value < FMinValue then
  • Value := FMinValue
  • else if Value > FMaxValue then
  • Value := FMaxValue;
  • if FCurValue <> Value then
  • begin
  • FCurValue := Value;
  • if TempPercent <> GetPercentDone then { only Refresh if percentage changed }
  • Refresh;
  • end;
  • end;
  • procedure TRarBar.SetRate(Value: Longint);
  • var TempPercent: integer;
  • begin
  • TempPercent := GetRatePercentDone; { remember where we were }
  • if Value < FMinValue then
  • Value := FMinValue
  • else if Value > FMaxValue then
  • Value := FMaxValue;
  • if FRatValue <> Value then
  • begin
  • FRatValue := Value;
  • if TempPercent <> GetRatePercentDone then { only Refresh if percentage changed }
  • Refresh;
  • end;
  • end;
  • procedure TRarBar.SetBackColor(Value: TColor);
  • begin
  • if Value <> FBackColor then
  • begin
  • FBackColor:=Value;
  • Refresh;
  • end;
  • end;
  • procedure TRarBar.IncrementProgress;
  • begin
  • Position:=FCurValue+1;
  • end;
  • procedure TRarBar.IncrementRate;
  • begin
  • Position:=FRatValue+1;
  • end;
  • procedure Register;
  • begin
  • RegisterComponents('Win32', [TRarBar]);
  • end;
  • initialization
  • rarbmp:=TBitmap.Create;
  • finalization
  • rarbmp.Free;
  • end.
unit rar_bar;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, Consts;

type
  TRarBar = class(TCustomControl)
  private
    FMinValue: Integer;
    FMaxValue: Integer;
    FCurValue: Integer;
    FRatValue: Integer;
    FBackColor: TColor;
    FOnProgress: TNotifyEvent;
    procedure PaintBackground;
    procedure PaintProgress;
    procedure PaintRate;
    procedure SetBackColor(Value: TColor);
    procedure SetMinValue(Value: Longint);
    procedure SetMaxValue(Value: Longint);
    procedure SetProgress(Value: Longint);
    procedure SetRate(Value: Longint);
  protected
    procedure Paint; override;
  public
    constructor Create(AOwner: TComponent); override;
    procedure IncrementProgress;
    procedure IncrementRate;
     function GetPercentDone: integer;
     function GetRatePercentDone: integer;
  published
    property Align;
    property Enabled;
    property ShowHint;
    property Hint;
    property Visible;
    property ParentShowHint;
    property PopupMenu;
    property BackColor: TColor read FBackColor write SetBackColor default clBtnFace;
    property Min: Longint read FMinValue write SetMinValue default 0;
    property Max: Longint read FMaxValue write SetMaxValue default 100;
    property Position: Longint read FCurValue write SetProgress;
    property Rate: Longint read FRatValue write SetRate;
  {évènements}
    property OnClick;
    property OnDblClick;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnProgress: TNotifyEvent read FOnProgress write FOnProgress;
end;

var RarBmp : TBitmap;

procedure Register;

implementation

  function SolveForY(X, Z: Integer): integer;
  begin
    if Z=0 then Result := 0
    else Result:=trunc((X*100)/Z);
  end;

constructor TRarBar.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csOpaque, csCaptureMouse,
                                  csClickEvents, csDoubleClicks];
  FMinValue:=0;
  FMaxValue:=100;
  FCurValue:=0;
  FRatValue:=0;
  FBackColor:=clBtnFace;
  Width:=177;
  Height:=17;
end;

function TRarBar.GetPercentDone: integer;
begin
  Result := SolveForY(FCurValue - FMinValue, FMaxValue - FMinValue);
end;

function TRarBar.GetRatePercentDone: integer;
begin
  Result := SolveForY(FRatValue - FMinValue, FMaxValue - FMinValue);
end;

procedure TRarBar.Paint;
begin
  with Canvas do
    begin
      rarbmp.Height:=Height;
      rarbmp.Width:=Width;
      PaintBackground;
      PaintProgress;
      PaintRate;
      Canvas.Draw(0,0,RarBmp);
      if Assigned(FOnProgress) then FOnProgress(Self);
      Refresh;
    end;
end;

procedure TRarBar.PaintBackground;
begin
  with RarBmp.Canvas do
    begin
  {--- arrière plan ---}
      Brush.Style:=bsSolid;
      Brush.Color:=FBackColor;
      Pen.Color:=FBackColor;
      RarBmp.Canvas.Rectangle(0,0,Width,Height);
  {--- fond noir ---}
      Brush.Style:=bsSolid;
      Brush.Color:=clBlack;
      Pen.Width:=1;
      Pen.Color:=clBlack;
      RarBmp.Canvas.Rectangle(1,2,Width,Height);
  {--- contour beige ---}
      Brush.Style:=bsClear;
      Pen.Width:=1;
      Pen.Color:=$9898B8;
      RarBmp.Canvas.Rectangle(0,0,Width-1,Height-2);
  {--- contour beige ---}
      Brush.Style:=bsClear;
      Pen.Width:=1;
      Pen.Color:=$9898B8;
      RarBmp.Canvas.Rectangle(0,0,Width-1,Height-2);
  {--- contour pourpre ---}
      Brush.Style:=bsClear;
      Pen.Width:=1;
      Pen.Color:=$8080A0;
      RarBmp.Canvas.Rectangle(1,1,Width-2,Height-3);
  {--- remplissage ---}
      Brush.Style:=bsSolid;
      Brush.Color:=$707098;
      Pen.Color:=$707098;
      Pen.Width:=1;
      RarBmp.Canvas.Rectangle(2,2,Width-3,Height-4);
  {--- ligne grise ---}
      Pen.Color:=$606060;
      Pen.Width:=1;
      RarBmp.Canvas.MoveTo(0,Height-2);
      RarBmp.Canvas.LineTo(Width-1,Height-2);
    end;
end;

procedure TRarBar.PaintProgress;
var i, wi : integer;
begin
  with RarBmp.Canvas do
    begin
      i:=GetPercentDone;
{--- trace bordure gauche ---}
        if i>0 then
          begin
    {--- ligne blanche ---}
            Pen.Color:=clWhite;
            Pen.Width:=1;
            RarBmp.Canvas.MoveTo(0,0);
            RarBmp.Canvas.LineTo(0,Height-2);
    {--- ligne violasse ---}
            Pen.Color:=$F0E8E8;
            Pen.Width:=1;
            RarBmp.Canvas.MoveTo(1,0);
            RarBmp.Canvas.LineTo(1,Height-2);
          end;

{--- trace le remplissage ---}
        wi:=((Width-3)*i) div 100+2;
          {--- ligne blanche ---}
            Pen.Color:=clWhite;
            Pen.Width:=1;
            RarBmp.Canvas.MoveTo(2,0);
            RarBmp.Canvas.LineTo(wi,0);
          {--- ligne violasse ---}
            Pen.Color:=$F0E8E8;
            Pen.Width:=1;
            //haut
            RarBmp.Canvas.MoveTo(2,1);
            RarBmp.Canvas.LineTo(wi,1);
            //bas
            RarBmp.Canvas.MoveTo(2,Height-3);
            RarBmp.Canvas.LineTo(wi,Height-3);
          {--- remplissage ---}
            Brush.Style:=bsSolid;
            Brush.Color:=$D8D8D8;
            Pen.Color:=$D8D8D8;
            Pen.Width:=1;
            RarBmp.Canvas.Rectangle(2,2,wi,Height-3);

{--- trace du marqueur relief ---}
            if wi>2 then
              begin
                Pixels[1,0]:=clWhite;
                Pixels[wi-1,0]:=clWhite;
                Pen.Width:=1;
                Pen.Color:=$F0E8E8;
                MoveTo(wi-1,1);
                LineTo(wi-1,Height-3);
              end;
            if wi<Width-2 then
              begin
                Pixels[wi+1,0]:=$9898B8;
                Pixels[wi+1,Height-3]:=$9898B8;
              end;
            if (wi>2) and (wi<Width-2) then
              begin
                Pen.Color:=$8080A0;
                MoveTo(wi+1,1);
                LineTo(wi+1,Height-4);

                Pen.Color:=$606060;
                MoveTo(wi,0);
                LineTo(wi,Height-2);
              end;
    end;
end;

procedure TRarBar.PaintRate;
var i, wi : integer;
begin
  with RarBmp.Canvas do
    begin
      i:=GetRatePercentDone;
{--- trace bordure gauche ---}
        if i>0 then
          begin
    {--- ligne jaune ---}
            Pen.Color:=$C0FFFF;
            Pen.Width:=1;
            RarBmp.Canvas.MoveTo(0,0);
            RarBmp.Canvas.LineTo(0,Height-2);
    {--- ligne orangée ---}
            Pen.Color:=$B8D8E8;
            Pen.Width:=1;
            RarBmp.Canvas.MoveTo(1,0);
            RarBmp.Canvas.LineTo(1,Height-2);
          end;

{--- trace le remplissage ---}
        wi:=((Width-3)*i) div 100+2;
          if wi>2 then
            Pixels[1,0]:=$C0FFFF;
          {--- ligne jaune ---}
            Pen.Color:=$C0FFFF;
            Pen.Width:=1;
            RarBmp.Canvas.MoveTo(2,0);
            RarBmp.Canvas.LineTo(wi,0);
          {--- ligne orangée ---}
            Pen.Color:=$B8D8E8;
            Pen.Width:=1;
            //haut
            RarBmp.Canvas.MoveTo(2,1);
            RarBmp.Canvas.LineTo(wi,1);
            //bas
            RarBmp.Canvas.MoveTo(2,Height-3);
            RarBmp.Canvas.LineTo(wi,Height-3);
          {--- remplissage ---}
            Brush.Style:=bsSolid;
            Brush.Color:=$A0C0D0;
            Pen.Color:=$A0C0D0;
            Pen.Width:=1;
            RarBmp.Canvas.Rectangle(2,2,wi,Height-3);
    end;
end;

procedure TRarBar.SetMinValue(Value: Longint);
begin
  if Value <> FMinValue then
  begin
    if Value > FMaxValue then
      if not (csLoading in ComponentState) then
        raise EInvalidOperation.CreateFmt(SOutOfRange, [-MaxInt, FMaxValue - 1]);
    FMinValue := Value;
    if FCurValue < Value then FCurValue := Value;
    if FRatValue < Value then FRatValue := Value;
    Refresh;
  end;
end;

procedure TRarBar.SetMaxValue(Value: Longint);
begin
  if Value <> FMaxValue then
  begin
    if Value < FMinValue then
      if not (csLoading in ComponentState) then
        raise EInvalidOperation.CreateFmt(SOutOfRange, [FMinValue + 1, MaxInt]);
    FMaxValue := Value;
    if FCurValue > Value then FCurValue := Value;
    if FRatValue > Value then FRatValue := Value;
    Refresh;
  end;
end;

procedure TRarBar.SetProgress(Value: Longint);
var TempPercent: integer;
begin
  TempPercent := GetPercentDone;  { remember where we were }
  if Value < FMinValue then
    Value := FMinValue
  else if Value > FMaxValue then
    Value := FMaxValue;
  if FCurValue <> Value then
    begin
      FCurValue := Value;
      if TempPercent <> GetPercentDone then { only Refresh if percentage changed }
        Refresh;
    end;
end;

procedure TRarBar.SetRate(Value: Longint);
var TempPercent: integer;
begin
  TempPercent := GetRatePercentDone;  { remember where we were }
  if Value < FMinValue then
    Value := FMinValue
  else if Value > FMaxValue then
    Value := FMaxValue;
  if FRatValue <> Value then
    begin
      FRatValue := Value;
      if TempPercent <> GetRatePercentDone then { only Refresh if percentage changed }
        Refresh;
    end;
end;

procedure TRarBar.SetBackColor(Value: TColor);
begin
  if Value <> FBackColor then
    begin
      FBackColor:=Value;
      Refresh;
    end;
end;

procedure TRarBar.IncrementProgress;
begin
  Position:=FCurValue+1;
end;

procedure TRarBar.IncrementRate;
begin
  Position:=FRatValue+1;
end;

procedure Register;
begin
  RegisterComponents('Win32', [TRarBar]);
end;

initialization
  rarbmp:=TBitmap.Create;
finalization
  rarbmp.Free;
end.

Conclusion

Vous pouvez toujours visiter http://altert.family.free.fr/
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

01 novembre 2004 19:55:09 :
Pas grand chose... un petit ~.Free qui manquait par exemple.
02 février 2005 17:11:21 :
- Change titre - Change description - Enlève l'Exe - Actualise mes infos sous mon logo Le composant n'a pas été modifié
08 février 2005 19:37:31 :
- La capture n'avait pas été bien envoyée (oh??) - Ajout du code source du composant dans la page
  • signaler à un administrateur
    Commentaire de bloom1 le 02/09/2005 18:53:17

    Wow c'est vraiment cool comme composant.
    Si tu veux me donner de l'aide, mon e-mail pour msn messenger c'est coolsalex666@hotmail.com
    Et ton composant il fonctionne très bien, pas de bug.
    Merci :)
    bloom1

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS