Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Activar un GroupBox, un TPanel o un TRadioGroup

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Activar un GroupBox, un TPanel o un TRadioGroup Responder citando

Hola a todos,
Estaba intentando hacer una funcion para activar, o no, todos los componentes contenidos en un GroupBox, un TPanel o un TRadioGroup por ejemplo.
Lo que quisiera es no alejarme demasiado de la simplisidad de la funcion que muestro a continuacion, evitando asi el agregar tantos if como tipo de controles quiera tratar.
Esto es lo que habia hecho para un TPanel (para los otros controles es similar):
Código:
void ActiverPanel(TPanel * panel , bool yesno)
{
     for (int i=0; i < panel->ControlCount; i++)
         panel->Controls[i]->Enabled = yesno;
}

A alguien se le ocurre algo?

saludos
diego


Ultima edición por el diego el Lun 16 Feb, 2004 9:54 am, editado 1 vez
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Puedes realizar los siguiente, yo lo hice para, cambiar el DataSet de algunos componentes. puede que te sirva..

Código:

//Esta es la forma desde algun boton
 AnsiString Campos[] ={"DBEdit1",
                                  "DBEdit2",
                                  "DBEdit3",
                                  "DBEdit4",
                                  "DBEdit5",
                                  "DBEdit6",
                                  "DBEdit7",
                                  "DBEdit8",
                                  "DBEdit9",
                                  "DBEdit10",
                                  "DBEdit11",
                                  "DBEdit12"
                              };
            CambiarDataModule( Campos,DataModule2->DSREGISTRO);


y esta es la funcion. que puede interesarte..

Código:

void __fastcall CambiarDataModule(AnsiString campos[], TDataSource *Data){
     //
    for(int a=0; a<(sizeof(campos)/sizeof(campos[0]));a++){
        for(int i=0; i < ComponentCount; i++){
            if (Components[i]->ClassNameIs( "TDBCheckBox" )){
                TDBCheckBox* obj;
                obj= (TDBCheckBox *)Components[i];
                if(obj->Name == campos[a])
                    obj->DataSource = Data;
            }else if(Components[i]->ClassNameIs( "TDBComboBox" )){
                TDBComboBox* obj;
                obj= (TDBComboBox *)Components[i];
                if(obj->Name == campos[a])
                    obj->DataSource = Data;
            }else if(Components[i]->ClassNameIs( "TDBEdit" )){
                TDBEdit* obj;
                obj= (TDBEdit *)Components[i];
                if(obj->Name == campos[a])
                    obj->DataSource = Data;
            }else if(Components[i]->ClassNameIs( "TDBImage" )){
                TDBImage* obj;
                obj= (TDBImage *)Components[i];
                if(obj->Name == campos[a])
                    obj->DataSource = Data;
            }else if(Components[i]->ClassNameIs( "TDBListBox" )){
                TDBListBox* obj;
                obj= (TDBListBox *)Components[i];
                if(obj->Name == campos[a])
                    obj->DataSource = Data;
            }else if(Components[i]->ClassNameIs( "TDBLookupComboBox" )){
                TDBLookupComboBox* obj;
                obj= (TDBLookupComboBox *)Components[i];
                if(obj->Name == campos[a])
                    obj->DataSource = Data;
            }else if(Components[i]->ClassNameIs( "TDBLookupListBox" )){
                TDBLookupListBox* obj;
                obj= (TDBLookupListBox *)Components[i];
                if(obj->Name == campos[a])
                    obj->DataSource = Data;
            }else if(Components[i]->ClassNameIs( "TDBMemo" )){
                TDBMemo* obj;
                obj= (TDBMemo*)Components[i];
                if(obj->Name == campos[a])
                    obj->DataSource = Data;
            }else if(Components[i]->ClassNameIs( "TDBMemo" )){
                TDBMemo* obj;
                obj= (TDBMemo*)Components[i];
                if(obj->Name == campos[a])
                    obj->DataSource = Data;
            }
        }
    }
}

Me permite cambiar el datamodule de uno a otro, es decir de Table1 a Table2

Saludos espero te sirva..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias César,
Si es interesante. Por la tarde voy a intentar ganar un poco de tiempo y hacer algunas pruebas. Desues te comento.

saludos
diego
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Espero que si te haya servido


saludos...
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

hola césar,
Recién hoy pude analizar tu codigo y realmente me fue de mucha utilidad:
Te paso un ejemplo de como lo utilisé:
Código:
void TheCleaner(TForm * form)
{
     for (int i = 0; i < form->ComponentCount; i++)
         {
         TComponent *Temp = form->Components[i];
         if (Temp->ClassNameIs( "TCheckBox" ))
            {
            TCheckBox* obj;
            obj = (TCheckBox *)Temp;
            obj->Checked = false;
            }else if(Temp->ClassNameIs( "TComboBox" )){
                TComboBox* obj;
                obj = (TComboBox *)Temp;
                obj->ItemIndex = -1;
            }else if(Temp->ClassNameIs( "TEdit" )){
                TEdit* obj;
                obj = (TEdit *)Temp;
                obj->Text = "";
            }else if(Temp->ClassNameIs( "TImage" )){
                TImage* obj;
                obj = (TImage *)Temp;
                //obj->                                           //Finir
            }else if(Temp->ClassNameIs( "TListBox" )){
                TListBox* obj;
                obj = (TListBox *)Temp;
                //obj->                                           //Finir
            }else if(Temp->ClassNameIs( "TMemo" )){
                TMemo* obj;
                obj = (TMemo*)Temp;
                obj->Text = "";
            }else if(Temp->ClassNameIs( "TMaskEdit" )){
                TMaskEdit* obj;
                obj = (TMaskEdit*)Temp;
                obj->Text = "";
            }else if(Temp->ClassNameIs( "TLabeledEdit" )){
                TLabeledEdit* obj;
                obj = (TLabeledEdit*)Temp;
                obj->Text = "";
            }else if(Temp->ClassNameIs( "TRadioButton" )){
                TRadioButton* obj;
                obj = (TRadioButton*)Temp;
                obj->Checked = false;

            }
         }
}

La funcion hace una limpieza de ciertos componentes de un form. La utilidad es que cuando estos contienen datos, los limpia para, por ejemplo, hacer un insert.
Aun me falta terminan el otra para limpiar solo el contenido de un PageControl o de un GroupBox. El PageControl parece que es relativamente mas complicado ya que puede tener X TabSheet en su interior. Al menos todavia no lo pude hacer andar

saludos
diego
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.