Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿¿ como usar el tag con varios checkbox ?? (https://www.clubdelphi.com/foros/showthread.php?t=55557)

gaston260 20-04-2008 20:54:56

¿¿ como usar el tag con varios checkbox ??
 
:)

Hola amigos del club , mi pregunta es la siguiente , ¿ se puede conseguir manejar una cantidad x de checkbox al mismo tiempo ?? tal vez mi pregunta no se entienda correctamente pero tengo un ejemplo de lo que quiero hacer , miren esto

var
salida : integer ( me gustaria que sea de tipo hexadecimal para poder manejar el tag de los checbox que en el ejemplo les voy a mostrar , pero no se como declararla)

Begin

If checkbox1.Checked Then

Salida := 1;

If checkbox1.Checked and checkbox2.Checked and checkbox3.Checked and checkbox4.Checked and checkbox5.Checked and checkbox6.Checked and checkbox7.Checked and checkbox8.Checked Then

Salida := 255;

If (checkbox1.Checked or checkbox2.Checked or checkbox3.Checked or checkbox4.Checked or checkbox5.Checked or checkbox6.Checked or checkbox7.Checked or checkbox8.Checked) = False Then

Salida := 0

End;

Pero me gustaria no escribir tanto codigo e intente escribir esto

Salida := (checkbox1.Tag or checkbox2.Tag or checkbox3.Tag or checkbox4.Tag or checkbox5.Tag or checkbox6.Tag or checkbox7.Tag or checkbox8.Tag)

Obviamente no funciono !! como puedo modificar el codigo anterior y escribir la menos cantidad de codigo posible ??

Este club ya me a ayudado antes haci que si no obtengo ninguna respuesta lo mismo les doy las gracias !! :)

marcoszorrilla 20-04-2008 21:41:21

Como los número hexadecimales van del 0 a la F es decir del 0 al 15, no entiendo muy bien el planteamiento podrías explicar un poco más lo que quieres hacer?

Porque 8 = 255 sería un número binario compuesto de 8 unos.

Un Saludo.

gaston260 20-04-2008 21:51:54

perdon marcoszorrilla ! es que quiero sacar los datos por el puerto paralelo y en un comienzo la variable salida fue declarada como integer , con lo cual pude controlar el puerto con el codigo que esta en la condicion if , ahora quiero optimizar el codigo y quise hacer algo haci

salida := 0;

salida := checkbox1.tag or checkbox2.tag or checkbox3.tag ...

y quice simular esto
salida := 1 or 1 or 0

suponiendo que el primer tag fuera 1 , y el segundo tag 10 , y el tercero 11 ,
entonces or deveria sumar el tag de los checkbox o no , si estos estan en checked ?

gracias amigo por tu interes !!

marcoszorrilla 20-04-2008 22:11:59

Aunque veo más o menos lo que quieres no comprendo la mecánica que quieres seguir, te pongo un ejemplo espero que lo puedas adaptar a tu caso, en este ejemplo he colocado 3 Casillas de verificación y le he puesto en su valor Tag a la 1, 0 a la segunda 10 y a la tercera 20.

Según las que marque me suma 0 10 ó 30.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
s:Integer;
begin
s:=0;
 for i:=0 to form1.ComponentCount -1 do
 begin
     If (Components[i] Is TCheckBox) Then
      If (Components[i] As TCheckBox).Checked = True Then
      s:=s+(Components[i] As TCheckBox).Tag;
 end;

 ShowMessage(intToStr(s));
end;

Un Saludo.

gaston260 20-04-2008 22:38:29

Amigo la mecanica es la siguiente :

tengo un procedure con un timer dentro del procedure tengo varios checkbox divididos de a ocho
y los manejo de esta forma


x1 x2 x3 x4 x5 x6 x7 x8
-------------------------------------------
x9 x10 x11 x12 x13 x14 x15 x16
-------------------------------------------

suponiendo que cada x es un checkbox , con cada grupo de ocho checkbox manejo la salida del puerto y por cada envio del timer me devulve un numero , suponamos que me fijo en el primer grupo de checkbox que va desde el checkbox1 hasta el checkbox8 , entonces la variable salida se carga con un valor que va desde 0 hasta 255 deacuerdo a cuantos checkbox estan en checked , y haci con los check que van desde el 9 hasta el 16 , es un programita muy tonto pero quiero escrivir poco codigo , entonces voy a provar el codigo que me enviaste , gracias !! si no puedo reutilizar el codigo te vulvo a escribir amigo !

gaston260 20-04-2008 22:57:52

Gracias amigo me resolviste la vida jajaja:p muchas gracias ! hace muchos meses que pienso como hacer esto y no podia dar con la respuesta , incluso vi algo de concatenacion que esta en otro hilo en este foro y creo que supiste resolver con lo minimo de informacion algo que me costo explicarte , incluso nunca me contestaste mal , como he visto en algunos hilos , y permiteme desirte que ¡¡ tu eres el numero uno !! , ah casi me olvido , en los tag necesite poner el numero 1 en el primer check 2 en el segundo 4 en el tercero 8 en el cuarto y haci hasta llegar al numero que me interesa.

gaston260 20-04-2008 22:59:39

Gracias amigo me resolviste la vida jajaja:p muchas gracias ! hace muchos meses que pienso como hacer esto y no podia dar con la respuesta , incluso vi algo de concatenacion que esta en otro hilo en este foro y creo que supiste resolver con lo minimo de informacion algo que me costo explicarte , incluso nunca me contestaste mal , como he visto en algunos hilos , y permiteme desirte que ¡¡ tu eres el numero uno !! , ah casi me olvido , en los tag necesite poner el numero 1 en el primer check 2 en el segundo 4 en el tercero 8 en el cuarto y haci hasta llegar al numero que me interesa.

solo dos preguntas mas como funciona tu codigo ? y como ago para escribir el codigo de delphi y que se vea higual en este hilo ?

Caro 21-04-2008 06:19:02

Hola gaston260, dentro de Component se encuentra la lista de componentes de un propietario en tu caso tu formulario, donde estos componentes pueden ser componentes visuales y no visuales. Pero también puedes utilizar la propiedad Controls de dicho formulario, aquí solo se encuentra la lista de los componentes Visuales.

Sobre esta pregunta "como ago para escribir el codigo de delphi y que se vea higual en este hilo", supongo que te refieres a que el código que quieres publicar se vea de la misma forma que marcos te lo puesto, solo tienes que encerar tu codigo con las etiquetas [delphi] codigo [ /delphi], sin el espacio.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
 i:Integer;
 s:Integer;
begin
 s:=0; 
 for i:=0 to form1.ComponentCount -1 do //ComponentCount-> cantidad de componentes del formulario begin
     If (Components[i] Is TCheckBox) Then //Preguntamos si el componente en esa posición es un CheckBox
      If (Components[i] As TCheckBox).Checked = True Then //Preguntamos si ese CheckBox tiene su propiedad Checked en True, si es asi sumamos
      s:=s+(Components[i] As TCheckBox).Tag;
 end;
 ShowMessage(intToStr(s));
end;

Saluditos


La franja horaria es GMT +2. Ahora son las 00:40:37.

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