Mangiare Senza Glutine disponibile su App Store

Per altre informazioni scrivi a fabriziocaldarelli@negusweb.it

Tavolo della roulette

Da Programmazione Software.

Descrizione

Nell’articolo precedente ho parlato di pulsante con all’interno il testo posto verticalmente. Cerchiamo di applicare ad un caso reale e concreto questo oggetto modificato. Quello che vogliamo realizzare è il classico tavolo della roulette, con 36 numeri (che nel nostro caso saranno pulsanti) più il numero zero, più grande degli altri. Siccome i 36 pulsanti saranno tutti uguali, tranne per il testo ed il colore di sfondo, creaimo un pulsante “base”, da prendere come modello per tutti gli altri, chiamato “ccbNumero” (ccb sta per CustomControlButton). Questo pulsante sarà il nostro “modello” che replicheremo in forma e dimensioni tante volte quanti sono i numeri del tavolo della roulette. Inizializziamo il controllo nel costruttore, in questo modo:

public delegate void DelegatePremutoPulsante(int numero);
 
DelegatePremutoPulsante dlgtPremutoPulsante;
CCButton[] arrCCButton;
 
public UCTavolo()
{
  int k;
  int numero;
  int left;
  Color foreColor;
 
  InitializeComponent();
 
  // Crea i pulsanti
  arrCCButton = new CCButton[36];
 
  left = ccbNumero.Left;
  foreColor = Color.Black;
  for (k = 0; k < arrCCButton.Length; k++)
  {
      numero = k + 1;
 
      if ((k % 3 == 0) && (k!=0)) left += ccbNumero.Width;
 
      if ((numero < 11) ||
          ((numero >= 19) && (numero < 29))
          )
      {
          foreColor = (numero % 2 == 0) ? Color.Black : Color.Red;
      }
      if (((numero >= 11) && (numero<19))
          ||
          ((numero >= 29))
          )
 
      {
          foreColor = (numero % 2 == 0) ? Color.Red : Color.Black;
      }
 
      arrCCButton[k] = new CCButton();
      arrCCButton[k].Text = numero.ToString();
      arrCCButton[k].Size = ccbNumero.Size;
      arrCCButton[k].Left = left;
      arrCCButton[k].Top = ccbNumero.Top - (ccbNumero.Height*(k%3));
      arrCCButton[k].ForeColor = foreColor;
      arrCCButton[k].Click += new EventHandler(UCTavolo_Click);
      this.Controls.Add(arrCCButton[k]);
  }
 
  ccbNumero.Visible = false;
  ccbZero.Click += new EventHandler(ccbZero_Click);
 
  this.dlgtPremutoPulsante = null;
}
 
void UCTavolo_Click(object sender, EventArgs e)
{
  CCButton pulsante = (CCButton)sender;
 
  if (dlgtPremutoPulsante != null)
  {
      dlgtPremutoPulsante(Int32.Parse(pulsante.Text));
  }
}


Il codice credo si spieghi abbondantemente da solo, tranne magari per la serie di if che sono necessari perchè i colori dei numeri non sono completamente alternati, ma in alcuni punti saltano l’alternanza. Il delegate “dlgtPremutoPulsante” viene chiamato quando viene premuto uno dei 36 pulsanti del tavolo e restituisce all’oggetto che lo ha impostato il fatto che il pulsante è stato premuto (un form, per esempio).


Allegati