Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Pascal: Tekstimenu TP:n CRT-kirjastolla

HeadCheese [29.04.2004 16:08:54]

#

Yksinkertainen tekstimenu. Menussa liikutaan nuolinäppäimillä ja valinnat tehdään enterillä. Valikosta pääsee pois painamalla esciä tai valitsemalla viimeisen valinnan. Vakioita muokkaamalla voit muokata menun väriä sekä sijaintia. Tarvitsee crt kirjaston. Toimii ainakin Turbo Pascal 6.0 ja 7.0:ssa.

uses crt;

var
 yPos : byte;
 sel  : array[1..5] of string;
 c    : char;

const                    { Näillä voit muokata värejä sekä sijaintia }
 minY      = 1;
 maxY      = 5;
 bg        = 0;
 bg_select = 1;
 text      = 7;

procedure writeMenu; { Menun kirjoitus }
var i:byte;
begin
 for i:=minY to maxY do
 begin
  if i=yPos then textbackground(bg_select)
  else textbackground(bg);
  writeln(sel[i]);
 end;
end;

procedure arrowMove;       { Nuolien liikkuminen, ei tarvitse muuttaa }
begin
 c:=readkey;
 if c=#72 then
 begin
  if yPos<>minY then
  begin
   yPos:=yPos-1;
   textbackground(bg);
   clrscr;
   writeMenu;
   gotoXY(1,yPos);
  end;
 end;
 if c=#80 then
 begin
  if yPos<>maxY then
  begin
   yPos:=yPos+1;
   textbackground(bg);
   clrscr;
   writeMenu;
   gotoXY(1,yPos);
  end;
 end;
end;

procedure menuText(c : byte);  { Ei olennaista toiminnan kannalta, tämä on vain esimerkkinä }
begin
 clrscr;
 textColor(c);
 writeMenu;
 gotoXY(1,yPos);
end;

procedure enterPress;
begin
 if yPos=1 then menuText(3);     { Tänne sitten se mitä tapahtuu  }
 if yPos=2 then menuText(4);     { kun enteriä painaa.            }
 if yPos=3 then menuText(5);
 if yPos=4 then menuText(6);
 if yPos=5 then halt;
end;

begin
 textBackground(bg);
 textColor(text);
 clrscr;
 sel[1] :='1) Valinta 1'; sel[2] :='2) Valinta 2';
 sel[3] :='3) Valinta 3'; sel[4] :='4) Valinta 4';
 sel[5] :='5) Poistu';    yPos   :=minY;  c:='E';
 writeMenu;
 gotoXY(1,yPos);
 while c<>#27 do
 begin
  c:=readkey;
  if c=#0 then arrowMove;
  if c=#13 then enterPress;
 end;
end.

kaviaari [07.05.2004 18:20:18]

#

Ihan kivasti saa ton näppäimen lukemisen tästä, itse kun sitä etsiskelin jouduin pyörimään ympäri pascalin esimerkkiohjelmia.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta