IMAGELIST ANIMEE DANS UNE TSTATUSBAR

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 3 oct. 2009 à 00:52
eclems Messages postés 104 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 9 mai 2013 - 6 oct. 2009 à 18:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50634-imagelist-animee-dans-une-tstatusbar

eclems Messages postés 104 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 9 mai 2013
6 oct. 2009 à 18:41
je te remercie beaucoup ca fonctionne et pour y ajouter du text? dans le memepanel?
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
6 oct. 2009 à 13:25
Cirec :

- ingrédients
- recette
- commentaire du chef

:o)

Cordialement, Bacterius !
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
6 oct. 2009 à 12:56
pourquoi faire simple quand on peut faire compliqué ... hein :p

1 StatusBar
1 ImagaList
1 Timer

et une seule procédure ... "OnTimer"

procedure TfrmMain.Timer1Timer(Sender: TObject);
const
SB_SETICON = WM_USER+15;
var
aIcon: TIcon;
begin
aIcon := TIcon.Create;
try
ImageList1.GetIcon(ImageList1.Tag, aIcon);
ImageList1.Tag := (ImageList1.Tag+1) mod ImageList1.Count;

StatusBar1.Perform(SB_SETICON, 0, aIcon.Handle);
StatusBar1.Perform(SB_SETICON, 3, aIcon.Handle);
finally
aIcon.Free;
end;
end;

pour les besoins de l'exemple j'ai laissé la création et la destruction du TIcon dans la procédure "OnTimer" mais il est préférable de le créer une fois au début et de le libérer à la fin de l'application

explications:
StatusBar1.Perform(SB_SETICON, // message a envoyer
1, // N° du panel (-1 = simple panel) voir ps
aIcon.Handle);// Handle de l'icône a afficher 0 pour l'effacer.

pour + d'explications voir ici:
http://msdn.microsoft.com/en-us/library/bb760755%28VS.85%29.aspx

simple et efficace :D

ps: chez moi en "SimplePanel" ça ne fonctionne pas !!!
korgis Messages postés 420 Date d'inscription samedi 17 mai 2003 Statut Membre Dernière intervention 6 mai 2019 17
6 oct. 2009 à 08:21
var
ImgIndex: Integer;

procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
begin
// animation Panels[0] :
ImageList1.Draw(StatusBar1.Canvas, 1, 3, ImgIndex);
// animation Panels[1] :
ImageList1.Draw(StatusBar1.Canvas, StatusBar1.Panels[0].Width + 2, 3, ImgIndex);
StatusBar1.Panels[2].Text:=TimeToStr(Now);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(ImgIndex);
if ImgIndex = ImageList1.Count then
ImgIndex := 0;
StatusBar1.Invalidate;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
ImgIndex := 0;
StatusBar1.Panels[0].Style := psOwnerDraw;
StatusBar1.Panels[1].Style := psOwnerDraw;
end;
rebeldedagoba Messages postés 1 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 5 octobre 2009
5 oct. 2009 à 23:33
comment instaler une photo dans un dossie jounne informatique ou dans une clè usb c'est qulquin le sait je lui serait grè de mon fair par sois un logiciel ou une formule je vous remercie bien d'avence.pour me lon voyer voissi mon E-mail:DAGOBA1982@HOTMAIL.COM UN GRAND MERCI
eclems Messages postés 104 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 9 mai 2013
5 oct. 2009 à 15:45
merci mais ca ne sanime pas je te remercie mais je n'ai rien trouver sur le net et meme torry.net
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
3 oct. 2009 à 00:52
Ca aurait peut-être mieux sa place en snippets ? Sinon, peux-tu nous proposer un zip avec l'exemple dedans, c'est toujours plus agréable que de devoir ouvrir un projet et copier-coller le code dedans :)

Cordialement, Bacterius !
Rejoignez-nous