Z tego co widze to chodzi ci jek to zrobic pod pascalem (nastepnym razem napisz pod jakim programem)
W Pascalu jest sprawa bardziej skomplikowana poniewarz gdy odczytujesz cos (np string) poleceniem
Readln
, to "sterownie" i obsluga tego co wpisujesz jest w tej procedurce wiec nic z tym nie da rady zrobic :(
Mozesz jedynie napisac wlasna procedurke przyjmujaca to co uzytkownik bedzie pisal.
Jak nie umiesz napisac tego sam to mozesz poszukac w necie jakiegos gotowca, albo....
Jak piszesz baze danych to raczej sie znasz wiec mozesz przerobic ten kod:
Jest to zywcem wyciagniete z mojego programiku wiec do woli mozesz sobie przerabiac, jak zakapujesz o co chodzi. Nie mam niestety czasu zeby ci po kolei wyjasniac co jest co :(
Dodam tyklo ze Sets to mozliwe do przyjecia klawisze, czyli ty podasz same literki (pamietej duze i male)
procedure EditString(var S:string;Sets:SetChar;x,y,w,color,bgcolor:integer;CanSame:bool);
function ZInSets(Z:char;S:string):bool;
var set0:SetChar;
begin
StrToSet(S,set0);
ZInSets := Z in (Sets-set0);
end;
var S0:String;
z:Char;
i,xm,ym:integer;
Ins:boolean;
begin
xm:=WhereX; ym:=WhereY;
ScrFull(x,y,x+w-1,y,color+16*bgcolor);
ScrFill(x,y,x+w-1,y,' ');
S0:=S; i:=0; Ins:=True;
repeat
{jesli Ins to _ , jesli nie to Ű}
gotoxy(x+i,y);
TextXY(x,y,S0);
z:=readkey;
if ((CanSame)and(z in Sets))or((not CanSame)and(ZInSets(z,S0))) then
begin
inc(i);
if (Ins)or(i>Length(S0)) then {Insert czyli dodaje, nie zamienia}
if Length(s0)<w-1 then
Insert(z,S0,i)
else begin Beep; dec(i); end
else
S0[i]:=z;
end
else
if z=#0 then {Dodatkowe klawisze (strzalki)}
begin
z:=readkey;
case z of
KeyArrowLeft,KeyArrowUp : if i>0 then dec(i) else Beep;
KeyArrowRight,KeyArrowDown: if i<Length(S0) then inc(i) else Beep;
KeyDelete : if i<Length(S0) then
begin delete(S0,i+1,1); PutScr(x+Length(S0),y,' '); end
else Beep;
KeyInsert : Ins:=not Ins;
KeyHome : i:=0;
KeyEnd : i:=Length(S0);
else
Beep;
end;
z:=#0;
end
else
case z of
KeyBkSpace: if i>0 then begin delete(S0,i,1); dec(i); PutScr(x+Length(S0),y,' '); end
else Beep;
else
if not (z in [KeyEnter,KeyESC]) then Beep;
end;
until z in [KeyEnter,KeyESC];
if z in [KeyEnter] then
S:=S0
else
begin TextXY(x,y,S); ScrFill(x+Length(S),y,x+w-1,y,' '); end;
gotoxy(xm,ym);
end;
Pozdrawiam
(PS do administratorow forum: NIE BLOKUJCIE MOICH POSTOW I ODPOWIEDZI!!!)
// to pisz posty na poziomie - ŁF