HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

SlideShow komponens készítése


Példaprogram letöltése

61597 bájt

Számos képnéző programban találkozhatunk a SlideShow funkcióval. A funkciót elindítva, a számítógép megjeleníti az általunk megadott képeket. A képek között a gép automatikusan lapoz. Mi állíthatjuk be, hogy egy kép mennyi ideig legyen látható a képernyőn. Ebben a cikkben készítünk egy új komponenst, amely segítségével ezután mi is könnyedén elhelyezhetünk alkalmazásainkban egy ilyen lehetőséget.

A mellékelt példaprogram megnyitása előtt a SlideShow.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens használata
A SlideShow komponens, ugyanúgy, mint a TImage, saját területén jeleníti meg a képeket. Ha a Stretch tulajdonság értékét igazra állítjuk, akkor a megjelenítendő kép felveszi a komponens méretét. Ellenkező esetben, saját nagyságában jelenik meg.
A megjelenítendő képek listáját az ImageFiles property-ben adhatjuk meg. Minden egyes képnek új sorba kell kerülnie. A képeket az elérési útjukkal együtt kell megadni. A komponens csak BMP és JPG formátumú képek használatára alkalmas.
Azt, hogy egy kép mennyi ideig legyen látható, az Interval tulajdonságon keresztül szabályozhatjuk. Az itt használható érték ezredmásodpercben értendő.
A SlideShow akkor indul el, amikor az Active property értékét igazra állítjuk. Ha az Active értékét ismét hamisra állítjuk, a SlideShow véget ér.
Az aktuálisan megjelenített kép sorszámát bármikor lekérdezhetjük a GetImageIndex függvénnyel.
function GetImageIndex: Integer;
Ha az ImageFiles-ban egyetlen képet sem állítottunk be, akkor a függvény visszatérési értéke -1, ellenkező esetben az aktuálisan megjelenített kép indexe. Az indexelés 0-val kezdődik.
Ha már fut a SlideShow, és egy megadott indexű képre szeretnénk ugrani, akkor használhatjuk a ShowImage metódust.
procedure ShowImage(Index: Integer);
Az Index paraméterben kell megadnunk a megjelenítendő kép sorszámát. Az indexelés itt is 0-val kezdődik. A SlideShow ezután a megadott sorszámú képtől folytatódik.
A komponens rendelkezik egy eseménnyel, ez az OnChange.
procedure OnChange(Sender: TObject; Index: Integer);
Az esemény minden egyes alkalommal létrejön, amikor a komponens lapoz a képek között, és egy új képet jelenít meg. Az Index paraméter az új kép sorszámát adja meg.
A komponens elkészítése
Komponensünket a TGraphicControl osztályból származtatjuk. A képállományok megadásához szükségünk van egy TStringList tulajdonságra (ImageFiles). Az időzítést egy Timer komponens segítségével valósítjuk meg, a háttérben.
Az éppen aktuális, azaz megjelenítendő kép sorszámát az FIndex változóban tároljuk el. A változó értéke mindig egy elemre mutat, az FImageFiles objektumban. A változó értékét mindig a FTimer objektum OnTimer eseménye növeli, ha az Interval-ban megadott idő lejárt.
Az OnTimer eseményben figyelnünk kell arra, hogy ha az FIndex értéke elérte a képek számát, akkor ismét a 0 index-el rendelkező képet jelenítsük meg.
Amikor az FIndex már a módosult értéket tartalmazza, meg kell hívnunk a komponens OnChange eseményét, ha a felhasználó azt beállította.
if Assigned(FOnChange) then
  FOnChange(Self,FIndex);  
Az OnChange esemény használatához létre kell hoznunk az alábbi típust.
TChangeEvent = procedure(Sender: TObject; Index: Integer) of object;
Az aktuális kép megjelenítéséhez felül kell írnunk a Paint metódust. A megjelenítési algoritmust csak akkor indítjuk el, ha az FImageFiles tartalmaz képeket. Ilyenkor mindig az FIndex sorszámú képet kell megjelenítenünk.
Csak JPG és BMP típusú képeket jelenítünk meg. A kép formátumát az állomány kiterjesztéséből határozzuk meg.
if LowerCase(ExtractFileExt(FImageFiles[FIndex]))='.jpg' then begin
A JPG képek használatához, a uses listában fel kell sorolnunk a JPEG unit nevét is. Ha ezt megtettük, elérhetővé válik a TJPEGImage osztály, amely JPG formátumú képek tárolására alkalmas.
JPG:=TJPEGImage.Create;
Először be kell töltenünk a megfelelő indexű állományt.
JPG.LoadFromFile(FImageFiles[FIndex]);
A képet az FStretch változó értékének megfelelően rajzoljuk ki.
if FStretch then
  Canvas.StretchDraw(Rect(0,0,Width,Height),JPG)
else
  Canvas.Draw(0,0,JPG);
A TCanvas osztály StretchDraw metódusa segítségével a betöltött képet, megadott keretek közé nyújthatjuk. Esetünkben ez a „keret” a komponens mérete.
A Draw metódus a megadott képet, saját méretében jeleníti meg.
Ugyanezt az eljárást kell elvégeznünk a BMP képek esetében is.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 66. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |