Autore Topic: [RISOLTO]Agire sul Font e sul Foreground di una riga di Tableview  (Letto 527 volte)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Non riesco a capire se sia possibile assegnare un nuovo font ed un nuovo colore di caratteri ad una sola riga o addirittura ad una sola cella di una Tablevew/Gridvierw. Per necessità di programma ho tentato di passare alla Function che si occupa della valorizzazione dell'ultima riga di Tableview, insieme con gli altri dati, anche i parametri relativi al Font, al colore di Foreground ed al colore di Background. Ebbene l'unico fra detti parametri che funziona come vorrei è il colore di background, mentre sia il nuovo Font che il nuovo colore di foreground sono attribuiti da Gambas a tutta la tableview. Il codice che ho scritto è:
Codice: gambas [Seleziona]
Private Sub CompTabMovv_VoCasPri()
----- bla ----- bla ----- bla -----
Dim $ColorFondo As String
Dim $FontMio As String
----- bla ----- bla ----- bla -----
 $FontMio = "LiberationSerif,12,-1"      ' (-1) = Vero
 $ColorFondo = "&H00343A90&"
 VisTabMovTot(fTotEntr, fTotUsc, $ValutaCorr, iRgTabMov, "Totali complessivi", $FontMio, $ColorFondo)
----- bla ----- bla ----- bla -----
End

Private Sub VisTabMovTot(fTotEntr As Float, fTotUsc As Float, $ValutaCorr As String, iRgTabMov As Integer, $CosTot As String, $Font As String, $ColorFondo As String)
----- bla ----- bla ----- bla -----
Dim iColorFondo As Integer

Dim $FontMio As New String[]
----- bla ----- bla ----- bla -----
 If $Font <> "" Then
      $FontMio = Split($Font, ",", "\r\n", True)
  Else
     $FontMio = New String[3]
     $FontMio[0] = "LiberationSerif"
     $FontMio[1] = "0"
     $FontMio[2] = "11"
  Endif
 CrtRiempCellaTab = New RiempiCellaGrid(TabMovv, iRgTabMov, 1, $CrtRiemp)
  TabMovv[iRgTabMov, 2].Alignment = Align.Right
  TabMovv.Font.Name = $FontMio[0]        'Font
  TabMovv.Font.Size = $FontMio[2]           'Size
  TabMovv.Font.bold = $FontMio[1]           'Bold
  TabMovv[iRgTabMov, 2].Text = $CosTot
----- bla ----- bla ----- bla -----
 For i = 0 To 4
    iColorFondo = Val($ColorFondo)
    TabMovv[iRgTabMov, i].Background = iColorFondo
    TabMovv[iRgTabMov, i].Foreground = &H00FFF5EE&     'non ancora inserito nei parametri da passare
  Next
End

