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 

Controles pasarlo por referencia en una funcion....

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Controles pasarlo por referencia en una funcion.... Responder citando

Hola a todos y gracias a quienes contestaron mi duda anteriormente, pero eso no es lo que buscaba o bueno no entendi. vulevo con la misma inquietud y es pasar controles como el Edit como parametro en una funcion, por ejemplo una funcion para validar los caracteres que se deben ingresar, si yo quiero que esa validacion sea para 10 Edit debo copiar el mismo codigo para todos pero debe existir una forma que permita pasar el control como parametro y asi ahorrar lineas de codigo y tiempo.

gracias....... Very Happy
Volver arriba
Mensaje    Asunto: Responder citando

En cada evento OnExit de cadaTedit para validar colocas:

Código:

if(Valiacion(txtEsteEdit))==false txtEsteEdit->SetFocus();


y el evento validacion
Código:

bool Validacion(TEdit *TuEdit)
{
valor=true;
bla bla bla
bla bla bla  (algo no se cumple pon valor a false)
bla bla bla
return valor;
}


_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Hola, Entiendo que deseas escribir una funcion donde pasandole como parametro un edit realice una validacion sobre este, pongamos como ejemplo que solo acepte "SI" y "NO", bien, puedes escribir la funcion pero esta debera ser llamada desde algun evento de los edits, otra forma es es poner la validacion como respuesta al evento deseado y asignar esta respuesta a los edits ya sea en tiempo de diseño o en tiempo de ejecucion, para ambos casos y esta validacion en particular el evento mas apropiado es OnExit, como te propone Gabriel.

Coloca unos 10 Edits en un form, selecciona el primero y en el inspector de objetos, pagina Events doble click en OnExit y pon lo siguente para que quede asi:
Código:
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
 TEdit* EsteEdit = (TEdit *)Sender;
 if(EsteEdit->Text!="SI"&&EsteEdit->Text!="NO")
  {
    EsteEdit->Text="";
    EsteEdit->SetFocus();
    ShowMessage("Solo SI o NO");
   }
}

En la practica, en tiempo de diseño selecciona con el mouse todos los edits y en el inpector de objetos despliega el combo correspondiente a OnExit y selecciona Edit1Exit, o vete seleccionando uno por uno los edits y realiza la operacion con cada uno de ellos.
Al terminar veras que solo se escribio una vez el codigo pero funciona para todos los edit que tengan asignado este evento.

Si quisieras implementar la funcion seria asi:
Código:
//en el cpp
void TForm1::ValidarEdit(TEdit *Edit)
{
if(Edit->Text!="SI"&&Edit->Text!="NO")
  {
    Edit->Text="";
    Edit->SetFocus();
    ShowMessage("Solo SI o NO");
   }
}
//---------------------------
//Para usar el mismo evento OnExit como disparador
void __fastcall TForm1::Edit1Exit(TObject *Sender)
{
TEdit* EsteEdit = (TEdit *)Sender;

ValidarEdit(EsteEdit);
}
//---------------------------------------------------------------------------

Debes declarar la funcion tambien el el header:
Código:
public:      // User declarations
void ValidarEdit(TEdit *Edit);


Luego tendras que asignar a cada edit la respuesta al evento OnExit igual como en la opcion anterior, como veras de la primera forma es mas economico en lineas de codigo.

Para realizar las asignaciones a RunTime es asi:
Código:
Edit5->OnExit=Edit1Exit;
Bueno espero haberte sido util.
Volver arriba
Mensaje    Asunto: Responder citando

Hola, veo que entre Touchsoftwares e Invitado han intentado resolver tu problema, y me parece que lo han conseguido.

Sin embargo no terminan de responder a tu pregunta ¿Cómo pasar un TEdit como parámetro a una funcón?

En los prototipos de las funciones que crea Builder por tí tienes cantidad de ejemplos Button1Click(TObject *Sender), TForm1(TComponent* Owner), ...

Crea una aplicación y, sin cambiar ningún nombre ni propiedad le añades 2 TEdit, un TCheckBox y un TButton, luego cambia el código do Unit1.cpp y pega el que te propongo:
Código:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
   : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if (CheckBox1->Checked)
      EjecutaEstaFuncion(Edit1, "Este es el mensaje");
   else
      EjecutaEstaFuncion(Edit2, "Este es el mensaje");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::EjecutaEstaFuncion(TEdit *edit, const AnsiString mensaje)
{
   edit->Color = clRed;
   edit->Text = mensaje;
}
//---------------------------------------------------------------------------
El ejemplo es bastante tonto, pero creo que ilustrativo para la pregunta que hacías (no para el problema que planteas).
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.