You are on page 1of 13

set talk off set status off set scoreboard off set escape off set exact off

use katalog.dbf if file('wyk_tyt.idx') set index to wyk_tyt else index on iif(at('*',wyk_tyt)>0,substr(wyk_tyt,1,at('*',wyk_tyt)-1)+replicate(' ',40-at('*',wyk_tyt)),wyk_tyt)+rtrim(rok_wyd) to wyk_tyt endif set procedure to oglad.fox @ 0,24 to 2,55 double @ 1,27 say 'PRZEGLADANIE KATALOGU PLYT' @ 24,32 say 'ESC - wyjscie' set color to +w @ 4,14 say 'Wykonawca i tytul plyty Rok Czas' set color to dime tab(50) do wybierz with 5,7,16,0,"wyk_tyt+' '+rok_wyd+' '+czas" quit ****************************************************** * wybierz * ****************************************************** procedure wybierz parameters yp,xp,rozmiar,del,tresc private private private private private private private private private private private private private private private private private private private ekrwybb ekrind nrrek nrhome nrend nrporz rozmiar liczrek klucz kluczok wybor dlugosc biezind wyrind i j k xk xpw

save screen to ekrwybb set deleted on escape=.f. nrrek=recno() liczrek=reccount() if liczrek=0 return endif goto top nrhome=recno() goto bottom

nrend=recno() goto nrrek i=1 do while i<=rozmiar .and..not.eof() i=i+1 skip enddo i=i-1 k=i if i<rozmiar j=1 goto bottom i=1 do while i<k i=i+1 skip -1 enddo else goto nrrek j=1 endif dlugosc=len(&tresc) i=1 do while i<=rozmiar if .not. eof() tab(i)=&tresc tab(i+rozmiar)=recno() else tab(i)=replicate(' ',dlugosc) tab(i+rozmiar)=0 endif i=i+1 if .not. eof() skip endif enddo goto nrrek escape=.f. wybor=.f. xk=len(&tresc)+1+xp @ yp,xp clear to yp+rozmiar+1,xk @ yp,xp to yp+rozmiar+1,xk do while .not. wybor .and. .not. escape i=1 do while i<=rozmiar if i=j set color to n/w endif @ yp+i,xp+1 say tab(i) if i=j set color to endif i=i+1 enddo kluczok=.f. @ yp+j,xp+1 say '' do while .not. kluczok klucz=inkey(0) do case case klucz=4 .or. klucz=5

kluczok=.t. if .not. recno()=nrhome if j>1 j=j-1 skip -1 else i=rozmiar do while i>1 tab(i)=tab(i-1) tab(i+rozmiar)=tab(i+rozmiar-1) i=i-1 enddo skip -1 tab(i)=&tresc tab(i+rozmiar)=recno() endif endif case klucz=19 .or. klucz=24 kluczok=.t. if .not. recno()=nrend if j<rozmiar j=j+1 skip else i=1 do while i<rozmiar tab(i)=tab(i+1) tab(i+rozmiar)=tab(i+rozmiar+1) i=i+1 enddo skip tab(i)=&tresc tab(i+rozmiar)=recno() endif endif case klucz=1 kluczok=.t. if .not. recno()=nrhome j=1 goto top i=1 do while i<=rozmiar if .not. eof() tab(i)=&tresc tab(i+rozmiar)=recno() else tab(i)=replicate(' ',dlugosc) tab(i+rozmiar)=0 endif i=i+1 if .not. eof() skip endif enddo goto top endif case klucz=6 kluczok=.t. if .not. recno()=nrend i=rozmiar

k=0 do while i>=1 .and. k=0 k=tab(i+rozmiar) i=i-1 enddo i=i+1 if k=nrend j=i goto bottom else j=rozmiar goto bottom i=rozmiar do while i>=1 tab(i)=&tresc tab(i+rozmiar)=recno() i=i-1 skip -1 enddo goto bottom endif endif case klucz=18 kluczok=.t. if .not. recno()=nrhome k=tab(1+rozmiar) goto k i=rozmiar do while i>=1 .and. .not. bof() skip -1 i=i-1 enddo i=i+1 if i>1 goto top j=1 i=1 do while i<=rozmiar if .not. eof() tab(i)=&tresc tab(i+rozmiar)=recno() else tab(i)=replicate(' ',dlugosc) tab(i+rozmiar)=0 endif i=i+1 if .not. eof() skip endif enddo goto top else tab(rozmiar)=tab(1) tab(2*rozmiar)=tab(1+rozmiar) k=tab(1+rozmiar) goto k i=rozmiar-1 skip -1 do while i>=1 tab(i)=&tresc

tab(i+rozmiar)=recno() skip -1 i=i-1 enddo k=tab(j+rozmiar) goto k endif endif case klucz=3 kluczok=.t. if .not. recno()=nrend i=rozmiar k=0 do while i>=1 .and. k=0 k=tab(i+rozmiar) i=i-1 enddo i=i+1 if k=nrend j=i goto bottom else tab(1)=tab(rozmiar) tab(1+rozmiar)=tab(2*rozmiar) k=tab(2*rozmiar) goto k i=2 skip do while i<=rozmiar if .not. eof() tab(i)=&tresc tab(i+rozmiar)=recno() skip else tab(i)=replicate(' ',dlugosc) tab(i+rozmiar)=0 endif i=i+1 enddo k=tab(j+rozmiar) if k=0 i=rozmiar k=0 do while i>=1 .and. k=0 k=tab(i+rozmiar) i=i-1 enddo i=i+1 if k=nrend j=i goto bottom else k=tab(j+rozmiar) goto k endif else goto k endif endif endif

case klucz=13 kluczok=.t. wybor=.t. case klucz=27 kluczok=.t. wybor=.t. escape=.t. case klucz=7 kluczok=.t. if del=1 delete nrrek=recno() if j=1.and.nrrek=nrend skip -1 if .not. bof() goto bottom tab(j+rozmiar)=recno() tab(j)=&tresc nrend=recno() else pack return endif else if nrrek#nrend i=j do while i<rozmiar if .not. eof() tab(i)=tab(i+1) tab(i+rozmiar)=tab(i+rozmiar+1) else tab(i)=replicate(' ',dlugosc) tab(i+rozmiar)=0 endif i=i+1 if .not. eof() skip endif enddo if .not. eof() tab(rozmiar)=&tresc tab(2*rozmiar)=recno() else tab(rozmiar)=replicate(' ',dlugosc) tab(2*rozmiar)=0 endif goto nrrek if nrrek=nrhome skip nrhome=recno() else skip endif else tab(j)=replicate(' ',dlugosc) tab(j+rozmiar)=0 j=j-1 skip -1 nrend=recno() endif

endif endif case klucz=29 kluczok=.t. biezind=sys(14,1)+' ' if biezind>' ' clear typeahead save screen to ekrind xpw=max(xp+dlugosc+1-16,1) @ yp,xpw clear to yp+2,xpw+16 @ yp,xpw to yp+2,xpw+16 wyrind=mget(yp+1,xpw+1,15) restore screen from ekrind if .not. escape escape=.f. nrrek=recno() seek wyrind if .not. found() do komun with 'Nie znaleziono podanego rekordu' goto nrrek else nrrek=recno() i=1 j=1 do while i<=rozmiar if .not. eof() tab(i)=&tresc tab(i+rozmiar)=recno() else tab(i)=replicate(' ',dlugosc) tab(i+rozmiar)=0 endif i=i+1 if .not. eof() skip endif enddo goto nrrek endif else escape=.f. endif endif endcase enddo enddo restore screen from ekrwybb set deleted off if escape recall all else goto top locate for deleted() if found() pack endif endif close all use return

****************************************************** * komun * ****************************************************** procedure komun parameters tresc private yp,xp,yk,xk private kmax private lwierszy private i,j,k private znak private ekran dimension tabl(20) i=1 do while i<=10 tabl(i)='' tabl(i+10)=0 i=i+1 enddo i=1 lwierszy=1 do while i<=len(tresc) znak=substr(tresc,i,1) if znak=' ' lwierszy=lwierszy+1 endif i=i+1 enddo i=1 k=0 j=5-int(lwierszy/2)+1 yp=7+j-1 yk=7+j+lwierszy do while i<=len(tresc) znak=substr(tresc,i,1) if znak=' ' tabl(j+10)=k k=0 j=j+1 else tabl(j)=tabl(j)+znak k=k+1 endif i=i+1 enddo tabl(j+10)=k i=1 kmax=0 do while i<=10 kmax=max(kmax,tabl(i+10)) i=i+1 enddo xp=39-int(kmax/2) xk=39-int(kmax/2)+kmax+1 save screen to ekran clear typeahead @ yp,xp clear to yk,xk @ yp,xp to yk,xk @ 24, 1 say '

WCI NIJ DOWOLNY KLAWISZ

' i=1 do while i<=10 if tabl(i+10)<>0 @ 7+i,1+(39-int(tabl(i+10)/2)) say tabl(i) endif i=i+1 enddo do klawisz restore screen from ekran return ****************************************************** * klawisz * ****************************************************** procedure klawisz private klucz klucz=0 do while klucz=0 klucz=inkey() enddo if klucz=27 escape=.t. endif return ****************************************************** * mget * ****************************************************** procedure mget parameters y,x,dlokn private private private private private private private dlugosc wsk wskokn tekst okno modeover znak

dlugosc=256 modeover=.f. set color to n/w @ y,x say replicate(' ',dlokn) tekst='' okno='' @ y,x say '' znak=0 wsk=1 wskokn=1 do while znak<>13 .and. znak<>27 znak=0 do while znak=0 znak=inkey() enddo do case case znak=27 escape=.t. case znak=4 if wsk<=len(tekst) wsk=wsk+1

if wskokn<dlokn wskokn=wskokn+1 else if wsk<=len(tekst) okno=substr(tekst,wsk-dlokn+1,dlokn) else okno=right(tekst,dlokn-1) endif endif endif case znak=19 if wsk>1 wsk=wsk-1 if wskokn>1 wskokn=wskokn-1 else okno=substr(tekst,wsk,dlokn) endif endif case znak=1 if wsk>1 wsk=1 if wskokn>1 wskokn=1 endif if len(tekst)>dlokn okno=left(tekst,dlokn) endif endif case znak=6 if wsk<=len(tekst) wsk=len(tekst)+1 wskokn=min(dlokn,len(tekst)+1) okno=right(tekst,dlokn-1) endif case znak=22 modeover=.not. modeover case znak=127 if wsk>1 if wskokn>1 wsk=wsk-1 wskokn=wskokn-1 if wskokn=1 if wsk+dlokn>len(tekst) okno=right(okno,len(okno)-1) if wsk=len(tekst) tekst=left(tekst,len(tekst)-1) else tekst=substr(tekst,1,wsk-1)+substr(tekst,wsk+1,len(tekst)-wsk) endif else okno=right(okno,len(okno)-1)+substr(tekst,wsk+dlokn-wskokn+1,1) if wsk=len(tekst) tekst=left(tekst,len(tekst)-1) else tekst=substr(tekst,1,wsk-1)+substr(tekst,wsk+1,len(tekst)-wsk) endif endif else if wsk+dlokn-wskokn+1>len(tekst)

if wsk=len(tekst) tekst=left(tekst,len(tekst)-1) okno=right(tekst,wskokn-1) else okno=substr(okno,1,wskokn-1)+substr(tekst,wsk+1,len(tekst)-wsk) tekst=substr(tekst,1,wsk-1)+substr(tekst,wsk+1,len(tekst)-wsk) endif else okno=substr(okno,1,wskokn-1)+substr(okno,wskokn+1,len(okno)-wskokn )+substr(tekst,wsk+dlokn-wskokn+1,1) if wsk=len(tekst) tekst=left(tekst,len(tekst)-1) else tekst=substr(tekst,1,wsk-1)+substr(tekst,wsk+1,len(tekst)-wsk) endif endif endif else wsk=wsk-1 if wsk>1 if wsk<len(tekst) tekst=substr(tekst,1,wsk-1)+substr(tekst,wsk+1,len(tekst)-wsk) else if len(tekst)>1 tekst=left(tekst,len(tekst)-1) else tekst='' endif endif else if len(tekst)>1 tekst=right(tekst,len(tekst)-1) else tekst='' endif endif endif endif case znak=7 if wsk<=len(tekst) if wsk+dlokn-wskokn+1>len(tekst) if len(tekst)>1 if wsk+1>len(tekst) okno=left(okno,wskokn-1) tekst=left(tekst,len(tekst)-1) else okno=substr(okno,1,wskokn-1)+substr(tekst,wsk+1,len(tekst)-wsk) tekst=substr(tekst,1,wsk-1)+substr(tekst,wsk+1,len(tekst)-wsk) endif else okno='' tekst='' endif else if wskokn<dlokn okno=substr(okno,1,wskokn-1)+substr(okno,wskokn+1,len(okno)-wskokn)+ substr(tekst,wsk+dlokn-wskokn+1,1) else okno=substr(okno,1,wskokn-1)+substr(tekst,wsk+dlokn-wskokn+1,1) endif

if wsk=len(tekst) tekst=left(tekst,len(tekst)-1) else tekst=substr(tekst,1,wsk-1)+substr(tekst,wsk+1,len(tekst)-wsk) endif endif endif case znak>=32 .and. znak<=126 .or. znak>=128 .and. znak<=254 if len(tekst)<dlugosc if .not. modeover if wsk>len(tekst) if wskokn<dlokn okno=okno+chr(znak) tekst=tekst+chr(znak) wskokn=wskokn+1 wsk=wsk+1 else okno=right(okno,dlokn-2)+chr(znak) tekst=tekst+chr(znak) wsk=wsk+1 endif else if wskokn<dlokn if wsk+dlokn-wskokn>len(tekst) okno=substr(okno,1,wskokn-1)+chr(znak)+substr(okno,wskokn,len(ok no)-wskokn+1) tekst=substr(tekst,1,wsk-1)+chr(znak)+substr(tekst,wsk,len(tekst )-wsk+1) wsk=wsk+1 wskokn=wskokn+1 else okno=substr(okno,1,wskokn-1)+chr(znak)+substr(okno,wskokn,dloknwskokn) tekst=substr(tekst,1,wsk-1)+chr(znak)+substr(tekst,wsk,len(tekst )-wsk+1) wsk=wsk+1 wskokn=wskokn+1 endif else if wsk>len(tekst) okno=substr(okno,2,wskokn-2)+chr(znak) tekst=tekst+chr(znak) wsk=wsk+1 else okno=substr(okno,2,wskokn-2)+chr(znak)+substr(okno,wskokn,1) tekst=substr(tekst,1,wsk-1)+chr(znak)+substr(tekst,wsk,len(tekst )-wsk+1) wsk=wsk+1 endif endif endif else if wsk>len(tekst) if wskokn<dlokn okno=okno+chr(znak) tekst=tekst+chr(znak) wskokn=wskokn+1 wsk=wsk+1 else okno=right(okno,dlokn-2)+chr(znak)

tekst=tekst+chr(znak) wsk=wsk+1 endif else if wskokn<dlokn if wsk+dlokn-wskokn>len(tekst) if wsk<len(tekst) okno=substr(okno,1,wskokn-1)+chr(znak)+substr(okno,wskokn+1,le n(okno)-wskokn+1) tekst=substr(tekst,1,wsk-1)+chr(znak)+substr(tekst,wsk+1,len(t ekst)-wsk+1) wsk=wsk+1 wskokn=wskokn+1 else okno=substr(okno,1,wskokn-1)+chr(znak) tekst=substr(tekst,1,wsk-1)+chr(znak) wsk=wsk+1 wskokn=wskokn+1 endif else okno=substr(okno,1,wskokn-1)+chr(znak)+substr(okno,wskokn+1,dlok n-wskokn) tekst=substr(tekst,1,wsk-1)+chr(znak)+substr(tekst,wsk+1,len(tek st)-wsk+1) wsk=wsk+1 wskokn=wskokn+1 endif else if wsk>len(tekst) okno=substr(okno,2,wskokn-2)+chr(znak) tekst=tekst+chr(znak) wsk=wsk+1 else if wsk<len(tekst) okno=substr(okno,2,wskokn-2)+chr(znak)+substr(tekst,wsk+1,1) tekst=substr(tekst,1,wsk-1)+chr(znak)+substr(tekst,wsk+1,len(t ekst)-wsk+1) wsk=wsk+1 else okno=substr(okno,2,wskokn-2)+chr(znak) tekst=substr(tekst,1,wsk-1)+chr(znak) wsk=wsk+1 endif endif endif endif endif endif otherwise wsk=wsk endcase if len(okno)<dlokn @ y,x say okno+replicate(' ',dlokn-len(okno)) else @ y,x say okno endif @ y,(x-1)+wskokn say '' enddo set color to return tekst

You might also like