Ciao a tutti!
Come posso colorare una cella di un det. colore del componente DrawGrid e sciverci dentro?
GRazie :quote:
Ciao a tutti!
Come posso colorare una cella di un det. colore del componente DrawGrid e sciverci dentro?
GRazie :quote:
Devi intercettare l'evento che viene generato quando sta per essere disegnata la cella.
Utilizzando la proprietà Canvas del controllo DrawGrid, puoi tracciare il contenuto della cella corrente, indicata dai parametri ACol e ARow passati alla routine di gestione dell'evento. Impostando la proprietà DefaultDrawing a True, il controllo provvederà al tracciamento standard dell'aspetto delle celle, a cui potrai aggiungere i tuoi effetti speciali personali. Disabilitando DefaultDrawing (False), dovrai accollarti anche il compito di disegnare il corpo della cella, che a volte può essere utile a seconda del controllo visuale che stai cercando di ottenere.codice:procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin DrawGrid1.Canvas.TextOut(Rect.Left, Rect.Top, 'yyy'); end;
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ti ringrazio, ma come posso colorare la cella?
Ciao
Ops, hai ragione, ho dimenticato il "succo" del topic, il dettaglio più importante.![]()
Per colorare la cella, modifichi le impostazioni della proprietà Brush del Canvas e tracci un rettangolo in questo modo:
Se devi visualizzare stringhe di testo, prediligi la StringGrid, che si comporta comunque in modo analogo.codice:procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with TDrawGrid(Sender) do begin Canvas.Brush.Color := clRed; Canvas.FillRect(Rect); end; end;
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ho provato il codice ma colora tutte le celle della DrawGrid, a me serve una cosa diversa!
Dovrei gestire un calendario mensile: le celle sono i giorni e in base ai giorni della settimana la cella corrsipondente si colora di Verde o di Giallo!
Spero di essermi spiegato!
e spero che tu mi possa spiegare...
![]()
Beh, io ti ho mostrato come colorare le celle in modo generico...non potevo sapere lo scopo per il quale tu avresti dovuto colorarle...ci possono essere milioni di possibilità!
Come avrai notato, l'evento OnDrawCell ti passa come parametri l'indice di riga e colonna della cella che sta per essere disegnata. Puoi utilizzare quegli indici per individuare esattamente quale cella sta per essere disegnata. A questo punto, utilizzando i metodi e le proprietà del Canvas del controllo (vedi la descrizione nella Guida in linea di Delphi), puoi colorare la cella, copiarvi immagini, scrivere del testo al suo interno, ecc.
Nel tuo caso, forse l'approccio più semplice è quello di verificare il contenuto della cella già inizializzata con il giorno (ad esempio, "L", "M", "G", ecc.) e impostare il colore di conseguenza nel modo in cui ti ho indicato nella risposta precedente.
Spero di essermi spiegato adeguatamente.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ti sei spiegato nel migliore dei modi!
Da quanto ho capito allora posso scrivere all'interno dell'evento OnDrawCell
...e mi dovrebbe colorare la riga 1 di blu, o sbaglio?if ARow = 1 Then
begin
Canvas.Brush.Color := clBlue;
Canvas.FillRect(Rect);
end;
Esattamente!
Mmm...non ricordo se le righe vengono numerate partendo da 0, ma penso che ti basti eseguire il programma una volta o consultare la Guida in linea per scoprirlo immediatamente.![]()
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Grazie di tutto!
Cmq la prima riga ha indice 0!
Ciao