+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 21

Codice colore RGB

  1. #11
    pierovb non  in linea Scolaretto
    Post
    356
    Like Inviati  
    0
    Like Ricevuti  
    0
    Purtroppo ti mancano le basi (esadecimale, byte, long ...)

    Pensavo che la rappresentazione esadecimale e la composizione dei colori RGB fosse nota a tutti (a parte che basta una piccolissima ricerca su Internet per avere tutte le spiegazioni del caso). E poi PieroVB usa da anni VB6, non pensavo fosse ancora un mistero il prefisso &H per le costanti esadecimali ...
    Come hai ben rimarcato mi mancano (sfuggono) tante cose. Il mio ed stato uno studio un p supeficiale
    di VB6. In pratica ho sempre approfondito, per quel che riuscivo, con un approccio sicuramente sbagliato, solo, i problemi che si presentavano al momento, spesso risolti con i vostri importanti consigli.
    Conosco la composizione dei colori RGB e la rappresentazione esadecimale.
    Mi sfuggiva quel &H 0 &H00 prima del valore esadecimale in VB6.
    Non ho alcun codice da mostrare. Era una semplice curiosit. Il problema dovuto, come hai intuito, ad una delle tante "falle" della mia modesta conoscenza di VB6.
    Grazie al vostro intervento, avendo un punto di partenza, approfondir l'argomento.

  2. #12
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,491
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    &H significa soltanto "esadecimale" niente di misterioso.

    E 00 solo per fare in modo che il valore visualizzato sia a 4 byte (come un long), ma senza altri particolari significati.

    E' come con i numeri normali ... quando scrivi 1234 (in decimale) puoi anche scrivere 01234 oppure 001234 e non cambia nulla.
    ℹ️ Leggi di pi su AntonioG ...

  3. #13
    pierovb non  in linea Scolaretto
    Post
    356
    Like Inviati  
    0
    Like Ricevuti  
    0
    Perfetto.
    Grazie.

  4. #14
    pierovb non  in linea Scolaretto
    Post
    356
    Like Inviati  
    0
    Like Ricevuti  
    0
    Spero di non essere frainteso, ma, simpaticamente, come diceva Albertone " mi hai provocato........"

    girando su internet ho visitato una pagina dove cliccando su una casella colorata oltre al nome, calcolava il codice RGB e HEX.

    Quindi ho scaricato il file Excel contenete nome e codici e l'ho importato in una tabella Access e......
    studiando un pochino ho sviluppato un programmino.
    ti allego il codice :

    Sub Colori()
    Dim i As Integer
    Set rs = cn.Execute("SELECT * FROM Colori Order By Id")
    
    While Not rs.EOF
     
        For i = 0 To rs.RecordCount - 1
              btnColori(i).BackColor = RGB(Val(Split(rs!RGB, ",")(0)), Val(Split(rs!RGB, ",")(1)), Val(Split(rs!RGB, ",")(2)))
        rs.MoveNext
        Next i
    Wend
      
    rs.Close: Set rs = Nothing
    End Sub
    
    
    Private Sub Form_Load()
    Colori
    End Sub
    
    
    Private Sub btnColori_Click(Index As Integer)
    Dim x As Integer
    
    x = btnColori(Index).Index + 1 ' l'index dei button parte da 0
    
    Set rs = cn.Execute("SELECT * FROM Colori WHERE Id =" & x)
    
    txtName.Text = UCase(rs!Nome)
    
    txtRGB(0).Text = Val(Split(rs!RGB, ",")(0))
    txtRGB(1).Text = Val(Split(rs!RGB, ",")(1))
    txtRGB(2).Text = Val(Split(rs!RGB, ",")(2))
          
    txtHex(0).Text = Right$("00" & Hex(txtRGB(0).Text), 2)
    txtHex(1).Text = Right$("00" & Hex(txtRGB(1).Text), 2)
    txtHex(2).Text = Right$("00" & Hex(txtRGB(2).Text), 2)
    
    txtnColore.Text = CStr(RGB(Val(txtRGB(0).Text), Val(txtRGB(1).Text), Val(txtRGB(2).Text)))
    
    txtEsadecimale.Text = "#" & txtHex(0).Text & txtHex(1).Text & txtHex(2).Text
    
    txtEsaVB.Text = "&H" & txtHex(2).Text & txtHex(1).Text & txtHex(0).Text
    
    rs.Close: Set rs = Nothing
    End Sub
    
    Il tutto sempre con gratitudine nei confronti del Forum e particolarmente tuoi, di Brontolo e di Gibra.
    Quel poco che riesco a fare con VB6 lo devo in gran parte a voi tutti.
    Ancora Grazie

  5. #15
    L'avatar di Max.Riservo
    Max.Riservo ora  in linea Scribacchino
    Post
    745
    Like Inviati  
    1
    Like Ricevuti  
    2
    Diciamo che meglio aggiungere qualche concetto di programmazione 'difensiva'.
    Se non l'hai fatto a livello di form/modulo bene dichiarare in ogni sub/function il tipo Rs (ADODB.recordeset o DAO.Recordset)
    E' bene anche non eseguire codice in caso di mancanza di record.

    Quindi questi sono i suggerimenti :
    Quote Originariamente inviato da pierovb Visualizza il messaggio

    
    Option Explicit (a livello di form e di modulo - su tutti i form e moduli !)
    
    Sub Colori()
    Dim rs as adodb.recordset (oppure DAO.recordset)
    Dim i As Integer
    ...
    End Sub
    
    
    Private Sub Form_Load()
    Call Colori
    End Sub
    
    
    Private Sub btnColori_Click(Index As Integer)
    Dim x As Integer
    Dim rs as adodb.recordset (oppure DAO.recordset)
    
    x = btnColori(Index).Index + 1 ' l'index dei button parte da 0
    
    Set rs = cn.Execute("SELECT * FROM Colori WHERE Id =" & x)
    
    if not rs.eof then
        txtName.Text = UCase(rs!Nome)
        ....
    
        txtEsaVB.Text = "&H" & txtHex(2).Text & txtHex(1).Text & txtHex(0).Text
    endif
    
    rs.Close: Set rs = Nothing
    End Sub
    
    Esistono ancora altre considerazioni da fare (conversioni di tipo, possibili valori fuori range) ...

  6. #16
    pierovb non  in linea Scolaretto
    Post
    356
    Like Inviati  
    0
    Like Ricevuti  
    0
    La connessione tutto il resto
    su modulo.

  7. #17
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,491
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Vedo un ciclo while con un for all'interno che, insieme, non hanno molto senso... tanti split ripetuti quando ne basta uno... quel simbolo # che usato come prefisso per gli esadecimali solo con HTML...
    ℹ️ Leggi di pi su AntonioG ...

  8. #18
    pierovb non  in linea Scolaretto
    Post
    356
    Like Inviati  
    0
    Like Ricevuti  
    0
    Precisando che ho sviluppato questo progetto solo a scopo puramente didattico
    comincio dalla fine
    quel simbolo # che usato come prefisso per gli esadecimali solo con HTML
    l'ho inserito per assegnarlo solo alla text Esadecimale
    txtEsadecimale.Text = "#" & txtHEX(0).Text & txtHEX(1).Text & txtHEX(2).Text
    
    e differenziarlo da quello esadecimale di VB6 che non RGB ma BGR

    txtEsaVB.Text = "&H" & txtHEX(2).Text & txtHEX(1).Text & txtHEX(0).Text
    
    che assegno alla text Esadecimale VB.

    Vedo un ciclo while con un for all'interno che, insieme, non hanno molto senso
    Ho fatto cos per associare ad ogni index dei button l'id del record corrispondente

    While Not rs.EOF
     
        For i = 0 To rs.RecordCount - 1
              btnColori(i).BackColor = RGB(Val(Split(rs!RGB, ",")(0)), Val(Split(rs!RGB, ",")(1)), Val(Split(rs!RGB, ",")(2)))
              
        rs.MoveNext
        
        Next i
    Wend
    
    c' un'altra modalit ? Quando capita faccio sempre cos, funziona, forse c' un metodo pi funzionale ?

    tanti split ripetuti quando ne basta uno
    Vero. Ho fatto di fretta e non sono riuscito a concatenare bene la stringa. Vedr con calma di usare un solo Split.

  9. #19
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,491
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Per il ciclo doppio quello che ti voglio dire che sbagliato. Pensa al suo funzionanento
    ℹ️ Leggi di pi su AntonioG ...

  10. #20
    pierovb non  in linea Scolaretto
    Post
    356
    Like Inviati  
    0
    Like Ricevuti  
    0
    intendi cos

    Sub Colori()
    Dim i As Integer
    Set rs = cn.Execute("SELECT * FROM Colori Order By Id")
    
    While Not rs.EOF
     
        
          btnColori(Index).BackColor = RGB(Val(Split(rs!RGB, ",")(0)), Val(Split(rs!RGB, ",")(1)), Val(Split(rs!RGB, ",")(2)))
            rs.MoveNext
              Index = Index + 1
        
    Wend
      
    rs.Close: Set rs = Nothing
    
    End Sub
    
    vero ?

+ Rispondi al messaggio
Pagina 2 di 3 primaprima 123 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 4
    Ultimo Post: 28-08-2015, 15:14
  2. cambio colore riga a rottura di codice
    Da superketto nel forum Microsoft Excel
    Risposte: 2
    Ultimo Post: 26-03-2015, 21:32
  3. Associare colore textbox a colore cella excel
    Da terrasamba nel forum Microsoft Excel
    Risposte: 2
    Ultimo Post: 21-02-2013, 18:58
  4. Codice colore "numerico" e non esadecimale
    Da The Gang nel forum Microsoft Access
    Risposte: 4
    Ultimo Post: 20-04-2012, 07:53
  5. [VB.NET] Attribuire colore da codice
    Da marco.santilli nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 21-04-2008, 18:59