HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Komponensbe ágyazott Bitmap


Példaprogram letöltése

11675 bájt

Amikor a program olyan műveleteket végez, melyek hosszabb ideig is eltarthatnak, miközben nem tudja a felhasználó utasításait fogadni, akkor ezt valamilyen módon jeleznie kell a felhasználó felé. A WinZip ezt például úgy oldja meg, hogy piros és zöld "lámpákkal" jelzi, hogy éppen elfoglalt-e, vagy nem. Ez elég tetszetős megoldás, ezért készítettünk egy olyan komponenst, ami ugyanezt a feladatot oldja meg.
A mellékelt példaprogram megnyitása előtt a TrafficLights.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A komponenst a TGraphicControl osztályból származtatjuk. Egyetlen property-t készítettünk, amin keresztül meghatározhatjuk, hogy piros, sárga vagy zöld "lámpát" kívánunk-e megjeleníteni. A lámpák képét egy .RES fájlban tároljuk, ebből vesszük elő mindig a megfelelőt.

A komponens kirajzolását, mint mindig, most is a Paint metódus végzi, amely automatikusan meghívásra kerül, ha a komponens képét szükséges frissíteni:
procedure TTrafficLights.Paint;
var LampBmp:TBitmap;
    LampName:string;
begin
  inherited;
Az FLamp property értékétől függően a LampName változóban eltároljuk annak a képnek a nevét, amit meg szeretnénk jeleníteni.
  case FLamp of
  tlRed:    LampName:='RED';
  tlYellow: LampName:='YELLOW';
  tlGreen:  LampName:='GREEN';
  end;
Létrehozunk egy TBitmap típusú változót, majd a LoadBitmap függvénnyel betöltjük a LampName változóban megadott nevű képet az erőforrás fájlból.
  LampBmp:=TBitmap.Create;
  LampBmp.Handle:=LoadBitmap(HInstance, PChar(LampName));
A TransparentBlt függvény segítségével kirajzoljuk a képet a komponens canvas-ára a komponens méretéhez igazítva. A képek mérete 25x25 pixel, ezért ha a komponens mérete ettől eltérő, akkor nagyítjuk vagy kicsinyítjük az eredeti képet.
  TransparentBlt(canvas.Handle, 0, 0, Width, Height, LampBmp.Canvas.Handle, 0, 0, 25, 25, $FFC0C0);
  LampBmp.Free;
end;

Cikksorozat

#IDKategóriaCikk címeSorozat
3333WindowsNet Shell parancsok1. rész
3367WindowsNet Shell parancsok2. rész
3396WindowsNet Shell parancsok3. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 260. 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 |