HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

A RichEdit komponens kibővítése keresés, valamint keresés és csere funkciókkal


Példaprogram letöltése

5223 bájt

Amikor a RichEdit komponenst használjuk, gyakran nagyon jó lenne, ha tartalmazna olyan keresés, illetve keresés és csere funkciókat, amelyeket már más szövegszerkesztőknél megszokhattunk. Ebben a cikkben továbbfejlesztjük a TRichEdit osztályt és kibővítjük a keresés, valamint a keresés és csere funkciókkal.

A mellékelt példaprogram megnyitása előtt az SrcRichEdit.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Az SrcRichEdit komponens a Delphi hagyományos RichEdit komponensének továbbfejlesztése. Amikor a komponens fölött megnyomjuk az egér jobb gombját, megjelenik egy gyorsmenü, amelyben választhatjuk a már más szövegszerkesztőkben eddig megszokott „Keresés” és „Csere” menüpontokat. Bármelyiket választjuk, megjelenik a menüpontnak megfelelő párbeszédablak, amelyben a keresendő szöveget kell megadnunk. A keresés és a csere mindig a kijelölt szövegrészben történik, annak hiányában pedig a kurzor aktuális pozíciójától kezdődően.
A komponens létrehozása
Első lépésben hozzunk létre egy privát változót, Menu néven. Ez a változó lesz a gyorsmenünk, így típusa TPopupMenu lesz. A menüpontokhoz tartozó ablakok TFindDialog és TReplaceDialog típusúak lesznek.
A menüt és a dialógusablakokat a Create metódusban hozzuk létre. Itt rendeljük hozzá a menüt a RichEdit objektumhoz is.
A menüpontok eseményeit a FindHandler és a ReplaceHandler eljárásokban programozzuk le.
A Find dialógusablak felesleges elemeit le kell tiltanunk.
with FindDialog do begin
  OnFind:=FindDialogFind;
Options:=[frDown,frHideMatchCase,frHideWholeWord,frHideUpDown];
end;
Ugyanezt meg kell tennünk a ReplaceDialog esetében is.
A FindHandler és ReplaceHandler metódusok nyitják meg a megfelelő ablakot. Mindkét ablak esetében a Search metódus meghívásával jön létre a keresés.
A ReplaceDialog esetében lehetőségünk van keresésre és cserére. Keresés esetén ugyanaz a teendő, mintha a FindDialog ablak került volna meghívásra. Ha cseréről van szó, akkor tovább bonyolítja a helyzetet a „Csere” és az „Az összes cseréje” gombok használata. Ennek lekezelését az OnReplace esemény létrejöttekor kell lekezelnünk.
if frReplaceAll in ReplaceDialog.Options then
  while Search(ReplaceDialog.FindText) do
    SelText:=ReplaceDialog.ReplaceText
else if Search(ReplaceDialog.FindText) then SelText:=ReplaceDialog.ReplaceText;
A Search eljárás
function TSrcRichEdit.Search(SubString: String) : Boolean;
var
  Found, ToEnd : LongInt;
begin
  Result:=False;
  ToEnd:=Length(Text)-SelStart;
  Found:=FindText(SubString,SelStart,ToEnd,[stMatchCase]);
  if Found<>-1 then begin
    SetFocus;
    SelStart:=Found;
    SelLength:=Length(SubString);
    Result:=True;
  end;
end;
A kereséshez a RichEdit osztály FindText metódusát használjuk. A SelStart függvénnyel kérdezhetjük le a kurzor aktuális helyét. Ha valamit kijelöltünk a szövegben, akkor a keresés csak a kijelölt szövegrészben történik.

Cikksorozat

#IDKategóriaCikk címeSorozat
1099DelphiDBChart komponens felhasználása1. rész
1113DelphiTDBChart komponens2. rész
1122DelphiTDBChart komponens3. rész
1132DelphiTDBChart komponens4. rész


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