HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Felirat scrollozó komponens


Példaprogram letöltése

6340 bájt

Ha a programunk névjegy ablakát szeretnék egy kicsit feldobni, akkor helyezzünk el benne egy olyan komponenst, melyben egy tetszőlegesen megadható szöveg alulról felfelé folyamatosan görgetődik. Ebben a példában egy ilyet mutatunk be.
A mellékelt példaprogram megnyitása előtt a ScrollTitles.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A görgetés pixelenként történik, és ahhoz, hogy folyamatos legyen szükségünk lesz egy TTimer-re. A TTimer OnTimer eseményéhez hozzárendeljük a DoTimer eljárást. Ebben az eljárásban történik meg a görgetés, míg a Paint eljárásban a kirajzolás.
Nézzük először a DoTimer eljárást. Az FYPos változóban a függőleges eltolás értékét tároljuk. Ez mindig negatív szám, vagy 0. Első lépésben csökkentjük az értékét 1-gyel, majd ellenőrizzük, hogy a sor magasságát nem lépte-e túl. Ha túllépte, akkor az FTopLine változó értékét növeljük eggyel, és az FYPos változó értékét 0-ra állítjuk. Az FTopLine változó az első megjelenítendő sor sorszáma, ezért ellenőrizzük, hogy nem nagyobb-e, mint a sorok száma. Az Invalidate eljárás meghívásával újrarajzoltatjuk a komponenst.
procedure TScrollTitles.DoTimer;
begin
  Dec(FYPos);
  if FYPos<=(-abs(Font.Height)-2) then begin
    FYPos:=0;
    inc(FTopLine); if FTopLine>=FTitles.Count then FTopLine:=0;
  end;
  Invalidate;
end;
A komponens kirajzolását most is a Paint metódus végzi. Ebben ellenőrizzük, hogy van-e egyáltalán megjelenítendő sor, és ha nincs, akkor kilépünk.

A Color property-ben megadott színnel töröljük a komponens területét, majd beállítjuk az yp és lp változók kezdőértékét. Az yp az éppen kirajzolandó sor y koordinátáját, míg az lp a sorszámát tartalmazza.
procedure TScrollTitles.Paint;
…
  Canvas.Brush.Style:=bsClear;
  Canvas.Font.Assign(Font);
  yp:=FYPos;  lp:=FTopLine;
A sorok megrajzolását addig végezzük, amíg az yp változó értéke kisebb, mint a komponens magassága. Az xp változó a felirat x koordinátája. Minden sor középre lesz igazítva, ezért az értékét ennek megfelelően számoljuk ki. Az yp változót a sor magassága+2-vel növeljük. Az lp változó értékét is folyamatosan növeljük figyelve arra, hogy ne lépje túl a megjeleníthető sorok számát. Ha ez megtörténik, akkor 0 értéket adunk neki, amivel azt érjük el, hogy az utolsó sor megrajzolása után újból az első sor kerül sorra.
  while yp<Height do begin
    if lp>FTitles.Count-1 then lp:=0;
    xp:=Width div 2 - Canvas.TextWidth(FTitles[lp]) div 2;
    Canvas.TextOut(xp, yp, FTitles[lp]);
    inc(yp, abs(Font.Height)+2);     inc(lp);
  end;
end;

Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


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