HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

A képernyő tartalmának módosítása konzol alkalmazásokban


Konzol alkalmazások 2. rész

Példaprogram letöltése

2848 bájt

Ebben a részben megnézzük, hogy hogyan tudjuk egy konzol alkalmazás képernyőrészeit módosítani olyan módon, hogy a már meglévő adatok tulajdonságait módosítjuk. Megváltoztatjuk a megjelenített karaktereket és színüket. Megnézzük, hogy hogyan lehet az input bufferbe közvetlenül karaktereket írni, azokat kiolvasni és végül kiüríteni a buffer tartalmát.

Az input buffer azonosítására fel kell vennünk egy THandle típusú változót. A konzol alkalmazásoknál két külön buffer van megjelenítésre és adatbevitelre.
FInput:=GetStdHandle(STD_INPUT_HANDLE);
A konzol ablak méretét állítsuk be az előző cikkben leírt módon.
Egy már meglévő karaktersorozat színét az alábbi függvénnyel módosíthatjuk.
c.X:=0; c.Y:=0;
FillConsoleOutputAttribute(FHandle,FOREGROUND_BLUE,65,c,i);
Az FHandle az output buffert azonosítja. A FOREGROUND_BLUE azt jelenti, hogy a betű színe kék lesz. A következő paraméter (65) a módosítandó karakterek számát határozza meg. A változtatás a c koordinátáktól kezdődik. A konzol ablak legelső koordinátája 0,0. A függvény az i paraméterben adja vissza a módosított karakterhelyek számát.
A FOREGROUND_BLUE helyén az alábbi szín konstansok szerepelhetnek.
Konstans Jelentése
FOREGROUND_BLUE A betű színe kék.
FOREGROUND_GREEN A betű színe zöld.
FOREGROUND_RED A betű színe piros.
FOREGROUND_INTENSITY Erősíti a betű színét.
BACKGROUND_BLUE A háttér színe kék.
BACKGROUND_GREEN A háttér színe zöld.
BACKGROUND_RED A háttér színe piros.
BACKGROUND_INTENSITY Erősíti a háttér színét.
A paraméter helyén számértékek használatával megadhatjuk a többi színt is.
A konzol ablak bármely részét felülírhatjuk az alábbi függvénnyel.
c.X:=0; c.Y:=1;
FillConsoleOutputCharacter(FHandle,'*',65,c,i);
Az FHandle itt is az output buffert azonosítja. A következő paraméter az a karakter, amelyet ki szeretnénk írni. A 65-ös paraméter érték azt jelenti, hogy a függvény a c koordinátájú karakterhelytől kezdődően 65 db *-ot rajzol ki. A módosított karakterhelyek számát az i változó kapja értékül.
Közvetlenül az input bufferbe a WriteConsoleInput függvénnyel írhatunk.
ir.Event.KeyEvent.AsciiChar:='X';
WriteConsoleInput(FInput,ir,10,i);
Egy elem beírásához az ir: _INPUT_RECORD struktúrát kell használnunk. A következő paraméter a beírandó elemek számát adja meg. Az i változó kapja értékül az aktuálisan beírt elemek számát.
Amikor a bufferba írunk, akkor annak tartalma nem jelenik meg a képernyőn. A buffer elemeinek számát a GetNumberOfConsoleInputEvents függvénnyel kérdezhetjük le.
GetNumberOfConsoleInputEvents(FInput,i);
Az elemek száma az i változóba kerül.
A bufferből egy karakter beolvasása ugyancsak az _INPUT_RECORD struktúra segítségével valósítható meg az alábbi függvénnyel.
ReadConsoleInput(FInput,ir,1,i);
FInput a buffert azonosítja, ir a struktúra, amely lehet tömb is. A harmadik paraméter a beolvasandó elemek száma. A ténylegesen beolvasásra kerülő elemek számát az i változó kapja értékül. A ReadConsoleInput a beolvasott elemeket törli a bufferből.
A buffer kiürítésére a FlushConsoleInputBuffer függvény szolgál.
FlushConsoleInputBuffer(FInput);

Cikksorozat

#IDKategóriaCikk címeSorozat
1099DelphiDBChart komponens felhasználása1. rész
1113DelphiTDBChart komponens2. rész
1122DelphiTDBChart komponens3. rész
1132DelphiTDBChart komponens4. rész


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