Delphipage - la reference en Delphi
Accueil - Astuces - Composants - Programmes - Tutoriaux - Livres - Liens
 Sources
- Astuces
- Composants
- Programmes
- Tutoriaux
 Rechercher
- Delphipage
- Ngscan
 Ressources
- La F.A.Q. Delphi
- Lexique Delphi
- Livres
- News
- Patchs Delphi
 Liens
- Borland France
- CodeGear
- Les meilleurs sites


Tutoriaux - Annulation

Présentation 

L'annulation permet d'annuler l'opération effectué juste avant.
Il y a deux sortes d'annulation suivant le type de programme.
- Annulation graphique
- Annulation texte


L'annulation graphique est utilisé lorsque l'on se sert le plus souvent du composant TImage.
L'annulation texte en Delphi est utilisé lorsque l'on se sert du composant TMemo ou TRichEdit.

Annulation texte

Pour effectuer une annulation graphique en Delphi, on utilisera un bitmap.
Nous allons créer le bitmap puis sauvegarder le contenu du bitmap.

procedure TForm1.Button1Click(Sender : TObject);
begin
Memo1.Undo;
end;

Annulation dans un Memo   [ 08-10-2001 ]
 Permet d'annuler la dernière operation dans un memo.
Télécharger :  [5 Ko] [Télécharger undomemo.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/


Annulation graphique

Pour effectuer une annulation texte, on va utiliser la fonction undo permettant d'annuler la dernière opération.
Contrairement au composant TMemo, il n'y a pas de fonction undo avec le composant TImage.
Voici quand même une astuce pour faire une annulation.

Nous avons besoin d'un bitmap.

public
{ Déclarations publiques }
bmpa : TBitmap;
end;

Ensuite, il faut créer le bitmap lors de la creation de la fiche et le liberer lors de sa destruction.

procedure TForm1.FormDestroy(Sender: TObject);
begin
bmpa.Free; //Libère le bitmap
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
bmpa:=TBitmap.Create; //Création du bitmap
end;

Ensuite, il faut charger un fichier dans le composant TImage.

procedure TForm1.Ouvrir1Click(Sender: TObject);
begin
if
OpenDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
end;
end;

Pour visualiser l'annulation sur une image, il faut que l'image soit modifier.
Ici, nous allons effectuer un effet grisatre sur l'image(vous pouvez faire autre chose).

procedure TForm1.Grisatre1Click(Sender: TObject);
Var Rouge,vert,bleu,moyenne: Byte;
px,py: Word;
couleur: Longint;
begin
Screen.Cursor := crHourglass; //Copie image1 dans bmpa
bmpa.Assign(Image1.Picture.Bitmap);
Annuler1.Enabled:=True; //Annulation est disponible
try
//Taches a effectuer
for Py:=0 to (Image1.Height-1) do
for Px:=0 to (Image1.Width-1) do
begin
Couleur:=ColorToRGB(Image1.Canvas.Pixels[px,py]);
Rouge:=0;
Vert:=0;
Bleu:=0;
Bleu:=Couleur div 65536;
Vert:=(Couleur-(Bleu*65536)) div 256;
Rouge:=(Couleur-(Bleu*65536))-(256*Vert); moyenne:=(Rouge+Vert+Bleu) div 3; Image1.Canvas.Pixels[px,py]:=RGB(moyenne,moyenne,moyenne);
end;
finally
Screen.Cursor := crDefault;
end;
end;

Voici l'astuces pour annuler l'effet grisatre(dans notre exemple).

procedure TForm1.Annuler1Click(Sender: TObject);
begin
Image1.Picture.Bitmap.Assign(bmpa); //Image charge le bitmap
Annuler1.Enabled:=False; //Annulation n'est plus disponible
end;

Annulation graphique dans une Image    [ 08-10-2001 ]
 Permet d'annuler la dernière operation dans une image.
Télécharger :  [7 Ko] [Télécharger angraphi.zip]

Auteur : Yoann
Site internet :
http://delphipage.free.fr/

Tous droits réservés - Contacts
Haut de la page