Először azt kell tudnunk, hogy ezeket az extra lehetőségeket milyen esetekben használhatjuk ki. Aktuálisan a RichEdit Windows-os kontrol a 3-as verziójánál tart. Ez a verzió támogat minden olyan funkciót, melyeket sorozatunkban használni fogunk. Hogy melyik verzió van jelen egy adott gépen, az az operációs rendszertől függ, melyeket az alábbi táblázat foglalja össze:
| Rich Edit verzió |
DLL állomány neve |
| 1.0 |
Riched32.dll |
| 2.0 |
Riched20.dll |
| 3.0 |
Riched20.dll |
Operációs rendszerek:
| Operációs rendszer |
RichEdit verzió |
| Windows XP |
3.0 és 1.0 emulátor. |
| Windows Me |
1.0 és 3.0. |
| Windows 2000 |
3.0 és 1.0 emulátor. |
| Windows NT 4.0 |
1.0 és 2.0. |
| Windows 98 |
1.0 és 2.0. |
| Windows 95 |
1.0., de rendelkezésre áll a Riched20.dll Windows 95-re melyet külön kell telepíteni. |
RichEdit 2.0 csak az egyvonalas, duplavonalas, illetve a szó aláhúzásokat támogatja.
RichEdit 3.0 támogatja már az összes többi elérhető aláhúzás stílust is.
Példánkban készítünk egy eljárást SetUnderline névvel, mely egy megadott RichEdit komponensben aktuálisan kijelölt szöveget egy megadott aláhúzás stílussal, általunk választott színben megformáz.
procedure SetUnderline(re: TRichEdit; underline: word; color: word);
var
f: CHARFORMAT2;
begin
Formázás kivitelezéséhez egy EM_SETCHARFORMAT üzenetet kell küldenünk a RichEdit komponensnek, mely tartalmaz egy CHARFORMAT2 struktúrát megfelelően feltöltött adatokkal.
FillChar(f, SizeOf(CHARFORMAT2), 0);
with f do begin
cbSize:=SizeOf(CHARFORMAT2);
A struktúra dwMask mezőjében megadjuk a CFM_UNDERLINETYPE konstanst, mellyel azt érjük el, hogy a bUnderlineType mezőben megadott értéket figyelembe fogja venni a RichEdit komponens.
dwMask:=CFM_UNDERLINETYPE;
A bUnderlineType mező bájt típusú. Ennek alsó négy bitje adja meg az aláhúzás stílusát, míg a felső négy bájt határozza meg az aláhúzás színét.
bUnderlineType:=underline or color;
Végül már csak az üzenetet kell elküldenünk a RichEdit komponensnek.
re.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@f));
end;
end;
Mivel a formázásunk mindig az aktuálisan kijelölt szöveg területre vonatkozik, így aláhúzás előtt meg kell adnunk, hogy mi legyen kijelölve.
procedure TForm1.FormCreate(Sender: TObject);
begin
RichEdit1.SelStart:=0;
RichEdit1.SelLength:=23;
Ezt követően hívhatjuk a SetUnderline eljárásunkat, első paraméterként a RichEdit1 komponenst átadva, másodikként egy tetszőleges aláhúzás stílust megadva, míg harmadikként az aláhúzás színét.