Jump to content

Preencher Combobox com cores do sistema??


duduml
 Share

Recommended Posts

Bom dia pessoal!

Bem, a questão de hoje é "simples" (se fosse cá não estava 👍 )...

O que pretendo é preencher uma combobox com as cores que o vb.net disponibiliza...ou seja, se escrevermos backcolor.(aparecem as cores), eu quero que essas cores sejam adicionadas a combobox...

Eu já pesquisei na net, mas o que encontro é inserir 2 ou três cores dizendo explicitamente quais...:S

NOTA: eu quero que apareçam o nome das cores...(para já 😛 )

Obrigado!

Cumprimentos!

"use windows, você merece!"

Link to comment
Share on other sites

  • Replies 41
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

O que queria era preencher com um ciclo a combobox, com as cores do sistema...depois ao ser seleccionado cada um tenho um exemplo de como ficaria...

essa ideia do coleection é boa, mas la está, não queria preencher a unha.... 👍

CUMPS

"use windows, você merece!"

Link to comment
Share on other sites

Fiz te um exemplo para veres numa listview.

Adiciona uma listview, com view "details", a um form vazio e mete isto no form load:

        ListView1.Columns.Add("Cores", ListView1.Width - 35)

       Dim NomesCor As String() = [Enum].GetNames(GetType(KnownColor))

       For Each NomeCor As String In NomesCor
           Dim LVI As New ListViewItem
           LVI.Text = NomeCor

           Dim CorActual As Color = Color.FromName(NomeCor)
           Dim CorInversa As Color = Color.FromArgb(255 - CorActual.R, 255 - CorActual.G, 255 - CorActual.B)

           LVI.BackColor = CorActual
           LVI.ForeColor = CorInversa
           ListView1.Items.Add(LVI)
       Next

Se tiveres dúvida em alguma linha, não estou cá para outra coisa 😉

Antecipando qualquer coisa, calculo a cor inversa apenas para garantir que a cor do texto que tem os nomes não fica igual à cor de fundo, e consequentemente não se ver.

(esse cálculo não se safa do 255-128, e caso exista alguma cor 128,128,128 o texto fica da mesma cor)

EDIT: É fácil de adaptares isso a uma combobox. Foca-te naquilo que o código faz.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

Bem, já cá estou... :fartnew2:

a dúvida é na primeira linha

cmb_fundo.Items.Add("Cores", cmb_fundo.Width - 35) 'Como coloco aqui????

       Dim NomesCor As String() = [Enum].GetNames(GetType(KnownColor))

       For Each NomeCor As String In NomesCor
           Dim LVI As New ListViewItem
           LVI.Text = NomeCor

           Dim CorActual As Color = Color.FromName(NomeCor)
           Dim CorInversa As Color = Color.FromArgb(255 - CorActual.R, 255 - CorActual.G, 255 - CorActual.B)

           LVI.BackColor = CorActual
           LVI.ForeColor = CorInversa
           cmb_fu

O resto, percebo mais o menos...se tiver dúvidas, já te venho chatiar... 😉😛

Obrigado =D

CUMPS

"use windows, você merece!"

Link to comment
Share on other sites

, cmb_fundo.Width - 35 é um parâmetro da coluna da ListView.

Para a combobox esquece essa linha.

E podes também esquecer o back e forecolor, pelo menos de maniera linear.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

já vi que vou ter de inventar....

adicionei duas colunas em vez de uma....mas...Como faço para que adicionar o nome, e a cor em separado?? e depois, como faço para passar só o valor da cor ao seleccionar??

CUMPS

"use windows, você merece!"

Link to comment
Share on other sites

Não estou a perceber o que pretendes.

A linha de código que lá tens não faz sentido.

Explica-te melhor.

Já agora, não faças "posts" duplos.

O que disseste no segundo "post" podia ser perfeitamente complementado no primeiro.

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

é assim, pretendo dar ao utilizador a opção de definir o seu ambiente gráfico, assim, o que pretende é que ele escolha as cores, e o nome dessa cor seja passado para uma variável (depois tenho em todos os forms definido de maneira que a alteração do nome da cor altera a cor)

por exemplo, se escolher vermelho, a variável fundo fica com o valor red, e depois tenho isto em todos os forms;

me.backcolor = fundo

Só que agora percebi todas as linhas de código que me deste, e a string passada que define a cor, não serve para o que quero.. 👍

Tens alguma sugestão??

o meu form:

1072wkl-png-46bc5e75260fdcde843fb1d95a0b

PS: não ligues à primeira listview, estive a inventar... 🙂

e desculpa, agora já sei que devo editar os post para não haver "duplicados" 😛

CUMPS

"use windows, você merece!"

Link to comment
Share on other sites

Olha com olhos de ver para o código que te dei.

Como é que eu transformo o nome da cor em cor para a variável CorActual?

Me.BackColor = Color.FromName(fundo)

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Link to comment
Share on other sites

pois,  ? já vi...  :dontgetit:

Obrigado!

Vou ver se me safo agora...  ?

mas já experimentei, e não.. deu 😛

É mesmo com o slectedItem??

CUMPS

EDIT:

Ele passa-me as cores todas...:S

tenho isto (mas já tentei de 1001 maneiras):

 Private Sub cmb_fundo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_fundo.SelectedIndexChanged
        fundos = cmb_fundo.BackColor
        cores()
    End Sub

O erro é aqui:

 ex_fundo.BackColor = Color.FromName(fundos) 

Cumprimentos

"use windows, você merece!"

Link to comment
Share on other sites

é assim, elas são exportadas...mas faz uma especie de "parse" a cor para transforma-la em código....mas ao tentar converter esse código para os nomes propriamente ditos, sou mal sucedido..:S 😉

Mas não há nada como experimentares... XD se me fizesses esse favor, ficar-te-ia grato! =D

Cumprimentos

"use windows, você merece!"

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.