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
-PacMan- - pulsanti.pas

pulsanti.pas

Caricato da:
Scarica il programma completo

  1. (*Nome unit:    pulsanti*)
  2. (*Versione:             0.7-beta*)
  3. (*Licenza:              GNU GPL*)
  4. (*Rilascio:             08/07/2010*)
  5. (*Autore:               Francesco Marrone (alias Giarados)*)
  6. (*Descrizione:  in questo modulo si definisce la classe pulsante*)
  7.  
  8.  
  9.  
  10. unit pulsanti;
  11.  
  12. interface
  13.  
  14. {definizione della classe pulsante}
  15. type
  16.         pulsante=object
  17.        
  18.         private
  19.        
  20.         {posizione dell'angolo in alto a sinistra}
  21.         ascissa:smallint;
  22.         ordinata:smallint;
  23.        
  24.         {altezza e larghezza del pulsante}
  25.         altezza:byte;
  26.         larghezza:byte;
  27.        
  28.         {testo contenuto nel pulsante}
  29.         testo:string;
  30.        
  31.         {colore del pulsante}
  32.         colore:byte;
  33.        
  34.         {colore che assume se il mouse gli passa sopra}
  35.         vicecolore:byte;
  36.        
  37.         public
  38.        
  39.         {costruttore della classe pulsante}
  40.         constructor crea(x,y,h,l,colour,vicecolour:byte; const stringa:string);
  41.        
  42.         {distruttore della classe pulsante}
  43.         destructor distruggi;
  44.        
  45.         {la funzione pressato restituisce true se si clicca nell'area occupata dal tasto}
  46.         function pressato():boolean;
  47.        
  48.         {il metodo disegna si occupa di disegnare il tasto}
  49.         procedure disegna;
  50. end;
  51.  
  52.  
  53. implementation
  54.  
  55. uses wingraph,winmouse;
  56.  
  57. const cella_tasti=15;
  58.  
  59. {costruttore della classe pulsante}
  60. constructor pulsante.crea(x,y,h,l,colour,vicecolour:byte; const stringa:string);
  61. begin
  62.  
  63.         {vengono inizializzati tutti i campi}
  64.         ascissa:=x*cella_tasti;
  65.         ordinata:=y*cella_tasti;
  66.         altezza:=h*cella_tasti;
  67.         larghezza:=l*cella_tasti;
  68.         colore:=colour;
  69.         vicecolore:=vicecolour;
  70.         testo:=stringa;
  71. end;
  72.  
  73. {se distrutto il pulsante viene cancellato dallo schermo
  74. e i suoi campi vengono resettati}
  75. destructor pulsante.distruggi;
  76. begin
  77.         setviewport(ascissa,ordinata,ascissa+larghezza,ordinata+altezza,true);
  78.         clearviewport;
  79.         setviewport(0,0,getmaxx,getmaxy,false);
  80.        
  81.         ascissa:=0;
  82.         ordinata:=0;
  83.         altezza:=0;
  84.         larghezza:=0;
  85.         colore:=0;
  86.         vicecolore:=0;
  87.         testo:='';
  88. end;
  89.  
  90. {la funzione pressato restituisce true se si clicca nell'area occupata dal tasto}
  91. function pulsante.pressato():boolean;
  92. var evento:MouseEventType;
  93. {MouseEventType = record
  94.                    action: word;
  95.                    buttons: word;
  96.                    x,y: word;
  97.                    wheel: smallint;
  98.                  end;}
  99. begin
  100.         pressato:=false;
  101.        
  102.         {se il cursore si trova nell'area del tasto}
  103.         if ((getmousex>=ascissa) and (getmousex<=ascissa+larghezza)) and ((getmousey>=ordinata) and (getmousey<=ordinata+altezza)) then
  104.         begin
  105.                 GetMouseEvent(evento);
  106.                 if (evento.action=MouseActiondown) then {se il tasto viene pressato}
  107.                         begin
  108.                                 GetMouseEvent(evento);
  109.                                
  110.                                 if evento.action=MouseActionup then     pressato:=true; {e viene anche rilasciato allora pressato sarà true}
  111.                         end;
  112.         end;
  113. end;
  114.  
  115. {il metodo disegna si occupa di disegnare il tasto}
  116. procedure pulsante.disegna;
  117. begin
  118.  
  119. {se il cursore è interno al pulsante allora si utilizza il vicecolore per disegnarlo}
  120.         if ((getmousex>=ascissa) and (getmousex<=ascissa+larghezza)) and ((getmousey>=ordinata) and (getmousey<=ordinata+altezza)) then
  121.         begin
  122.                 case vicecolore of
  123.                 0:              setcolor(black);
  124.                 1:              setcolor(white);
  125.                 2:              setcolor(yellow);
  126.                 3:              setcolor(orange);
  127.                 4:              setcolor(purple);
  128.                 5:              setcolor(red);
  129.                 else setcolor(GetBkColor);
  130.                 end;
  131.                
  132.                 rectangle(ascissa,ordinata,ascissa+larghezza,ordinata+altezza);
  133.                 outtextxy(ascissa+cella_tasti,ordinata+altezza-(cella_tasti*2),testo);
  134.         end;
  135.  
  136. {se il cursore è esterno al pulsante allora si utilizza il colore standard per disegnarlo}
  137.         if not (((getmousex>=ascissa) and (getmousex<=ascissa+larghezza)) and ((getmousey>=ordinata) and (getmousey<=ordinata+altezza))) then
  138.         begin
  139.                 case colore of
  140.                 0:              setcolor(black);
  141.                 1:              setcolor(white);
  142.                 2:              setcolor(yellow);
  143.                 3:              setcolor(orange);
  144.                 4:              setcolor(purple);
  145.                 5:              setcolor(red);
  146.                 else setcolor(GetBkColor);
  147.                 end;
  148.        
  149.                 rectangle(ascissa,ordinata,ascissa+larghezza,ordinata+altezza);
  150.                 outtextxy(ascissa+cella_tasti,ordinata+altezza-(cella_tasti*2),testo);
  151.         end;
  152. end;
  153.  
  154. end.