|
|
Font megjelenítése karakterenként, avagy a TCharacterMap komponens
|
|
Példaprogram letöltése
8948 bájt
|
Ha olyan alkalmazást készítünk, amiben a felhasználó megadhat olyan karaktereket is, melyeket billentyűzetről nem tud elérni (pl. egy szövegszerkesztőben), akkor hasznos lehet egy olyan komponens, amelyből egyszerűen kiválaszthatja azokat.
A mellékelt példaprogram megnyitása előtt a CharacterMap.pas-ban lévő komponenst telepítenie kell a Delphi alá.
A Word-ben, illetve magában a Windows-ban is található olyan program, ami egy adott font karaktereit mutatja meg egy táblázatban, és abból könnyedén kiválaszthatjuk a nekünk megfelelőt. Mi is készíthetünk ilyen komponenst, amit saját programunkban egyszerűen felhasználhatunk.
Az új komponensnek három egyedi property-je van:
- SizeMode: a táblázat megjelenítési módját adja meg, vagyis azt, hogy hány mező legyen vízszintesen, és hány függőlegesen. Előre definiált lehetőségekből lehet választani.
- Selected: a kiválasztott karakter.
- Background: a táblázat háttérszíne. A táblázat rácsvonalainak színe mindig fekete. A karakterek színét a Font property Color tulajdonsága adja meg.
A Font property az ős osztályban van deklarálva, nekünk csak láthatóvá kell tennünk. Ebben a property-ben kell beállítani, hogy melyik betűtípus karaktereit szeretnénk megjeleníteni. A táblázat mérete a kiválasztott betűtípus méretétől függ, ezért létrehoztunk egy olyan eljárást, ami a táblázat mezőinek méretét kiszámolja. Az UpdateCellSize eljárásban végigmegyünk a font karakterein, a 32-es ASCII kódútól (szóköz) egészen a 255-ig. Minden karakternek ellenőrizzük az adott méret mellet a szélességét és magasságát, és a legnagyobb értéket vesszük alapul a cellaméret megállapításához.
Ahhoz, hogy a táblázat méretét azonnal tudjuk változtatni, amint a Font property valamelyik értéke megváltozik, kell írnunk egy eseménykezelő eljárást a WM_SetFont üzenethez. Ebben nem kell mást csinálnunk, mint meghívni az UpdateCellSize eljárást.
A táblázat megrajzolása most is a Paint eljárásban történik. Ebben felhasználjuk az XSizes konstans tömböt, amiből a táblázat vízszintes mezőinek számát olvassuk ki. Egy ciklusban megrajzoljuk a mezőket egyenként, figyelve azt a karaktert, ami a Selected property-ben be van állítva. Ezt a karaktert ugyanis inverz módon jelenítjük meg.
A táblázatból a felhasználó kattintással választhatja ki a megfelelő karaktert, ezért a MouseDown eljárást felül kell írnunk, és ebben kiszámolni a kattintás pozíciójából a kiválasztott karaktert.
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 412. 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!
|