Példaprogramunkban egy kis számológépet készítünk el. A program bekér két számot, majd azokon elvégezhetjük a négy alapműveletet. A műveletek közül egy menü segítségével lehet választani.
A konzol ablakban nem használunk ékezeteket.
A konzol képernyő azonosítására szükségünk van egy THandle változóra.
FHandle:=GetStdHandle(STD_OUTPUT_HANDLE);
Rögtön a program indulásakor állítsuk be az ablak méretét.
c.X:=80; c.Y:=25;
SetConsoleScreenBufferSize(FHandle,c);
Ezután kezdjük a képernyőtörlést megvalósító eljárás elkészítését. Az eljárásnak adjuk a CLS nevet. A képernyőt úgy töröljük le, hogy üres sorokat írunk az első sortól kezdődően az utolsóig. Ehhez tudnunk kell azt, hogy hány sorunk van. A sorok számát az alábbi módon kérdezhetjük le.
GetConsoleScreenBufferInfo(FHandle,SBI);
A függvény az SBI: TConsoleScreenBufferInfo struktúrába menti el a konzol adatait. Ennek az Y értéke adja meg a sorok számát.
Hozzunk létre egy GotoXY eljárást is, amely segítségével a kurzort pozícionálhatjuk az ablakban.
procedure GotoXY(X,Y : Integer);
begin
c.X:=X; c.Y:=Y;
SetConsoleCursorPosition(FHandle,c);
end;
A SetConsoleCursorPosition API függvény szolgál a pozícionálásra.
Több eljárásra nincs is szükségünk, jöhet a program elkészítése.
Két számot kérünk be, az i és j változókba. Ezeken végezzük el a menüben kiválasztott műveletet.
Egy konzolos menü megvalósításához célszerű a repeat – until ciklust használni. A ciklus magjában le kell törölnünk a képernyőt, el kell helyeznünk a menüpontokat. A menüpontok kirajzolásához használjuk a GotoXY eljárást. A választási lehetőség biztosításához elegendő egy Byte változó, amelybe a felhasználó választását olvassuk be. Ezt egy Case szerkezetben ki is tudjuk értékelni, és végre tudjuk hajtani a megfelelő műveletet. A ciklusnak addig kell futnia, ameddig a változó értéke nem egyezik meg a kilépési menüponthoz tartozó értékkel.