HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Villogó feliratú Button komponens készítése


Példaprogram letöltése

5198 bájt

Előfordulhat, hogy egy ablakban túl sok gombot kell használnunk. Szükség lehet arra, hogy a gombok közül kiemeljünk egyet a felhasználó számára, mert mondjuk éppen ennek használatára lenne szükség. A felhasználó figyelmét ráirányíthatjuk a gombra annak stílusainak megváltoztatásával is, de ettől sokkal látványosabb megoldás, ha elkezdjük a gombot villogtatni oly módon, hogy színét folyamatosan változtatjuk két megadott szín közötti árnyalatokkal.

A mellékelt példaprogram megnyitása előtt a FlashingButton.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A FlashingButton komponens egy olyan gomb, amely képes a feliratát beállítható időközönként villogtatni. A villogás beállításánál meg kell adnunk két színt, a két szín közt használni kívánt árnyalatok számát és az átszínezés intervallumát.
A komponens a TSpeedButton osztályból származik. Szükség van két tulajdonságra, amelyekben a két színt eltároljuk. Ezek a HighColor és a LowColor tulajdonságok. A Step tulajdonság értéke határozza meg azt, hogy a két szín között hány darab árnyalatot fogunk megjeleníteni. Az Interval tulajdonságon keresztül állíthatjuk be azt az időt, amely két színváltoztatás között telik el. A Flashing tulajdonsággal pedig ki- és bekapcsolhatjuk a villogást.
Az átmeneti színeket célszerű előre eltárolni egy tömbben, amelynek tartalmát csak akkor kell módosítani, amikor a HighColor, LowColor vagy a Step tulajdonságok valamelyike megváltozik. Megtehetnénk azt is, hogy mindig kiszámoljuk az éppen aktuális színt (ekkor nem kellene tömb), de ez túl nagy erőforrás lekötést igényelne, lássuk be, feleslegesen.
procedure TFlashingButton.ColorArrayCreate;
begin
  FIndex:=1;
  r:=GetRValue(LowColor);
  g:=GetGValue(LowColor);
  b:=GetBValue(LowColor);
  sr:=(GetRValue(HighColor) - r) / FStep;
  sg:=(GetGValue(HighColor) - g) / FStep;
  sb:=(GetBValue(HighColor) - b) / FStep;
  for i:=1 to FStep do begin
    FColorArray[i]:=RGB(Round(r), Round(g), Round(b));
    r:=r + sr;
    g:=g + sg;
    b:=b + sb;
  end;
end;
Az eljárás beállítja a színeket tároló FColorArray tömb elemeit. Ezt az eljárást meg kell hívni a Create, a SetHighColor, a SetLowColor és a SetStep metódusokban. Az FIndex egy Byte típusú változó, amely a tömb soron következő elemére fog mutatni, amikor kirajzoljuk a megfelelő színt. Az FIndex értéke 1 és Step között mozoghat.
A színek meghatározása úgy történik, hogy a LowColor és a HighColor színeket szétbontjuk RGB (vörös, zöld, kék) összetevőikre. Összetevőnként kiszámoljuk a lépések nagyságát a LowColor és a HighColor között, és ezekkel a lépésközökkel határozzuk meg a tömb egyes színeit.
A gomb feliratának színét egy Timer objektum segítségével változtatjuk meg. A Timer objektum OnTimer eseménye a következő.
procedure TFlashingButton.DoTimer;
begin
  if FIndex>Step then FIndex:=1;
  Font.Color:=FColorArray[FIndex];
  Inc(FIndex);
  Invalidate;
end;
Amikor végigértünk az FColorArray tömbön, akkor kezdjük a színezést elölről.
A Timer működését a Flashing tulajdonság igazra vagy hamisra állításával kapcsolhatjuk ki vagy be. Ha ezt a tulajdonságot hamisra állítjuk, akkor a gomb rendes SpeedButton-ként funkcionál tovább. Feliratának színe pedig az utoljára használt szín lesz.

Cikksorozat

#IDKategóriaCikk címeSorozat
3047WindowsAz XML bemutatása1. rész
3059WindowsAz XML bemutatása2. rész
3068WindowsAz XML bemutatása3. rész
3077WindowsAz XML bemutatása - deklarációk4. rész
3086WindowsAz XML bemutatása - MSXML, XSLT5. rész
3094WindowsAz XML bemutatása - DTD6. rész
3105WindowsXML adatok megjelenítése Excel-ben7. rész
3114WindowsDokumentum hivatkozások az XML-ben8. rész
3123WindowsXML adattípusok9. rész
3132WindowsXML adatok HTML oldalakon10. rész
3141WindowsXML Notepad11. rész


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