HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Színátmenetes, villogó TLabel


Példaprogram letöltése

8126 bájt

Ha egy TLabel-ben megjelenített szöveg a felhasználó szempontjából fontos információt tartalmaz, akkor ezt valamilyen módon feltűnőbbé kell tenni. Megtehetjük ezt úgy is, ha a felirat színét, stílusát, méretét, stb. állítjuk be. Ennél sokkal jobb megoldás, ha a feliratot "mozgásba" hozzuk, vagy ahogy ebben a példában is tesszük: villogtatjuk.
A mellékelt példaprogram megnyitása előtt a FlashingLabel.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A feladat a következő: a TLabel-ben megjelenített szöveg színét folyamatosan változtatjuk két szín között, méghozzá úgy, hogy a két szín közötti meghatározott számú színt is felhasználjuk. Ezt úgy kell elképzelni, hogy készítünk egy meghatározott elemszámú színsorozatot, amelynek elemei a két megadott szín közötti színátmenet egy-egy színét tartalmazzák. Ebből a színsorozatból vesszük ki az index által meghatározott színt, és ezzel a színnel jelenítjük meg a feliratot. Az index folyamatosan nő, majd ha elértük a színsorozat utolsó elemét, akkor csökken. Az index meghatározott időközönként változik, ezzel a villogás (színváltás) sebességét befolyásoljuk.

Az FColor és FFlashColor property-k adják meg a színskála két szélső színét. Ezek között kell a színátmenetet létrehozni, amely az FSteps property-ben meghatározott számú elemből fog állni. A színskála színeit az FColorArray tömbben tároljuk. A színátmenetet elkészítő metódus a CreateColorArray.
procedure TFlashingLabel.CreateColorArray;
var 
  t:integer;
  FCol:TColor;
  FStepR, FStepG, FStepB:extended;
  FRed, FGreen, FBlue:extended;
begin
Színösszetevőkre bontjuk a kiinduló színt:
  FRed:=GetRValue(FFlashColor);
  FGreen:=GetGValue(FFlashColor);
  FBlue:=GetBValue(FFlashColor);
Kiszámoljuk, hogy mennyivel kell növelni lépésenként az adott színösszetevőt, hogy a színskála végére elérjünk a befejező színhez.
  FStepR:=(GetRValue(FColor) - FRed) / FSteps;
  FStepG:=(GetGValue(FColor) - FGreen) / FSteps;
  FStepB:=(GetBValue(FColor) - FBlue) / FSteps;
Amíg elkészítjük a színskálát addig kikapcsoljuk a villogást, majd egy ciklusban feltöltjük a színskála-tömb elemeit:
  FTimer.Enabled:=false;
  for t:=1 to FSteps do begin
    FCol:=RGB(Round(FRed), Round(FGreen), Round(FBlue));
    FColorArray[t]:=FCol;
    FRed:=FRed + FStepR;
    FGreen:=FGreen + FStepG;
    FBlue:=FBlue + FStepB;
  end;
  FTimer.Enabled:=FFlashing;
end;
Az FCurrentStep változóban tároljuk az aktuális szín sorszámát. A DoTimer eljárásban a Font property Color mezőjét beállítjuk az aktuális színskála elem értékére, majd az FCurrentStep property-t növeljük az FCurrentDir változó értékével, ami 1, vagy -1 lehet. Ha elértünk a színskála tömb utolsó eleméhez, akkor megfordítjuk az irányt, ami azt jelenti, hogy az FCurrentDir változó értéke -1 lesz. Ennek következtében ezentúl az FCurrentStep változó értéke csökken. Ha elérjük a színskála első elemét, akkor megint irányt váltunk.
procedure TFlashingLabel.DoTimer;
begin
  Font.Color:=FColorArray[FCurrentStep];
  FCurrentStep:=FCurrentStep+FCurrentDir;
  if FCurrentStep>FSteps then begin
    FCurrentStep:=FSteps;
    FCurrentDir:=-1;
  end;
  if FCurrentStep<=1 then FCurrentDir:=1;  
  Invalidate;
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 299. 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 |