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 12-04-2012
GonzaloDias GonzaloDias is offline
Miembro
NULL
 
Registrado: ene 2012
Posts: 21
Poder: 0
GonzaloDias Va por buen camino
validar checkbox en un FOR

Hola amigos del foro,
Bueno mi problema es que quiero validar varios checkbox dentro de un FOR, mi duda es si es posible que en vez de que se lea checkbox1.checked se pudiera leer como checkbox[i].checked, por ejemplo:
Código Delphi [-]
for i:=1 to 10 do
begin

  total:=a*b;
    if total >10 then
   checkbox[i].checked = false;
end;

y asi ir validando los checkbox, les comento que tengo 10 checkbox pero antes al iniciar el form donde se encuentran estos checkbox lo squiero validar habilitandolos y deshabilitandolos y para no hacer varios if, se me ocurrio realizar un FOR es decir un for q valla de 1 a 10, el tema es ver si se puede de esta manera o cual sugieren? se que ahi varias maneras pero esta no se si es posible.
Muchas Gracias amigos.
Responder Con Cita
  #2  
Antiguo 12-04-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Podrías hacer algo como:

Código Delphi [-]
for I := 0 to ControlCount -1 do
  if Controls[i] is TCheckBox then
    TCheckBox(Controls[i]).Checked := true;

// Saludos
Responder Con Cita
  #3  
Antiguo 12-04-2012
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
Yo estaba intentando con éste código, pero es mucho más simple el de Román.

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

   var
  aChk:Array[1..9] of ^TCheckbox;
  i:Integer;
  
type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin
aChk[1]:= @CheckBox1;
aChk[2]:= @CheckBox2;
aChk[3]:= @CheckBox3;
aChk[4]:= @CheckBox4;
aChk[5]:= @CheckBox5;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 For i:=1 to 5 do
  begin
  aChk[i].Checked:=True;
  end;

end;

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
  #4  
Antiguo 12-04-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El método que apuntas, Marcos, es el que yo usaría en los casos en que es necesario acceder a los controles en múltiples ocasiones. De hecho, si algo tenía de bueno VB, era que podías insertar arreglos de controles en automático.

Por otra parte, puedes obviar esos @ y ^ .

// Saludos
Responder Con Cita
  #5  
Antiguo 12-04-2012
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
Yo tengo un programa en el que una competición dura entre 1 y 10 días y hay que capturar 3 datos distintos por cada día y hasta que el usuario introduce el número de días no se sabe cuantos controles hay que mostrar, yo tengo los 30 controles, 3 columnas de datos con la propiedad Visible = False, y al introducir los días automáticamente se hacen visibles los correspondientes al número de días tecleados y por eso utilicé esta forma de trabajo.

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
  #6  
Antiguo 12-04-2012
GonzaloDias GonzaloDias is offline
Miembro
NULL
 
Registrado: ene 2012
Posts: 21
Poder: 0
GonzaloDias Va por buen camino
Controls para checkbox

Gracias amigos me sirvio de mucho, lo modifique un poco y me quedo asi.
Código Delphi [-]
c:=0;
  for i := 8 to 20 do
    begin

        if Controls[i] is TCheckBox then
           begin
               c:=c+1;
               //CostoC:=strtoint(form8.DBEdit3.Text);
               CostoC:=600;
               Resultado:=CostoC mod c;

               if Resultado<>0 then
                      TCheckBox(Controls[i]).Enabled := false;

           end;
    end;

pero me quedo un problema que en el control 10 no ingresa al if que lo valida si es Tcheckbox, saben como es para asignarle al checkbox4 (en mi caso) el control 10?
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
checkbox Lupita Varios 6 07-04-2008 16:12:53
Concatenar CheckBox novice Varios 20 27-09-2006 15:47:11
Almacenar CheckBox? Leogiro OOP 4 20-09-2004 22:46:05
RxDBGrid y los CheckBox Nuria OOP 10 01-04-2004 14:06:03
checkbox superhopi OOP 3 12-05-2003 11:32:46


La franja horaria es GMT +2. Ahora son las 19:37:38.


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