HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

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.


Cikksorozat

#IDKategóriaCikk címeSorozat
1063DelphiInterbase 6 alkalmazása Delphi-ben1. rész
1072DelphiInterbase 6 alkalmazása Delphi-ben2. rész
1084DelphiInterbase 6 alkalmazása Delphi-ben3. rész
1092DelphiTIBTable komponens4. rész
1102DelphiTIBTransaction komponens5. rész
1111DelphiTIBQuery komponens6. rész
1120DelphiTIBStoredProc komponens7. rész
1128DelphiTIBDataSet komponens8. rész
1141DelphiTIBSQL komponens9. rész
1150DelphiTIBSQLMonitor komponens10. rész
1159DelphiTIBUpdateSQL komponens11. rész
1167DelphiIBEvents komponens12. rész
1177DelphiIBDatabaseInfo komponens használata13. rész
1183DelphiTIBConfigService komponens14. rész
1192DelphiTIBSecurityService komponens15. rész
1204DelphiTIBServerProperties komponens16. rész
1213DelphiTIBBackupService komponens17. rész
1222DelphiTIBRestoreService komponens18. rész
1231DelphiTIBValidationService komponens19. rész
1240DelphiTIBStatisticalService komponens20. rész
1249DelphiTIBLogService komponens21. rész
1258DelphiTIBUninstall komponens22. rész
1267DelphiInterBase Express komponenscsomag23. rész


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!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |