Défilement horizontal ou vertical

Contenu du snippet

Réalise un défilement horizontal, en quelque clicks,
- Ses défauts:
Défile une image (Une parfaite fluidité).

- Laisse une traînée d'escargot,
- Je ne sais s'il épuise les ressources machines,
- Avantage
- Paramétrable,
- Une parfaite fluidité dans le défilement,
- Parait sans défaut...

J'aimerais bien que quelqu'un améliore cette source, pour Delphi, beacoups de langages possèdent des fonctions préddéfinies. (Merci)

Source / Exemple :


unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  debute : boolean; bitmap : tbitmap;
  i : integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
debute := false;
i:=0;

debute:=false;
Bitmap:=Tbitmap.Create ;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 bitmap.Create;
 bitmap.LoadFromFile('c:\delphi.bmp');  // un Label avec copy écran, et suivre avec paint brush
 debute:=true;

form1.Repaint ;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin

while (debute) do
begin
Application.ProcessMessages ;
form1.Canvas.Draw(i,400,bitmap); // dimension de l'image...
i:=i+1;    if i>form1.width then i:=-150; // mieux qu'un timer
 Sleep(5);         // vitesse progression
Application.ProcessMessages ;    // permet de voir ce qui se passe ailleur
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
bitmap.free
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
debute:=false;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
debute:=false; // Sinon on réalise uniquement un arrêt sur image
end;

end.

Conclusion :


Placer juste 02 boutons (button1 et button2), une image dans la racine (C),
Coller le code, cliquer sur les 02 Boutons
cliquer sur events de la form1
onPaint
OnDestroy
onClose.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.