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 

cambiar componentes iguales de un form

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: cambiar componentes iguales de un form Responder citando

hola,
esta vez mi pregunta es acerca de la herencia de objetos. No se que poner en el buscador para obtener respuesta, pero seguro que alguno de vosotros la sabe.
Si en un form tengo varios Edit, etc y quiero aplicarle el mismo metodo a todos los objetos del mismo tipo, no se puede llamar a algun objeto de orden superior en el form para no tener que ir uno a uno?

ejemplo:

Edit1->Clear();
Edit2->Clear();
...
Editn->Clear();

hacer algo como (algo aqui)->Clear(); que me lo aplique a todos los edit...

es que lo veo util para limpiar de datos el form sin tener que escribir todas esas lineas.
Muchas... de antemano
Volver arriba
Mensaje    Asunto: Responder citando

Hola

Me da que no tienes muy claro lo que es un objeto y lo que es una clase, pero bueno, al tema, lo que puedes hacer es una funcion miembro del Form en el que se encuentran los Edit que realice el Clear de todos ellos.

Código:
void __fastcall TForm1::Borrar()
{
   Edit1->Clear();
   ...
   EditX->Clear();
}


Esta seria la version chapuza otra opcion mas optimizada seria utilizando la funcion
Código:
Form1->FindComponent()
Esta funcion permite buscar componentes a partir de su nombre.
O incluso mas depurado con las propiedades
Código:
Form1->ComponentCount;
Form1->Components

Con lo que podemos recorrer todos los componentes del Form y si son de tipo Edit llamar a la funcion "Clear";
_________________
Salu2
KAYETANO
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

La primera opcion ya la sabia y era la que queria evitar. Gracias por la segunda mas refinada, era justo lo que queria saber. Tengo mas o menos clara la diferencia entre clase y objeto, lo que pasa es que se me va la olla (siento haber confundido).unsaludo
Volver arriba
Mensaje    Asunto: Responder citando

Hola

Yo te aconsejo la tercera, es la mas fina y generica, mas adelante puedes usarla para cualquier conjunto de objetos.

Tambien hay que decir que es la mas currada.
_________________
Salu2
KAYETANO
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Solución Responder citando

Hola!

Lo que puedes hacer es esto:


TEdit *edt;
for (int i=1; i<=64; i++) {

edt = dynamic_cast<TEdit*>(FindComponent("Edit"+String(i)));


// aqui lo que quieras hacer, por ejemplo, mirar que tenga texto
if (edt->Text!="") { edt->Text=" " }//así limpias lo que contenga.
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

gracias a los dos. digamos que a partir de lo que ha dicho kayetano tenia pensado estrujarme hasta hacer algo parecido a lo que ha indicado tloya, pero me has ahorrado el trabajo. un saludo
Volver arriba
Mensaje    Asunto: Responder citando

hola de nuevo,
he encontrado este trozo de código. Recorre todos los controles del form y si son custoedit(incluye memo y richedit) los limpia. se puede hacer unicamente para los edit. lo hace recursivo para tratar los que esten dentro de paneles, etc. El codigo lo he obtenido de Borland HowTo de www.thebits.org


void __fastcall ClearEdits(TWinControl *swCont)
{
TCustomEdit *MyEdit;

for(int x = 0; x <swCont->ControlCount; x++)
{
MyEdit = dynamic_cast <TCustomEdit *>(swCont->Controls[x]);
if(MyEdit)
MyEdit->Text = "";
else
if(dynamic_cast <TWinControl *>(swCont->Controls[x]))
ClearEdits(dynamic_cast <TWinControl *>
(swCont->Controls[x]));
}
}
Volver arriba
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.