 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
el diego Master


Registrado: 23 Ago 2002Mensajes: 232Ubicación: Paris
|
Publicado: Vie 13 Feb, 2004 5:24 pm Asunto: Activar un GroupBox, un TPanel o un TRadioGroup |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Lun 16 Feb, 2004 2:48 am Asunto: |
|
|
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.. _________________
 |
|
| Volver arriba |
|
 |
el diego Master


Registrado: 23 Ago 2002Mensajes: 232Ubicación: Paris
|
Publicado: Mie 18 Feb, 2004 10:00 am Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 18 Feb, 2004 7:37 pm Asunto: |
|
|
Espero que si te haya servido
saludos... _________________
 |
|
| Volver arriba |
|
 |
el diego Master


Registrado: 23 Ago 2002Mensajes: 232Ubicación: Paris
|
Publicado: Mie 24 Mar, 2004 6:39 pm Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|