Não consigo fazer (Desafio)
[b:60adc8791d]Estou até com vergonha de postar isso.. mas preciso terminar logo!!
Na minha tela eu tenho varios CheckBox
cada um com um número em hexadecial
[ ] 00000001
[ ] 00000002
[ ] 00000004
[ ] 00000008
[ ] 00000010
[ ] 00000020
[ ] 00000040
[ ] 00000080
[ ] 00000100
[ ] 00000200
[ ] 00000400
[ ] 00000800
[ ] 00001000
[ ] 00004000
[ ] 00008000
[ ] 00010000
[ ] 00020000
[ ] 00040000
[ ] 00080000
[ ] 00200000
[ ] 00400000
[ ] 00800000
[ ] 01000000
[ ] 02000000
[ ] FFFFFFFF
Eu preciso fazer teste de combinação de todas para poder marca-los
Exemplo:
Em um edit eu tenho o número: A
Para fazer o número A eu teria que somar os números 8 e 2
Ou seja eu teria que marcar os CheckBox dos números 8 e 2
Tem como eu fazer um código para verificar todas as combinações sem ter q faze-las uma por uma??
Em outras palavras: Eu preciso marcar os CheckBox equivalentes a cada número digitado em um Edit em tempo de execução!
Desde já agradeço a ajuda..
Grande abraçoO[/b:60adc8791d]
Na minha tela eu tenho varios CheckBox
cada um com um número em hexadecial
[ ] 00000001
[ ] 00000002
[ ] 00000004
[ ] 00000008
[ ] 00000010
[ ] 00000020
[ ] 00000040
[ ] 00000080
[ ] 00000100
[ ] 00000200
[ ] 00000400
[ ] 00000800
[ ] 00001000
[ ] 00004000
[ ] 00008000
[ ] 00010000
[ ] 00020000
[ ] 00040000
[ ] 00080000
[ ] 00200000
[ ] 00400000
[ ] 00800000
[ ] 01000000
[ ] 02000000
[ ] FFFFFFFF
Eu preciso fazer teste de combinação de todas para poder marca-los
Exemplo:
Em um edit eu tenho o número: A
Para fazer o número A eu teria que somar os números 8 e 2
Ou seja eu teria que marcar os CheckBox dos números 8 e 2
Tem como eu fazer um código para verificar todas as combinações sem ter q faze-las uma por uma??
Em outras palavras: Eu preciso marcar os CheckBox equivalentes a cada número digitado em um Edit em tempo de execução!
Desde já agradeço a ajuda..
Grande abraçoO[/b:60adc8791d]
Mortify
Curtidas 0
Respostas
Woinch
14/01/2009
Você já tentou trabalhar com números decimais (que fica muito mais fácil) e apenas mostrar a combinação em hexadecimal?
Talvez você possa fazer uma rotina para que retorne primeiro num array os valores (em decimal) que você precisa marcar. Depois basta fazer uma rotina para percorrer todos os componentes da tela do tipo TCheckBox e marcá-los se o valor estiver no array. Sugiro utilizar a propriedade Tag dos Checkboxes para guardar o valor correspondente ao mesmo em decimal.
Talvez você possa fazer uma rotina para que retorne primeiro num array os valores (em decimal) que você precisa marcar. Depois basta fazer uma rotina para percorrer todos os componentes da tela do tipo TCheckBox e marcá-los se o valor estiver no array. Sugiro utilizar a propriedade Tag dos Checkboxes para guardar o valor correspondente ao mesmo em decimal.
GOSTEI 0
Mortify
14/01/2009
[b:960cfc87e6]mesmo usando em decimal eu n consegui criar um código pra pode marcar todos os checkbox =[
Alguem me ajuda
PleaseE[/b:960cfc87e6]
Alguem me ajuda
PleaseE[/b:960cfc87e6]
GOSTEI 0
Fórum Vini
14/01/2009
Os valores dos checkboxes são sempre esses (potências de 2)?
Se for, é só decompor o número em binário... cada checkbox é um dígito
Se for, é só decompor o número em binário... cada checkbox é um dígito
GOSTEI 0
Rodc
14/01/2009
Você precisar testar os bits do valor e marcar os checkbox correspondentes a cada bit. Por exemplo: A em binário é 1010. Como binário se lê da direita para esquerda, você precisa marcar o segundo e o quarto checkbox, que é o 2 e o 8, respectivamente.
Agora, para fazer a validação de um bit em Delphi eu não tenho certeza de como é. Em C++ é assim:
CheckBox1->Checked = (Valor & 0x01) != 0;
CheckBox2->Checked = (Valor & 0x02) != 0;
CheckBox3->Checked = (Valor & 0x04) != 0;
CheckBox4->Checked = (Valor & 0x08) != 0;
CheckBox5->Checked = (Valor & 0x10) != 0;
CheckBox6->Checked = (Valor & 0x20) != 0;
CheckBox7->Checked = (Valor & 0x40) != 0;
CheckBox8->Checked = (Valor & 0x80) != 0;
Em Delphi acho que é assim:
CheckBox1.Checked := (Valor and 0x01) != 0;
Agora, para fazer a validação de um bit em Delphi eu não tenho certeza de como é. Em C++ é assim:
CheckBox1->Checked = (Valor & 0x01) != 0;
CheckBox2->Checked = (Valor & 0x02) != 0;
CheckBox3->Checked = (Valor & 0x04) != 0;
CheckBox4->Checked = (Valor & 0x08) != 0;
CheckBox5->Checked = (Valor & 0x10) != 0;
CheckBox6->Checked = (Valor & 0x20) != 0;
CheckBox7->Checked = (Valor & 0x40) != 0;
CheckBox8->Checked = (Valor & 0x80) != 0;
Em Delphi acho que é assim:
CheckBox1.Checked := (Valor and 0x01) != 0;
GOSTEI 0
Mortify
14/01/2009
[b:486da6346c]Valeu a todos q vieram aki me da essa força
.Vini. tu é um gênio muleke
eu devia ter pensado nisso antes
Resolveu meu problema
Abraço para todos[/b:486da6346c]
.Vini. tu é um gênio muleke
eu devia ter pensado nisso antes
Resolveu meu problema
Abraço para todos[/b:486da6346c]
GOSTEI 0