Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda con Checkbox (https://www.clubdelphi.com/foros/showthread.php?t=54486)

angelp4492 20-03-2008 11:28:39

Duda con Checkbox
 
Hola como estan ,
Pues veran tengo una duda, en la base de datos mysql tengo guadado unos valores en hexadecimal de 8 bit o desde 00- a FF, pues bien mi duda es como podria hacer lo siguiente.
1 leer valor de la base de datos (esto esta echo)
2 asignarle el valor leido a los ckeckbox me explico:
supongamos que hemos leido el valor &H02
esto en binario es 0000 0010
3 pues bien ahora tengo 8 checkbox y quiero pasar ese valo binario a ellos
marcando el checkbox si su valor es uno.

0------0------- 0----------0----------0--------- 0 ------1------ 0
ck8=0 ck7=0 ck6=0 ck5=0 ck4=0 ck3=0 ck2=1 ck=0

ck=0 ----ckeckbox.ckecked=false
ck=1-----checkbox.ckeked=true.

alguna idea gracias.

gluglu 20-03-2008 11:37:39

Pues entiendo que tu mismo estás dando la solución.

La lógica la tendrás que programar tu, ya que evidentemente no hay ninguna función que te haga directamente lo que pides.

Tendrás que convertir ese valor leido a binario, y analizar las posiciones, y en consonancia marcar o no los checkbox's correspondientes.

:rolleyes:

keyboy 20-03-2008 12:36:02

Una forma sencilla de pasar los valores podría ser colocando todos los CheckBox en un panel, CheckBoxes, que no contenga nada más. La rutina sería así:

Código Delphi [-]
var
  I: Integer;

begin
  for I := 0 to CheckBoxes.ControlCount - 1 do
    (CheckBoxes.Controls[i] as TCheckBox).Checked := (Flags and (1 shl I) <> 0);
end;

donde Flags sería el valor leído de la base de datos.

Bye

eduarcol 20-03-2008 13:54:32

Hola, disculpa pero debo remitirte a la Guia de Estilo, acabo de responder otro hilo tuyo con la misma duda y aqui abres otro :confused:

dec 20-03-2008 14:04:08

Hola,

Tienes razón eduarcol. No dupliques hilos angelp4492, que ya ves que pasan estas cosas, por ejemplo.

angelp4492 20-03-2008 15:01:49

Perdon no me di cuenta el otro hilo se quedo a medias y no se como se repito mil disculpas

Caro 20-03-2008 15:56:20

Hola angelp4492, yo utilizaria un CheckListBox para poder recorrer mas facilmente.

Función que convierte de hexadecimal a binario

Código Delphi [-]
function TForm1.HextoBinario(Hexa:string):string;
const
  Binario: array [0..15] of string =  ('0000','0001','0010','0011','0100','0101','0110','0111',
           '1000','1001','1010','1011','1100','1101','1110','1111');
var
 i : integer;
 CadBinario : String;
begin
 CadBinario := '';

 for i:=1 to Length(Hexa) do
  CadBinario := CadBinario + Binario[StrToInt('$'+Hexa[i])];

 Result:=CadBinario;
end;

asignar el valor leido a los checkbox del CheckListBox

Código Delphi [-]
var
 i : Integer;
 binario : String;
begin

 binario := HextoBinario(ValorLeido);

 for i:=0 to CheckListBox1.Count-1 do
   if binario[i+1]='0' then
     CheckListBox1.Checked[i] := False
   else
     CheckListBox1.Checked[i] := True;
end;

Saluditos


La franja horaria es GMT +2. Ahora son las 06:18:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi