Não consigo fazer (Desafio)

Delphi

14/01/2009

[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]


Mortify

Mortify

Curtidas 0

Respostas

Woinch

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.


GOSTEI 0
Mortify

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]


GOSTEI 0
Fórum Vini

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


GOSTEI 0
Rodc

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;


GOSTEI 0
Mortify

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]


GOSTEI 0
POSTAR