Delphi - Multimédia nyomógomb

forráskód letöltése
Mellékelt példában egy olyan nyomógombot készítünk, mely képes egy képet megjeleníteni a területén. Ezt a képet a Bitmap property-n keresztül tölthetjük be. További tulajdonsága, hogy ha letiltjuk a komponenst (Enabled false), akkor a betöltött képnek elkészíti a "letiltott" kinézetű változatát is. Ha viszont a gomb fölé állunk egérrel, akkor egy általunk megadott szín és a betöltött kép között áttetszőséget hoz létre, szintén egy általunk megadott arányban. Ezzel érdekes effektet állíthatunk elő, amely csak akkor lesz látható, ha az egérrel a gomb fölött helyezkedik el a felhasználó.

Nagy előnye a komponensnek, hogy csupán egyetlen bitmap-ot kell elkészítenünk a gombhoz és mind a három lehetséges állapotát a komponens önmaga generálja, így erre nekünk már nincs gondunk. A mellékelt példaprogram megnyitása előtt a MultimediaButton.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A komponens elkészítésénél felhasználtuk az előző hetek néhány cikkét (lásd: alábbi hivatkozások) így az ott ismertetett eljárásokat itt már nem ismételjük meg.

Ahogy azt már említettük, a komponens Bitmap property-én keresztül tölthetünk be egy tetszőleges képet a gombhoz.

A HighlightColor property-ben adhatjuk meg azt a színt, melyet az átlátszóság készítésekor használ fel a komponens.

A HighlightBlend property-ben adható meg százalékos értékben, hogy mi a Bitmap képe, vagy a HighlightColor színe legyen inkább látható. Ha ide nullát írunk, akkor csak a kép lesz látható, ha 100-at, akkor csak az adott szín. 0 és 100 között pedig arányosan látható mind a kettő.

A komponenst a TGraphicControl-ból származtatjuk. A Paint eljárását felülírva kirajzoljuk a gomb körvonalát és ha a Bitmap property-be lett betöltve kép, akkor ezt is.

Hogy a képet milyen állapotban kell kirajzolni, ahhoz tudnunk kell, hogy alaphelyzetben van-e a komponens, esetleg letiltott, vagy az egér éppen fölötte áll.

Ha az Enabled property hamis, akkor letiltott. Ekkor a DrawDisabledImage segítségével végezzük a letiltott kép készítését és rajzolását.

Ha az Enabled igaz és az FHighlight property is igaz, mely jelzi, hogy az egér éppen a komponens fölött áll, akkor a DrawHighlightedImage eljárással rajzolunk, különben egy egyszerű BitBlt-vel végezzük a kép megjelenítését.

Az FHighlight változó értékét a CM_MOUSEENTER és CM_MOUSELEAVE események állítják. Az első akkor jön létre, ha az egérrel a komponens fölé érünk, míg a második, ha elhagyjuk annak területét.