|
|
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;
|
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!
|