Il risultato è quello che si può vedere nell'immagine allegata, cioè il Font passato è stato applicato a tutta la Tableview, mentre il colore di foreground è stato applicato a tutte le righe con background diverso dal crema chiaro, mentre le nuove impostazioni avrebbero dovuto interessare solo l'ultima riga.
 :o  ???  :(


« Ultima modifica: 08 Settembre 2012, 23:18:12 da Picavbg »
:ciao:

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.723
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Agire sul Font e sul Foreground di una riga di Tableview
« Risposta #1 il: 07 Settembre 2012, 16:06:48 »
Non so se ho compreso bene  :-X , però una diversificazione del tipo che segue a me funziona:
Codice: gambas [Seleziona]

Public Sub Form_Open()


  GridView1.Rows.Count = 2
  GridView1.Columns.Count = 2
  
  With GridView1[0, 0]
    .Foreground = Color.Red
    .Font.Name = "sans"
    .Text = "alibaba"
  End With
  
  With GridView1[0, 1]
    .Foreground = Color.Blue
    .Font.Name = "ubuntu"
    .Text = "simbad"
  End With
  
  With GridView1[1, 0]
    .Foreground = Color.Green
    .Font.Name = "symbol"
    .Font.Bold = True
    .Text = "anqropos"
    .Background = Color.DarkBlue
  End With
  
  With GridView1[1, 1]
    .Foreground = &HFFF5EE
    .Font.Name = "liberation mono"
    .Text = "aladino"
    .Background = Color.DarkBlue
  End With

End
« Ultima modifica: 07 Settembre 2012, 16:08:41 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: Agire sul Font e sul Foreground di una riga di Tableview
« Risposta #2 il: 08 Settembre 2012, 23:17:22 »
Tutto risolto. Ho dovuto rivedere in tutti i dettagli il codice che avevo scritto e riportato all'inizio della discussione. Infatti non mi ero accorto che impostavo i parametri di reimpostazione font,background e foreground anche quando non eseguivo la compilazione della riga di totalizzazione. Ora il codice corretto è:
Codice: gambas [Seleziona]

Private Sub CompTabMovv_VoCasPri() 
----- bla ----- bla ----- bla ----- 
Dim $ColorCrt As String
Dim $ColorFondo As String
Dim $FontSize As String
----- bla ----- bla ----- bla ----- 
 $CosTot = "Totali del giorno"
 $ColorFondo = "&H00F0F8FF&"      'Blu alice (celestino chiaro)
 $ColorCrt = "&H00000000&"        'Nero
 $FontSize = "14"
----- bla ----- bla ----- bla ----- 
   For i = iIni To iFin
              If $TabMovim[i, 4] = "---"
                If i > iIni Then
                    VisTabMovTot(fTotEntr, fTotUsc, $ValutaCorr, iRgTabMov, $CosTot, $FontSize, $ColorFondo, $ColorCrt)
                    Inc iRgTabMov
                    fToGeEntr += fTotEntr
                    fToGeUsc += fTotUsc
                    fTotEntr = 0
                    fTotUsc = 0
                    If $TabMovim[i, 1] <> $TabMovim[i - 1, 1] Then
                        $ValutaCorr = CarTabMovCto($TabMovim[i, 1], $TabMovim[i, 0], iRgTabMov)      'Carica In Tabview il Nome del "Conto pricipale di Cassa"
                    Endif
                Else
                  $ValutaCorr = CarTabMovCto($TabMovim[i, 1], $TabMovim[i, 0], iRgTabMov)      'Carica In Tabview il Nome del "Conto pricipale di Cassa"
                  Inc iRgTabMov
                Endif
              Else
                fTotali = CarTabMovSotCto($TabMovim[i, 4], $TabMovim[i, 5], $TabMovim[i, 6], fTotEntr, fTotUsc, $ValutaCorr, iRgTabMov)        'Carica in TabView il "Nome Voce di Sottoconto" di Cassa" e del corrispondente movimento di dettaglio
                fTotEntr = fTotali[0]
                fTotUsc = fTotali[1]
                Inc iRgTabMov
              Endif
            Next
            VisTabMovTot(fTotEntr, fTotUsc, $ValutaCorr, iRgTabMov, $CosTot, $FontSize, $ColorFondo, $ColorCrt)
            Inc iRgTabMov
            fTotEntr += fToGeEntr     ' per l'utilizzo in VisTabMovTot
            fTotUsc += fToGeUsc       ' per l'utilizzo in VisTabMovTot
  End Select
  If Not bSwErro
    $FontSize = "14"
    $ColorFondo = "&H00343A90&"       'Blu notte
    $ColorCrt = "&H00FFF5EE&"     'Conchiglia
    VisTabMovTot(fTotEntr, fTotUsc, $ValutaCorr, iRgTabMov, "Totali complessivi", $FontSize, $ColorFondo, $ColorCrt)
    TestaTabMovv.Visible = True
    GriTabMovv.Visible = True
    PulsReimposta.Visible = True
  Endif
End

Private Sub VisTabMovTot(fTotEntr As Float, fTotUsc As Float, $ValutaCorr As String, iRgTabMov As Integer, $CosTot As String, $FontSize As String, $ColorFondo As String, $ColorCrt As String)
----- bla ----- bla ----- bla ----- 
Dim iColorCrt As Integer
Dim iColorFondo As Integer
----- bla ----- bla ----- bla ----- 
 GriTabMovv.Font.Size = $FontSize
  GriTabMovv.Font.Bold = True
  CrtRiempCellaTab = New RiempiCellaGrid(GriTabMovv, iRgTabMov, 1, $CrtRiemp)
  GriTabMovv[iRgTabMov, 2].Alignment = Align.Right
  GriTabMovv[iRgTabMov, 2].Text = $CosTot
  $StriMia = CFloat(fTotEntr)
  $StriMia = Replace$($StriMia, ".", ",")   'restituisce la virgola necessaria alla funzione  "EditImp"
  EdtImp = New EditImp($StriMia, $ValutaCorr)
  GriTabMovv[iRgTabMov, 3].Text = EdtImp.$_Imp
  $StriMia = CFloat(fTotUsc)
  $StriMia = Replace$($StriMia, ".", ",")   'restituisce la virgola necessaria alla funzione  "EditImp"
  EdtImp = New EditImp($StriMia, $ValutaCorr)
  GriTabMovv[iRgTabMov, 4].Text = EdtImp.$_Imp
  For i = 0 To 4
    iColorFondo = Val($ColorFondo)
    GriTabMovv[iRgTabMov, i].Background = iColorFondo
    iColorCrt = Val($ColorCrt)
    GriTabMovv[iRgTabMov, i].Foreground = iColorCrt
  Next
End


Naturalmente le righe di dettaglio, rispondenti alle impostazioni di default, riportano la reimpostazione parametrica standard:

Codice: [Seleziona]
Private Function CarTabMovSotCto($Causale As String, $Dare As String, $Avere As String, fTotDa As Float, fTotAve As Float, $ValutaCorr As String, iRgTabMov As Integer) As Float[]       'Carica in TabView il "Nome Voce di Sottoconto" di Cassa" e del corrispondente movimento di dettaglio
----- bla ----- bla ----- bla ----- 
  GriTabMovv.Font.Size = "12"
  GriTabMovv.Font.Bold = False
----- bla ----- bla ----- bla ----- 
END

Private Function CarTabMovCto(iData As Integer, $NomeVoce As String, iRgTabMov As Integer) As String       'Carica in TabView tutte la 1^ voce contabile Principale di Cassa
----- bla ----- bla ----- bla ----- 
  GriTabMovv.Font.Size = "12"
  GriTabMovv.Font.Bold = False
----- bla ----- bla ----- bla ----- 
END
Il risultato è visibile nell'immagine allegata.
 ;D  :ciao:
:ciao: