Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitÓ e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal ad Oggetti - T_WINDOW.PAS

T_WINDOW.PAS

Caricato da: Totem
Scarica il programma completo

  1. unit T_Window;
  2.  
  3. interface
  4. Const Close = 0;
  5.       Resiz = 1;
  6.  
  7. type
  8.    point=record
  9.    x,y:word;
  10. end;
  11.  
  12. type
  13.    (*Oggetto finestra*)
  14.    window=object
  15.  
  16.    private
  17.    (*Ascissa, ordinata, larghezza, altezza*)
  18.    x,y,w,h:word;
  19.    (*Colore del testo, colore della sfondo*)
  20.    t_c,b_c:byte;
  21.    (*Locazione del pulsante close e resize*)
  22.    close_b:point;
  23.    resiz_b:point;
  24.    (*Testo del titolo e del window caption*)
  25.    title:string;
  26.    text:string;
  27.  
  28.    public
  29.  
  30.    default_bk_destroy:byte;
  31.  
  32.    (*Crea l'oggetto finestra*)
  33.    constructor Create(wx,wy,ww,wh:word;titolo,testo:string);
  34.    (*Distrugge l'ggetto finestra*)
  35.    destructor Destroy(bk:byte);
  36.    (*Cambia le dimensioni*)
  37.    procedure change_size(ww,wh:word);
  38.    (*Cambia la posizione*)
  39.    procedure change_loc(wx,wy:word);
  40.    (*Cambia i colori*)
  41.    procedure change_col(wc,wb:byte);
  42.    (*Disegna la finsetra*)
  43.    procedure Draw;
  44.    (*Muove la finestra*)
  45.    procedure Move;
  46.    (*Ingrandisce la finestra*)
  47.    procedure Max;
  48.    (*Verifica la pressione di un tasto su un pulsante della finestra*)
  49.    function ClickOn(option:byte):boolean;
  50. end;
  51.  
  52. implementation
  53. uses crt,giobe;
  54.  
  55. constructor window.create;
  56. begin
  57.     salva(3);
  58.     x:=wx;
  59.     y:=wy;
  60.     w:=ww;
  61.     h:=wh;
  62.     t_c:=15;
  63.     b_c:=5;
  64.     title:=titolo;
  65.     text:=testo;
  66.     close_b.x:=wx+ww-1;
  67.     close_b.y:=wy;
  68.     resiz_b.x:=wx+ww-4;
  69.     resiz_b.y:=wy;
  70.     default_bk_destroy:=0;
  71. end;
  72.  
  73. destructor window.Destroy;
  74. var i,k:word;
  75. begin
  76.     textcolor(bk);
  77.     for i:=x to x+w do
  78.       for k:=y to y+h do
  79.         begin
  80.         gotoxy(i,k);
  81.         write('█');
  82.         end;
  83. end;
  84.  
  85. procedure window.change_size;
  86. begin
  87.     destroy(default_bk_destroy);
  88.     w:=ww;
  89.     h:=wh;
  90.     close_b.x:=x+w-1;
  91.     close_b.y:=y;
  92.     resiz_b.x:=x+w-4;
  93.     resiz_b.y:=y;
  94. end;
  95.  
  96. procedure window.change_loc;
  97. begin
  98.     destroy(default_bk_destroy);
  99.     x:=wx;
  100.     y:=wy;
  101.     close_b.x:=x+w-1;
  102.     resiz_b.x:=x+w-4;
  103.     close_b.y:=y;
  104.     resiz_b.y:=y;
  105. end;
  106.  
  107. procedure window.change_col;
  108. begin
  109.     t_c:=wc;
  110.     b_c:=wb;
  111. end;
  112.  
  113. procedure window.Draw;
  114. var i,k:word;
  115. begin
  116.     (*Sfondo*)
  117.     textcolor(b_c);
  118.     for i:=x to x+w do
  119.       for k:=y to y+h do
  120.         begin
  121.         gotoxy(i,k);
  122.         write('█');
  123.         end;
  124.  
  125.     (*Cornice*)
  126.     textcolor(t_c);
  127.     textbackground(b_c);
  128.     gotoxy(x,y);
  129.     write('╠');
  130.     gotoxy(x+w,y);
  131.     write('╗');
  132.     gotoxy(x,y+h);
  133.     write('╚');
  134.     gotoxy(x+w,y+h);
  135.     write('╝');
  136.     for i:=x+1 to x+w-1 do
  137.       begin
  138.       gotoxy(i,y);
  139.       write('═');
  140.       gotoxy(i,y+h);
  141.       write('═');
  142.       end;
  143.     for i:=y+1 to y+h-1 do
  144.       begin
  145.       gotoxy(x,i);
  146.       write('║');
  147.       gotoxy(x+w,i);
  148.       write('║');
  149.       end;
  150.  
  151.     (*Titolo*)
  152.     gotoxy(x+1,y);
  153.     write(title);
  154.  
  155.     (*Pulsanti*)
  156.     gotoxy(close_b.x,close_b.y);
  157.     write('×');
  158.     gotoxy(resiz_b.x,resiz_b.y);
  159.     write('[]');
  160.  
  161.     (*Testo*)
  162.     gotoxy(x+1,y+1);
  163.     textcolor(t_c);
  164.     textbackground(b_c);
  165.     write(text);
  166. end;
  167.  
  168. procedure window.move;
  169. begin
  170.     while SinistMou=true do
  171.       begin
  172.       if (x<>colmou(false)) and (y<>rigmou(false)) then
  173.         destroy(default_bk_destroy);
  174.       change_loc(colmou(false),rigmou(false));
  175.       draw;
  176.       end;
  177. end;
  178.  
  179. procedure window.max;
  180. begin
  181.     change_size(80,25);
  182.     change_loc(1,1);
  183. end;
  184.  
  185. function window.ClickOn;
  186. begin
  187.     if option=Close then
  188.       if chkclick(y,close_b.x,close_b.x) then
  189.         clickon:=true
  190.       else
  191.         clickon:=false
  192.     else
  193.       if chkclick(y,resiz_b.x,resiz_b.x+1) then
  194.         clickon:=true
  195.       else
  196.         clickon:=false;
  197. end;
  198.  
  199. end.