HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Alsó és felső indexek megjelenítése egy RichEdit-ben szerkesztett szövegben


Példaprogram letöltése

4987 bájt

Ha formázott szöveg megjelenítését vagy szerkesztését akarjuk lehetővé tenni egy felhasználó számára, akkor erre általában a RichEdit komponenst használjuk. Ennek segítségével akár egy WordPad tudású szövegszerkesztő alkalmazást is készíthetünk, bár a formázási lehetőségeket tekintve ez jóval többet tud annál, bár ez alapból nem látszik az egyszerűen elérhető lehetőségek figyelembevételével. Ebben a példában ezt vizsgáljuk meg, hogy hogyan tudunk egy RichEdit-ben olyan szövegeket is megjeleníteni, amelyek alsó és felső indexeket is tartalmaznak.

Az alsó és felső indexeket a Word-ben a betű tulajdonságainál adhatjuk meg. A betű tulajdonságait a Delphi-ben a TFont osztályon keresztül adhatjuk meg, ez viszont nem tartalmaz olyan speciális beállítási lehetőségeket, mint az alsó- és felső indexek. Nyilvánvaló, hogy más megoldást kell keresnünk.
A karakterek formátumát a RichEdit-ben üzenetek formájában tudjuk lekérdezni, illetve beállítani. Ehhez szükséges egy TCharFormat struktúra, amelynek deklarációját a RichEdit unit-ban találjuk meg.
  TCharFormatA = record
    cbSize: UINT;
    dwMask: Longint;
    dwEffects: Longint;
    yHeight: Longint;
    yOffset: Longint;
    crTextColor: TColorRef;
    bCharSet: Byte;
    bPitchAndFamily: Byte;
    szFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
  end;
  TCharFormat = TCharFormatA;
A cbSize mezőben kell megadnunk a struktúra méretét (SizeOf(TCharFormat)). a dwMask mezőben adhatjuk meg, hogy a struktúra mely mezőiben találhatók valós adatok. Ennek értékeit az alábbi konstansok kombinációjával adhatjuk meg:
Konstans Jelentés
CFM_BOLD A dwEffects mezőben a CFE_BOLD érték (bit) valós adatot tartalmaz.
CFM_CHARSET A bCharSet mező valós adatot tartalmaz.
CFM_COLOR A crTextColor mező, és a CFE_AUTOCOLOR érték a dwEffects mezőben valós adatot tartalmaz.
CFM_FACE Az szFaceName mező valós adatot tartalmaz.
CFM_ITALIC A CFE_ITALIC érték a dwEffects mezőben valós adatot tartalmaz.
CFM_OFFSET Az yOffset mező valós adatot tartalmaz.
CFM_PROTECTED A CFE_PROTECTED érték a dwEffects mezőben valós adatot tartalmaz.
CFM_SIZE Az yHeight mező valós adatot tartalmaz.
CFM_STRIKEOUT A CFE_STRIKEOUT érték a dwEffects mezőben valós adatot tartalmaz.
CFM_UNDERLINE A CFE_UNDERLINE érték a dwEffects mezőben valós adatot tartalmaz.
A dwEffects mező a betű formázásának különböző tulajdonságait tartalmazza. Ezeket a tulajdonságokat kapcsolóként adhatjuk meg, tehát vagy be van állítva a tulajdonság pl. áthúzás), vagy nem. Minden beállításhoz egy-egy bit tartozik, melyeket konstansok kombinációival állíthatunk be. A használható konstansok az alábbi táblázatban láthatók:
Konstans Jelentés
CFE_AUTOCOLOR A szöveg színe a GetSysColor (COLOR_WINDOWTEXT) függvény visszatérési értékének felel meg.
CFE_BOLD Félkövér stílus.
CFE_DISABLED Csak a RichEdit 2.0 és ennél későbbi változatainál: A karakterek árnyékkal jelennek meg, amelyek 3/4 ponttal, vagy 1 pixellel vannak eltolva (amelyik nagyobb).
CFE_ITALIC Dőlt betű stílus.
CFE_STRIKEOUT A karakterek át vannak húzva.
CFE_UNDERLINE A karakterek alá vannak húzva.
CFE_PROTECTED A karakterek védettek, a módosítás egy EN_PROTECTED üzenet kiváltását okozza.
Az yHeight mezőben a karakterek magasságát (méretét) adhatjuk meg twips mértékegységben (1/1440 inch vagy 1/20 nyomtató pont).
Az yOffset mezőben a karakterek függőleges eltolásának mértékét adhatjuk meg a bázisvonalhoz képest (szintén twips). Ha a szám pozitív, akkor felső-, ha negatív, akkor pedig alsó index lesz. A mellékelt példában is ezt fogjuk használni.
A crTextColor mezőben a szöveg színét adhatjuk meg.
A CharSet mezőben a karakterkészlet állítható be. Azt az értéket adhatjuk meg, amelyet a TFont osztály Charset property-jében is. A Rich Edit 3.0 felülbírálhatja ezt az értéket, ha a karakterek a megadott karakterkészlettel nem jeleníthetők meg.
A bPitchAndFamily mező a betűtípus és a font családját meghatározó biteket tárolja. Az alsó két bit a betűk közötti távolságra utal. Ha mindkét bit értéke 0, akkor a DEFAULT_PITCH (alapértelmezett), ha az 1-es bit értéke 1, akkor a FIXED_PITCH (rögzített betűtávolság, pl. Courier), ha pedig a 2-es bit értéke 1, akkor a VARIABLE_PITCH (változó betűtávolság) az érvényes. A további bitek azt határozzák meg, hogy a betűtípus melyik családba tartozik. Ezeket az alábbi konstansokkal ellenőrizhetjük:
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
Az utolsó mező az szFaceName, ami a betűtípus nevét tartalmazza.
Ebben a struktúrában tehát megadhatjuk a karakterek tulajdonságait. Most nézzük, hogy hogyan tudjuk meg lekérdezni az aktuális beállításokat, illetve hogyan tudjuk azokat módosítani.
A lekérdezéshez az EM_GETCHARFORMAT üzenetet kell küldenünk a RichEdit-nek. Ez a következőképpen néz ki:
var
  cf: TCharFormat;
  ...
  cf.cbSize:=SizeOf(cf);
  RichEdit1.Perform(EM_GETCHARFORMAT, SCF_SELECTION, longint(@cf));
Az üzenetet a Perform eljárással küldjük. Ennek első paramétere maga az üzenet. A második paraméterben meg kell adnunk, hogy az alapértelmezett (SCF_DEFAULT), vagy a kijelölt szövegrész formátumát akarjuk-e lekérdezni (SCF_SELECTION). A harmadik paraméterben meg kell adnunk egy TCharFormat típusú struktúrára mutató pointert.
A formátum megadása tulajdonképpen ugyanígy történik, csak ekkor az EM_SETCHARFORMAT üzenetet kell elküldenünk a RichEdit-nek.

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