|
|
Unicode karakterek használata a Delphi-ben
|
|
Példaprogram letöltése
8084 bájt
|
Unicode karakterek használatának nem csak akkor van értelme, amikor szeretnék távol keleti nyelvekben szereplő karaktereket megjeleníteni, - hiszen magyar nyelvű alkalmazásainkban erre valószínűleg igen ritkán van szükség -, hanem akkor is jól jön az ismeretük, amikor különféle szimbólumokra lenne szükségünk. A unicode karakterkészletben nagyon sok, jól használható szimbólum található a mértékegységeken keresztül a sakk bábuk rajzáig számtalan különféle grafikával találkozhatunk.
Delphi-vel készített alkalmazásoknál is van lehetőségünk arra, hogy unicode karaktereket jelenítsünk meg. Az így rendelkezésünkre álló karakterkészletben nagyon sok hasznos is található, melyet egyszerűen felhasználhatunk saját programunkban. Mellékelt példában egy olyan alkalmazást készítünk, mellyel megjeleníthetjük az összes karaktert hasonlóan, mint a Windows Character Map programja.
Unicode karakterkészlet használatához nem árt, ha telepítjük a Windows-ba ennek támogatását és az ehhez tartozó unicode betűkészleteket, mint például az MS Mincho. Ha ez még nem lenne a gépünkön, akkor a Control Panel > Regional Options > General > Language settings for the system (Vezérlőpult > Területi beállítások > Általános > A rendszer nyelvi beállítása) helyen el tudjuk végezni ennek telepítését. (Win XP esetén Control Panel > Regional and Language Options > Languages)
A karakterek kirajzolását a Form OnPaint eseményénél végezzük el.
procedure TForm1.FormPaint(Sender: TObject);
var
Mivel unicode karaktereket kell használnunk, így nem használhatjuk a string típust, mivel ott csak egy bájton lennének tárolva a karakterek, de az unicode karakterekhez már két bájtra van szükségünk, ezért létrehozunk egy tömböt, mely WideChar típuson már képes erre.
c: array[0..99] of WideChar;
x, y, w, h: integer;
begin
with Canvas do begin
…
A tömbbe persze többféle módszerrel is helyezhetünk el karaktereket.
c[0]:='9';
c[1]:='7';
c[2]:='1';
A 13202-es karakter egy MHz feliratot takar egyetlen karakteren.
Az unicode feliratot a TextOutW függvénnyel tudjuk megjeleníteni. Első paraméterben a rajz terület azonosítóját kell megadnunk (Canvas.Handle), ezt követi az x, y koordináta, majd a kiírandó karakter tömb, végül az, hogy ebben hány karaktert helyeztünk el.
Windows.TextOutW(Handle, 300, 5, c, 4);
…
Ezt követően egy ciklussal kiírunk 100 unicode karaktert. Hogy melyik 100 jelenik meg a 35536-ból azt az FI globális változó határozza meg, melynek értékét a Form-on lévő két nyomógombbal változtathatjuk, így képesek vagyunk lapozni a karaktertáblában.
for x:=0 to 9 do begin
for y:=0 to 9 do begin
c[0]:=WideChar(FI+x+y*10);
Windows.TextOutW(Handle, 50+x*w, 50+y*h, c, 1);
MoveTo(50+x*w-2, 50+y*h-2);
LineTo(50+x*w-2, 50+y*h+h-2);
LineTo(50+x*w+w-2, 50+y*h+h-2);
end;
end;
end;
end;
|
Könyv
Ez a cikk megtalálható ebben a könyvben:
Delphi Software Offline 2001 évkönyv 606. 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!
|