Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
gestione a finestre 2 (dos) - FIN_VID.PAS

FIN_VID.PAS

Caricato da: David
Scarica il programma completo

  1. unit fin_vid;
  2.  
  3.  
  4.      (**********************)  interface  (****************************)
  5.  
  6. TYPE
  7.   tipo_cornice=(singola,doppia);
  8.  
  9.  
  10. finestra_vid=object
  11.   tipo_cor:tipo_cornice;
  12.   (*default cornice doppia*)
  13.   ombra:boolean;
  14.   (*d… ombra alla finestra. default false*)
  15.   posX,posY:byte;
  16.   (*posizione finestra angolo alto-sinistra; default 1-1*)
  17.   righe,lunghezza_stringa_max:byte;
  18.   (*exclusa cornice intorno, default 5-20*)
  19.   tc_int,tb_int:byte;
  20.   (*colore testo e colore sfondo interni, default 15-1/bianco-blu*)
  21.   tc_corn,tb_corn:byte;
  22.   (*colore testo e sfondo della cornice, default 0-1/nero-blu*)
  23.   procedure init;
  24.   (*inizializza default*)
  25.   procedure dai_corn(corn:tipo_cornice);
  26.   procedure dai_ombra;
  27.   procedure dai_posiz(x,y:byte);
  28.   (*angolo alto-sinistra*)
  29.   procedure dai_lunghezza(l:byte);
  30.   procedure dai_righe(r:byte);
  31.   procedure dai_col_int(tc,tb:byte);
  32.   (*interno alla cornice*)
  33.   procedure dai_col_corn(tc,tb:byte);
  34.   (*colore testo e sfondo della cornice*)
  35.   procedure colora;
  36.   (*scrive nella memoria video solo i colori, lascia le stringhe*)
  37.   procedure fai_cornice;
  38.   (*disegna la cornice nella memoria video*)
  39.   procedure disegna;
  40.   (*disegna tutta la finestra nella memoria video*)
  41.   procedure s_st(riga:byte; s:string);
  42.   (*scrivi stringa*)
  43.   procedure s_st_c(riga:byte;s:string);
  44.   (*scrivi stringa centrata*)
  45.   end;
  46.   finestra_iter=object(finestra_vid)
  47.     iterY:byte;
  48.     tc_iter,tb_iter:byte;
  49.     procedure init;
  50.     procedure cambia_iterY(y:byte);
  51.     (*cambia l'indice e ridisegna la riga con l'indice(solo colori)*)
  52.     procedure cambia_col_iter(tc,tb:byte);
  53.     (*cambia colori e ridisegna i colori*)
  54.     procedure dai_iterY(y:byte);
  55.     procedure dai_col_iter(tc,tb:byte);
  56.     procedure colora;
  57.     procedure disegna;
  58.     end;
  59.  
  60.    (********************) IMPLEMENTATION (********************)
  61. uses mem_vid;
  62.  
  63.  
  64. procedure cornice(x1,x2,y1,y2,fg,bg:byte;s1,s2,s3,s4,s5,s6:char);
  65. var
  66.   i:byte;
  67. begin
  68.   for i:=x1+1 to x2-1 do
  69.     begin
  70.       fissa_car_col(i,y1,s5,fg,bg);
  71.       fissa_car_col(i,y2,s5,fg,bg);
  72.     end;
  73.   for i:=y1+1 to y2-1 do
  74.     begin
  75.       fissa_car_col(x1,i,s6,fg,bg);
  76.       fissa_car_col(x2,i,s6,fg,bg);
  77.     end;
  78.   fissa_car_col(x1,y1,s1,fg,bg);
  79.   fissa_car_col(x2,y1,s2,fg,bg);
  80.   fissa_car_col(x1,y2,s3,fg,bg);
  81.   fissa_car_col(x2,y2,s4,fg,bg);
  82. end;
  83.  
  84.  
  85. (********************INIZIO OGGETTO FINESTRA_VID**************************)
  86.  
  87.  
  88.  
  89.  
  90. procedure finestra_vid.init;
  91. begin
  92.   ombra:=false;
  93.   tipo_cor:=doppia;
  94.   lunghezza_stringa_max:=20; righe:=5;
  95.   posX:=1; posY:=1;
  96.   tc_int:=15; tb_int:=1;
  97.   tc_corn:=0; tb_corn:=1;
  98. end;
  99.  
  100.  
  101.  
  102.  
  103. procedure finestra_vid.dai_corn;
  104. begin
  105.   tipo_cor:=corn;
  106. end;
  107.  
  108.  
  109.  
  110. procedure finestra_vid.dai_ombra;
  111. begin
  112.   ombra:=true;
  113. end;
  114.  
  115.  
  116.  
  117. procedure finestra_vid.dai_posiz;
  118. begin
  119.   posX:=x; posY:=y;
  120. end;
  121.  
  122.  
  123.  
  124.  
  125.  
  126. procedure finestra_vid.dai_lunghezza;
  127. begin
  128.   lunghezza_stringa_max:=l;
  129. end;
  130.  
  131.  
  132.  
  133. procedure finestra_vid.dai_righe;
  134. begin
  135.   righe:=r;
  136. end;
  137.  
  138.  
  139.  
  140. procedure finestra_vid.dai_col_int;
  141. begin
  142.   tc_int:=tc;
  143.   tb_int:=tb;
  144. end;
  145.  
  146.  
  147.  
  148.  
  149. procedure finestra_vid.dai_col_corn;
  150. begin
  151.   tc_corn:=tc;
  152.   tb_corn:=tb;
  153. end;
  154.  
  155.  
  156.  
  157. procedure finestra_vid.colora;
  158. var b:boolean;
  159. begin
  160.   if ombra
  161.     then b:=((posX+lunghezza_stringa_max+1) >=80)
  162.     else b:=((posX+lunghezza_stringa_max+1) >80);
  163.   if b then posX:=80-lunghezza_stringa_max-2;
  164.   pulisci_att(posX+1,posY+1,posX+lunghezza_stringa_max,posY+righe,tc_int,tb_int);
  165. end;
  166.  
  167.  
  168. procedure finestra_vid.fai_cornice;
  169. var b:boolean;
  170. begin
  171.   if ombra
  172.     then b:=((posX+lunghezza_stringa_max+1) >=80)
  173.     else b:=((posX+lunghezza_stringa_max+1) >80);
  174.   if b then posX:=80-lunghezza_stringa_max-2;
  175.   case tipo_cor of
  176.     singola:cornice(posX,posX+lunghezza_stringa_max+1,posY,posY+righe+1,
  177.                       tc_corn,tb_corn,'Ú','¿','À','Ù','Ä','³');
  178.     doppia:cornice(posX,posX+lunghezza_stringa_max+1,posY,posY+righe+1,
  179.                       tc_corn,tb_corn,'É','»','È','¼','Í','º');
  180.   end;
  181. end;
  182.  
  183.  
  184.  
  185. procedure finestra_vid.disegna;
  186. var i:byte;
  187. begin
  188.   fai_cornice;
  189.   pulisci(posX+1,posY+1,posX+lunghezza_stringa_max,posY+righe,tc_int,tb_int);
  190.   if ombra then
  191.     begin
  192.       for i:=posX+1 to posX+lunghezza_stringa_max+2
  193.         do fissa_col_tb(i,posY+righe+2,0);
  194.       for i:=posY+1 to posY+righe+2
  195.         do fissa_col_tb(posX+lunghezza_stringa_max+2,i,0);
  196.     end;
  197. end;
  198.  
  199.  
  200.  
  201. procedure finestra_vid.s_st;
  202. begin
  203.   str_vid_car(posX+1,posY+riga,s);
  204. end;
  205.  
  206.  
  207.  
  208. procedure finestra_vid.s_st_c;
  209. var x:byte;
  210. begin
  211.   x:=((lunghezza_stringa_max - length(s)) div 2)+1;
  212.   str_vid_car(posX+x,posY+riga,s);
  213. end;
  214.  
  215.  
  216.  
  217.  
  218.      (*********************FINE OGGETTO FINESTRA_VID*******************)
  219.  
  220.  
  221.      (*******************INIZIO OGGETTO FINESTRA_ITER******************)
  222.  
  223. procedure finestra_iter.init;
  224. begin
  225.   inherited init;
  226.   iterY:=1;
  227.   tc_iter:=15; tb_iter:=0;
  228. end;
  229.  
  230.  
  231. procedure finestra_iter.dai_iterY;
  232. begin
  233.   iterY:=y;
  234. end;
  235.  
  236.  
  237.  
  238. procedure finestra_iter.cambia_iterY;
  239. begin
  240.   str_vid_att(posX+1,posY+iterY,lunghezza_stringa_max-1,tc_int,tb_int);
  241.   iterY:=y;
  242.   str_vid_att(posX+1,posY+iterY,lunghezza_stringa_max-1,tc_iter,tb_iter);
  243. end;
  244.  
  245.  
  246.  
  247.  
  248.  
  249. procedure finestra_iter.dai_col_iter;
  250. begin
  251.   tc_iter:=tc; tb_iter:=tb;
  252. end;
  253.  
  254.  
  255.  
  256. procedure finestra_iter.colora;
  257. begin
  258.   inherited colora;
  259.   str_vid_att(posX+1,posY+iterY,lunghezza_stringa_max-1,tc_iter,tb_iter);
  260. end;
  261.  
  262.  
  263.  
  264.  
  265.  
  266. procedure finestra_iter.disegna;
  267. begin
  268.   inherited disegna;
  269.   str_vid_att(posX+1,posY+iterY,lunghezza_stringa_max-1,tc_iter,tb_iter);
  270. end;
  271.  
  272.  
  273.  
  274.  
  275. procedure finestra_iter.cambia_col_iter;
  276. begin
  277.   dai_col_iter(tc,tb);
  278.   str_vid_att(posX+1,posY+iterY,lunghezza_stringa_max-1,tc_iter,tb_iter);
  279. end;
  280.  
  281.  
  282. (*****************FINE OGGETTO FINESTRA_ITER*************************)
  283.  
  284.  
  285. begin
  286. end.