Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    48

    [Dephi] Colorare una riga di una griglia

    Hola hola.
    Allora ..ho una table collegata ad una griglia (meglio un mem data ..ma è lo stesso)
    e volevo colorare una riga..della griglia quando la mia condizione fosse vera.

    Ma......uff me la fa tutta

    ora .....io uso una DxDBGrid ..ma se avete la soluzione per una DBgrid ..cmq..la accetto comunque.

    Ciao raga

    buon work :quote:
    FatMax

    Italian Programmer

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Puoi facilmente ottenere l'effetto che desideri gestendo l'evento OnDrawDataCell del controllo DBGrid. Il metodo di gestione di tale evento viene richiamato ogni volta che il controllo deve scrivere il valore di un campo della tabella all'interno della corrispondente cella della griglia. Il campo contenente il valore viene passato come parametro al metodo; ispezionando il valore del campo per il record corrente, puoi decidere se intervenire o no sulla modalità predefinita di disegno della cella. Ad esempio, potresti verificare se il campo, di tipo Booleano, vale True o False e riempire una cella con il colore rosso oppure verde a seconda del caso. Consulta l'argomento della Guida in linea di Delphi che tratta gli eventi del controllo DBGrid...troverai anche un esempio che dovrebbe fare proprio al caso tuo.
    L'evento è ereditato dalla classe base TCustomDBGrid...non so da dove provenga il controllo che usi tu (DxDBGrid), ma se eredita dalla suddetta classe base, il funzionamento dovrebbe essere analogo a quello adottato con la DBGrid.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    48

    Grazie mille :)

    Allora io uso la DxDBGrid .....è un componente buy ..che trovi
    su
    www.devexpress.com
    cmq....
    allora con questo componente c'è il metodo CustomDrawCell......ma non riesco a fare vedere ..il campo che devo controllare..
    sono riuscito a colorare
    ma non mi differenzia le cose.....e soprattutto.....si comporta in modo strano quando editi la tabella
    FatMax

    Italian Programmer

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Credo che la "Developer Express", l'azienda che produce il componente in tuo possesso, abbia anche un forum di discussione privato sul proprio sito. Prova a inoltrare a loro la tua richiesta di aiuto.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    E se volessi utilizzare una griglia normale di testo ? (no database)
    Se con le freccette desiderassi evidenziare la riga corrente?
    Non sono ancora riuscito a trovare il metodo opportuno per fare evidenziare ste c...o di righe a mio piacimento

    Ciao!

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Per visualizzare una semplice griglia di testo, puoi usare il controllo TStringGrid, disponibile nella pagina "Additional" della Palette dei componenti. Per visualizzare le stringhe utilizzando stili a tuo piacimento, devi gestire l'evento OnDrawCell, il quale ti consente di intervenire sul normale meccanismo di disegno di ogni singola cella della griglia.
    Al metodo incaricato di gestire l'evento vengono passati alcuni parametri che consentono di identificare la riga e la colonna che si sta tracciando, lo stato della cella (standard, selezionata, fissa...), l'area che essa occupa sul controllo e così via.
    La proprietà DefaultDrawing ti consente di regolare il grado di personalizzazione del disegno. Se impostata a True, il controllo ti disegna lo sfondo della cella e il bordo di selezione (quando necessario) prima di "passare la palla" al tuo metodo, che dovrà completare l'opera scrivendo il testo della cella (vedi oggetto Canvas, metodo TextOut) o copiando una porzione di immagine; se DefaultDrawing è impostata a False, dovrai gestire l'intero tracciamento della cella (sfondo, bordo di selezione ove necessario, testo, immagini, ecc.); il parametro Rect indica l'area grafica occupata dalla cella corrente.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Ma OnDrawCell non si scatena durante la creazione della griglia e smette quando ha finito ?

    Se il testo che metto nella griglia è dinamico, cioè cambia a seconda delle mie preferenze, e io voglio che la riga che lo evidenzi per esempio diventi gialla anzichè blu(quella di default) come faccio ?

    Scusa ma con i metodi di "disegno" non ci capisco un granchè :tongue:

  8. #8
    Sono riuscito a colorare ste benedette celle!
    Nella procedura OnDrawCell ho cambiato le proprietà di canvas es.

    if StringGrid1.Cells[Acol,Arow] = 'HTML.IT'then
    begin
    Canvas.Brush.Color := clyellow;
    Canvas.FillRect(Rect);
    Canvas.Font.Color := clBLACK;
    Canvas.TextOut(Rect.Left+2, Rect.Top+2,StringGrid1.Cells[acol,arow]);

    Ciauz!

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Meglio così...

    Scusa per il silenzio. Volevo sperimentare una buona soluzione da farti vedere...però mi è mancato totalmente il tempo!

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.