Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-04-2008
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Unhappy ¿¿ 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 !!
Responder Con Cita
  #2  
Antiguo 20-04-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 20-04-2008
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
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 !!
Responder Con Cita
  #4  
Antiguo 20-04-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 20-04-2008
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
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 !
Responder Con Cita
  #6  
Antiguo 20-04-2008
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Gracias amigo me resolviste la vida jajaja 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.
Responder Con Cita
  #7  
Antiguo 20-04-2008
gaston260 gaston260 is offline
Miembro
 
Registrado: ene 2008
Posts: 169
Poder: 17
gaston260 Va por buen camino
Gracias amigo me resolviste la vida jajaja 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 ?
Responder Con Cita
  #8  
Antiguo 21-04-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
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
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
usar un procedure en varios formularios adonai Varios 21 30-03-2007 18:42:34
marcar varios checkbox halizia HTML, Javascript y otros 3 18-01-2007 15:48:44
Como se inserta el valor de un checkbox? Ivan_25 C++ Builder 4 04-11-2005 12:02:51
Campo calculado como checkbox de DBGrid javiermorales OOP 1 10-12-2004 12:50:24
Como relacionar un checkbox a un campo de tipo smallint yeseniahdz Varios 2 27-05-2004 02:59:52


La franja horaria es GMT +2. Ahora son las 13:15:55.


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
Copyright 1996-2007 Club Delphi