begin process at 2008 08 29 20:16:48
1 233 870 membres
392 nouveaux aujourd'hui
14 294 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 !

TSPEEDBUTTON TYPE VA-ET-VIENT


Information sur la source

Description

Le Composant TDoubleSpeed est TSpeedButton type va-et-vient..
En cliquant dessus le Caption du bouton passe de Caption à caption2.
Sa propriété Glyph doit être constituée d'une image composée de 4 images
16*16 (=64*16). Seules la 1ère et dernière (4ème) image sont prises en
considération. On passe donc au Click de la 1ère image(Caption) à la 4ème
image(Caption2).

Source

  • unit DoubleSpeed; // Composant créé par Guy ® 2007 - paounet@free.fr
  • interface
  • uses SysUtils,Classes,Controls,Buttons,Graphics,ExtCtrls;
  • type
  • TCaption=String; // Propriété Caption2 rajoutée au Composant
  • TAbout=String; // Propriété About rajoutée au composant
  • THint=String; // Propriété Hint2 rajoutée au composant
  • TDoubleSpeed = class(TSpeedButton)
  • private { Déclarations privées }
  • FCaption:TCaption;FAbout:TAbout;FHint:THint; // Variables utilisées
  • //Surcharge de la méthode OnClick du composant DoubleSpeed
  • protected { Déclarations protégées }
  • public { Déclarations publiques }
  • Constructor Create (Aowner:Tcomponent);Override;
  • Destructor Destroy;override;
  • published { Déclarations publiées }
  • // Propriété ABout rajoutée en lecture seule
  • Property Hint;
  • Property Tag;
  • Property Font;
  • Property About:TAbout read FAbout;
  • Property Caption2:TCaption read FCaption write FCaption;
  • Property Hint2:THint read FHint write FHint;
  • Procedure Click;override; //Surchage du OnClick
  • end;
  • procedure Register;
  • implementation
  • // Création Composant TDoubleSpeed
  • constructor TDoubleSpeed.Create(Aowner:TComponent);
  • begin
  • inherited Create(Aowner);FAbout:='@ Guy Bidi 2007';
  • AllowAllUp:=True;GroupIndex:=4;ShowHint:=True;
  • end;
  • Procedure TDoubleSpeed.Click; // Surchage du OnClick de DoubleSpeed
  • Var T1,T2:String;
  • Begin
  • Tag:=Not(Tag); // Changement du Tag(0,-1) au Click du composant
  • T1:=Caption;Caption:=Caption2;Caption2:=T1;
  • T2:=Hint;Hint:=Hint2;Hint2:=T2;
  • If Assigned(OnClick) then OnClick(Self); //Réactive le Click Normal
  • End;
  • destructor TDoubleSpeed.Destroy; // Destruction du Composant
  • begin
  • inherited Destroy;
  • end;
  • procedure Register; // Enregistrement du composant dans la Palette Guy
  • begin
  • RegisterComponents('Guy',[TDoubleSpeed]);
  • end;
  • end.
unit DoubleSpeed;   // Composant créé par Guy ® 2007 - paounet@free.fr
interface
uses SysUtils,Classes,Controls,Buttons,Graphics,ExtCtrls;
type
  TCaption=String; // Propriété Caption2 rajoutée au Composant
  TAbout=String; // Propriété About rajoutée au composant
  THint=String; // Propriété Hint2 rajoutée au composant
  TDoubleSpeed = class(TSpeedButton)
  private { Déclarations privées }
    FCaption:TCaption;FAbout:TAbout;FHint:THint; // Variables utilisées
  //Surcharge de la méthode OnClick du composant DoubleSpeed
  protected { Déclarations protégées }
  public { Déclarations publiques }
    Constructor Create (Aowner:Tcomponent);Override;
    Destructor Destroy;override;
  published { Déclarations publiées }
      // Propriété ABout rajoutée en lecture seule
    Property Hint;
    Property Tag;
    Property Font;
    Property About:TAbout read FAbout;
    Property Caption2:TCaption read FCaption write FCaption;
    Property Hint2:THint read FHint write FHint;
    Procedure Click;override; //Surchage du OnClick
end;
procedure Register;
implementation
// Création Composant TDoubleSpeed
constructor TDoubleSpeed.Create(Aowner:TComponent);
begin
  inherited Create(Aowner);FAbout:='@ Guy Bidi 2007';
  AllowAllUp:=True;GroupIndex:=4;ShowHint:=True;
end;
Procedure TDoubleSpeed.Click; // Surchage du OnClick de DoubleSpeed
Var T1,T2:String;
Begin
  Tag:=Not(Tag); // Changement du Tag(0,-1) au Click du composant
  T1:=Caption;Caption:=Caption2;Caption2:=T1;
  T2:=Hint;Hint:=Hint2;Hint2:=T2;
  If Assigned(OnClick) then OnClick(Self); //Réactive le Click Normal
End;
destructor TDoubleSpeed.Destroy; // Destruction du Composant
begin
  inherited Destroy;
end;
procedure Register; // Enregistrement du composant dans la Palette Guy
begin
  RegisterComponents('Guy',[TDoubleSpeed]);
end;
end.

Conclusion

Le passage de l'un à l'autre se fait par le tag du Bouton ( Tag=0 et Not(Tag)=-1)
Dans le DoubleSpeed.OnClick(Sender:TObject) il ne vous reste quà
incorporer le reste de code pour chaque état... dans votre feuille
--------------------------------------------------------------
  if Tag=0 then Begin { Ici le code pour le Click Marche } End
  Else Begin { { Ici le code pour le Click Arrêt } End;
-------------------------------------------------------------
Un exemple vous est donnée dans le Zip (Exemple.exe)
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

  • signaler à un administrateur
    Commentaire de f0xi le 13/08/2007 02:23:33 administrateur CS

    un peu leger ...
    pas trés interressant ... (s'obtient aussi facilement en mode conception)

    ne merite pas le niveau initié.

    la propriété Hint2 doit etre de type String directement tout comme Hint.

    tu n'indente toujours pas ton code.

    tu ne devrais pas utiliser la propriété Tag pour le changement d'etat mais une variable privée de type boolean.

    le gestionnaire OnClick ne doit pas etre appeler par la procedure Click surchargée ! il faut appeler la procedure Click de l'ancetre (TControl) qui elle se charge d'appeler le gestionnaire d'evenement de façon adequate. de plus les procedures et fonctions ne sont pas declarable en zone publiées ...

    ce qui fait que ton composant devrait plus ressembler a cela :

    (en version ameliorée sans limite de Caption et de Hint)...

    type
      TMultiCapSpdBtn = class(TSpeedButton)
      private
        fCaptionsAndHints : TStrings;
        fStIndex          : integer;
        procedure SetStrings(Value : TStrings);
      protected
        procedure ChangeCaption; virtual;
        procedure DoCaptionsChange(Sender : TObject);
      public
        Constructor Create (AOwner:Tcomponent); Override;
        Destructor Destroy; Override;
        Procedure Click; override;
      published
        Property CaptionsAndHints : TStrings read fCaptionsAndHints write SetStrings;
      end;

    constructor TMultiCapSpdBtn.Create(Aowner:TComponent);
    begin
      inherited Create(Aowner);
      AllowAllUp := True;
      ShowHint   := True;
      fStIndex   := 0;
      fCaptionsAndHints := TStringList.Create;
      (fCaptionsAndHints as TStringList).OnChange := DoCaptionsChange;
    end;

    destructor TMultiCapSpdBtn.Destroy;
    begin
      fCaptionsAndHints.Free;
      inherited Destroy;
    end;

    procedure TMultiCapSpdBtn.Click;
    begin
      if fCaptionsAndHints.Count > 0 then
      begin
        fStIndex := (fStIndex + 1) mod fCaptionsAndHints.Count;
        ChangeCaption;
      end;
      Inherited Click;
    end;

    procedure TMultiCapSpdBtn.DoCaptionsChange(Sender: TObject);
    begin
      ChangeCaption;
    end;

    procedure TMultiCapSpdBtn.SetStrings(Value: TStrings);
    begin
      fCaptionsAndHints.Assign(Value);
    end;

    procedure TMultiCapSpdBtn.ChangeCaption;
    var SeparatorPos : integer;
    begin
      SeparatorPos := Pos('|',fCaptionsAndHints[fStIndex]);
      Caption := copy(fCaptionsAndHints[fStIndex], 1, SeparatorPos-1);
      if SeparatorPos <> 0 then
        Hint := copy(fCaptionsAndHints[fStIndex], SeparatorPos+1, Length(fCaptionsAndHints[fStIndex]) - SeparatorPos)
      else
        Hint := '';
    end;

Ajouter un commentaire

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

Snippets en rapport

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS