PDA

Visualizza la versione completa : [visual c++] Colorare le celle di una StringGrid


marandavide
26-03-2012, 14:21
Ciao a tutti, volevo sapere se c'è un modo per colorare le celle di una StringGrid al click del mouse su c++ builder.
In pratica quello che dovrei fare è questo: se clicco su una delle celle bianche di una griglia essa diventa nera; mentre se clicco su una nera, essa deve ritornare al colore bianco di default.
Potreste dirmi come fare?

marandavide
27-03-2012, 13:14
nessuno?
:(

ESSE-EFFE
27-03-2012, 13:28
Nel titolo c'è VC++, nel testo BCB... per quale framework ti serve?

marandavide
27-03-2012, 14:28
scusa ho sbagliato nel titolo, è BCB
non me n'ero accorto ma ho fatto confusione

alka
27-03-2012, 14:36
Originariamente inviato da marandavide
Ciao a tutti, volevo sapere se c'è un modo per colorare le celle di una StringGrid al click del mouse su c++ builder.


Il tuo problema qual è? Intercettare il clic, oppure modificare il colore?

Prova a documentarti e a scrivere un po' di codice, così approfondiamo i dubbi nel particolare.

ESSE-EFFE
27-03-2012, 14:44
In questo caso ti basta gestire gli eventi OnMouseUp e OnDrawCell.

Puoi procedere come segue: tieni il colore delle celle in un array (oppure sfrutti la proprietà Objects[][]) inizializzando il tutto all'avvio. Gestisci il click e quindi il cambio di colore nell'evento OnMouseUp risalendo alla cella giusta tramite il metodo MouseToCell. Infine, nell'OnDrawCell, imposti il Brush in base al colore desiderato e disegni sfondo e testo tramite i metodi FillRect e TextRect.

marandavide
27-03-2012, 15:45
Originariamente inviato da alka
Il tuo problema qual è? Intercettare il clic, oppure modificare il colore?

Prova a documentarti e a scrivere un po' di codice, così approfondiamo i dubbi nel particolare.
Il mio problema era la modifica del colore delle celle
ora provo come ha detto ESSE-EFFE poi vi dico

marandavide
01-04-2012, 20:46
Scusate se rispondo ora ma in questi giorni ho avuto da fare. Dato che non sapevo bene come fare quello che mi ha detto EFFE-ESSE, mi sono fatto dare un codice scritto in delphi che fa la stessa cosa che voglio fare io; ma non sono riuscito a "tradurre" questa riga:

StringGrid1.Cols[col].Objects[row] := Tobject(True);
(col e row sono due variabili dichiarate precedentemente)
La parte che non riesco a tradurre è Tobject(true)
Sapete come fare?

marandavide
05-04-2012, 10:07
C'è nessuno che sa rispondermi?

ESSE-EFFE
05-04-2012, 10:34
Originariamente inviato da marandavide
Scusate se rispondo ora ma in questi giorni ho avuto da fare. Dato che non sapevo bene come fare quello che mi ha detto EFFE-ESSE
Cioè? Mi pare di aver spiegato tutti i passaggi necessari. Hai provato a scrivere il codice? Cosa non ti è chiaro?


Originariamente inviato da marandavide

StringGrid1.Cols[col].Objects[row] := Tobject(True);
Prova con:
StringGrid1->Objects[col][row] = (TObject *)true;

Loading