PDA

View Full Version : Funzione globale in C++


Unrue
14-04-2006, 15:28
Con il Borland C++ Builder 6 sto sviluppando un programma che crea e risolve labirinti. E' un labirinto 8x8 . Ho associato ad ogni bottone del labirinto una funzione che chiama una procedura, del tipo:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
genera_iniziofine(array_bottoni,1,iniziofine);

}

Il problema è che ho 64 funzioni di questo tipo nel codice, ognuna gestisce il click del bottone. Siccome l'evento che scatena è lo stesso per tutti i bottoni, mi chiedevo se c'e' il modo di fare una funzione globale che gestisce tutti e 64 i bottoni, in modo che gli passo il bottone che genera l'evento e da li' richiama la procedura.

Un altro problema che ho incontrato è il seguente: quando trovo il percorso che risolve il labirinto, gli dico di cambiare colore ai bottoni facenti parte del percorso nel seguente modo:

Button1->Brush->Color=clBlue;

ma non cambia il colore, sembra che alcune proprietà dei bottoni siano bloccate. Lo stesso lo fa se voglio cambiare l'aspetto del puntatore del mouse.

71104
15-04-2006, 14:40
non serve che la funzione sia globale: basta che crei l'event handler per il primo bottone e poi lo assegni anche a tutti gli altri nell'Object Inspector.

Unrue
15-04-2006, 15:05
non serve che la funzione sia globale: basta che crei l'event handler per il primo bottone e poi lo assegni anche a tutti gli altri nell'Object Inspector.

Allora, ho provato con due bottoni, dicendo che se clicco il primo cambia il Caption a X. Lo stesso evento l'ho messo nel bottone 2. Se clicco il bottone 2 mi mette il Caption del bottone 1 a X. Pero' non è esattamente quello che volevo. Io volevo che, cliccando sul secondo bottone, la sua etichetta diventasse X, non quella del primo bottone. Cioè, vorrei creare un evento unico per tutti i bottoni che pero' si riflette sul bottone che clicco.

71104
15-04-2006, 17:53
usa Sender, serve a quello :)
castalo a TButton, o quello che è.

wingman87
15-04-2006, 18:01
Non so come funziona nel c++, xò se è come nel VB si deve dare a tutti i bottoni lo stesso nome, in questo modo si crea un array di bottoni, identificabili da un indice (index), quando parte l'evento associato al click basta controllare l'index del tasto premuto e agire di conseguenza.
X quanto riguarda il colore del bottone, sempre se è come nel VB, c'è una proprietà del bottone (in VB si kiama "style") che indica se il bottone è "Standard" o ha una grafica. Mettendo "Graphical" puoi cambiare il colore.

Unrue
18-04-2006, 21:11
Non so come funziona nel c++, xò se è come nel VB si deve dare a tutti i bottoni lo stesso nome, in questo modo si crea un array di bottoni, identificabili da un indice (index), quando parte l'evento associato al click basta controllare l'index del tasto premuto e agire di conseguenza.
X quanto riguarda il colore del bottone, sempre se è come nel VB, c'è una proprietà del bottone (in VB si kiama "style") che indica se il bottone è "Standard" o ha una grafica. Mettendo "Graphical" puoi cambiare il colore.

L'array di bottoni l'ho già creato, pero' non ho ben chiaro come fare la funzione che gestisce tutti i click, dato che me ne crea una per ogni bottone.