HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Sorok maximális számának meghatározása egy Memo komponensben


Példaprogram letöltése

6737 bájt

Szöveg bevitelére alkalmas komponens több is van. Ha csak egy sornyi szöveges adatot kell bekérni a felhasználótól, akkor arra ott van az Edit, míg ha többsoros szöveget, akkor a Memo. De mit teszünk akkor, ha nekünk például egy maximum 5 sornyi szövegre van szükségünk? A mellékelt példában továbbfejlesztjük egy kicsit a Memo komponenst, hogy ez a probléma se legyen probléma többé.
A mellékelt példaprogram megnyitása előtt a FixedRowsMemo.pas-ban lévő komponenst telepítenie kell a Delphi alá.

Az új komponenst a TMemo osztályból származtatjuk. Először is létre kell hozni egy property-t, amiben megadhatjuk a sorok maximális számát. Ez lesz a MaxRows property. Ha ennek értéke kisebb mint 1, akkor nem vesszük figyelembe, tehát a komponens ugyanúgy fog működni, mint egy egyszerű Memo.
Figyelnünk kell, hogy amikor a felhasználó enter-t üt, akkor ennek ne legyen hatása, ha a szöveg sorainak száma elérte a maximálisan engedélyezett számot. Ehhez a KeyPress eljárást írjuk felül.
  if (Key=Char(VK_RETURN)) and (FMaxRows>0) then begin
    if (Lines.Count>=FMaxRows) then begin
      if Assigned(FOnMaxRows) then FOnMaxRows(self);
      Key:=#0;
    end;
  end;
Ez működik is, egy esetet kivéve. Ha az utolsó sorban nincsenek karakterek, tehát üres, akkor a Lines property-ben ez nem fog beleszámítani a sorok számába. Tehát, ha például a MaxRows property értéke 5, és mi pont az 5. sorban vagyunk, ami egy üres sor, akkor a Count property értéke még csak 4. Ebben az esetben, a fenti kódban megadott feltétel nem teljesül, tehát az enter-t elfogadjuk. Létrejön tehát egy új sor (a hatodik), és a Count property értéke még csak most változik 5-re. További enter-eket tehát már nem tudunk bevinni, viszont a 6. sorba nyugodtan gépelhetünk. Ezt a hibát úgy küszöbölhetjük ki, hogy a Change eljárást is felülírjuk. Ez az eljárás akkor fut le, amikor a szöveg megváltozik. Ebben szintén ellenőrizzük, hogy a sorok száma nem több-e, mint a megengedett, és ha igen, akkor a „felesleges” sorokat töröljük.
  while Lines.Count>FMaxRows do Lines.Delete(Lines.Count-1);



Cikksorozat

#IDKategóriaCikk címeSorozat
1166DelphiOsztály hierarchia lekérdezése1. rész
1180DelphiOsztály hierarchia lekérdezése2. rész


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