Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2014
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Propietario de un objeto en una función externa

En BCB 6 tengo una función externa:
Código:
void Ayuda(TForm *Formulario, TCustomEdit *Edit)
que uso para la ayuda de varios campos (códigos postales, pobleciones, provincias, etc.). Me funciona a la perfección salvo en el caso de las pobalciones.

Me explico: Si voy por la ayuda de poblaciones además del nombre de la población saco su código postal y la provincia, pero al tratar de asignarlos a los Tedit correspondientes me da un error de compilación.

Tengo este código:
Código:
Form->Poblacion->Text = Query->FieldByName("Nombre")->AsString;
Form->Poblacion->Tag  = Query->FieldByName("Registro")->AsInteger;
donde Formulario es el formulario en que se encuentran los TEdit y que va en la declaración de la función, pero al compilar me dice que 'Poblacion' is not a member of 'TForm'

¿Cómo puedo llamar a un objeto de un formualrio en una función del estilo de la mostarda, teniendo en cuenta que en su declaración va implícito el formulario en que están los objetos? Había pensado a través de Owner o Parent del objeto, pero no se me ocurre cómo.

Última edición por Angel.Matilla fecha: 17-10-2014 a las 18:52:38.
Responder Con Cita
  #2  
Antiguo 17-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Angel.

La verdad es que no me queda para nada clara la situación...

El código que mostras y que te genera el error, pareciera no tener relación con la función Ayuda que mencionas mas arriba.

Supongo que Población es un TEdit, pero ¿ Donde está declarado ? ¿ Quién es su parent ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 17-10-2014
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Hola ecfisa. A ver: Ayuda es un TForm que tiene un TListView y dos TButton nada más. Poblacion es un TEdit declarado en el formulario que va en la definición de la función: Supongamos que ese formulario se llamase Ficha; sería entonces Ficha->Poblacion, pero como esa función Ayuda la uso en distintos formularios por eso puse en la definición ese TForm *Formulario. Tengo un formulario Personas con esos datos (población, c. postal, provincia, etc.) y otro con los datos del propietario del programa que también lleva esos datos pero de dicha persona.
Responder Con Cita
  #4  
Antiguo 17-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
ademas pregunto yo algo mas. Supongo que el TEdit está en el form que le metes como parámetro asi que su parent será el form y mi pregunta es ¿Para que le pasa el puntero al TEdit si ya le pasas el del form y desde ese puedes acceder a todo lo que este contenga?
Responder Con Cita
  #5  
Antiguo 17-10-2014
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por aguml Ver Mensaje
ademas pregunto yo algo mas. Supongo que el TEdit está en el form que le metes como parámetro asi que su parent será el form y mi pregunta es ¿Para que le pasa el puntero al TEdit si ya le pasas el del form y desde ese puedes acceder a todo lo que este contenga?
Para saber sobre que campo estoy pidiendo la ayuda.
Responder Con Cita
  #6  
Antiguo 17-10-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Angel.

Está un poco mas claro pero todavía no alcanzo a entender bién la situación... De todos modos fijate si te sirve de este modo.

form invocador de la ayuda:
Código PHP:
...
#include "Unit2.h"  // Formulario de ayuda

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  
Poblacion->Text "un texto";
  
Poblacion->Tag  1;
  if (
frmAyuda == NULL)
    
frmAyuda = new TfrmAyuda(this);
  
frmAyuda->Show();
  
frmAyuda->Ayuda(Form1Poblacion);
}
... 
Ayuda.

.h
Código PHP:
...
class 
TfrmAyuda : public TForm
{
  
__published:    // IDE-managed Components
  
...
  
void __fastcall FormClose(TObject *SenderTCloseAction &Action);
  
void __fastcall FormDestroy(TObject *Sender);
 public:        
// User declarations
  
void __fastcall Ayuda(TFormFormTEditEdit);
 ...

form:
Código PHP:
...
void __fastcall TfrmAyuda::Ayuda(TFormFormTEditEdit)
{
  
// aquí lo que desees hacer con los argumentos
  
ShowMessage(Form->Name " - " Edit->Name " ,contenido: "+Edit->Text);
}

void __fastcall TfrmAyuda::FormClose(TObject *SenderTCloseAction &Action)
{
  
Action caFree;
}

void __fastcall TfrmAyuda::FormDestroy(TObject *Sender)
{
  
frmAyuda NULL;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 17-10-2014
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Poder: 11
aguml Va por buen camino
y digo yo, ¿No te interesa mas usar como parametrosel puntero al form y un enum(poblacion=1,nombre,apellido...) y dentro de la funcion usar un switch que dependiendo del valor use un edit u otro? Por ejemplo Ayuda(fomulario,localidad); y con eso te quitas complicaciones.
Responder Con Cita
  #8  
Antiguo 18-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Yo tampoco tengo muy clara la situación pero si ayuda la declaras así:
Código PHP:
void Ayuda(TForm *FormularioTCustomEdit *Edit
Donde Edit es el edit del formulario sobre el que obtienes ayuda (Poblacion), ¿No sería esto lo que tienes que hacer en la función ayuda?:
Código PHP:
Edit->Text Query->FieldByName("Nombre")->AsString
Saludos.
Responder Con Cita
  #9  
Antiguo 21-10-2014
Toni Toni is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona - España
Posts: 364
Poder: 21
Toni Va por buen camino
Hola,

En este caso como la funcion Ayuda es genericay ademas esta compilada de forma externa te puede ser comodo utilizar los metodos FindComponent. Esto te va a permitir de forma dinamica acceder a cualquier objeto que tengas en el formulario que le pasas a la funcion ayuda.

Código PHP:

void Ayuda
(TForm *FormularioTCustomEdit *Edit)
{

  
// En el caso del formulario Poblaciones rotorna 2 campos adicioanales.
  
if(Formulario->Name=="Poblaciones")
    {
      
TEdit *CodigoPostal = (TEdit *)Formulario->FindComponent("CodigoPostal");
      
TEdit *Provincia      = (TEdit *)Formulario->FindComponent("Provincia");

      if(
CodigoPostal != NULL// Para evitar problemas por si no localiza el campo dentro del form.
        
CodigoPostal ->Text Query->FieldByName("CodigoPostal ")->AsString;
      if(
Provincia != NULL)
        
Provincia->Text       Query->FieldByName("Provincia")->AsInteger;
    }

   
// Valor de retorno generico para todos los formularios
   
Form->Nombre->Tag Query->FieldByName("Nombre")->AsString;


__________________
Saludos,

Bitman
Responder Con Cita
Respuesta



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
Quien es el propietario del dominio? rgstuamigo Varios 3 09-08-2011 20:41:33
Diez ventajas del software libre y propietario Arcioneo La Taberna 11 26-09-2007 23:29:50
Cambiar el propietario de un archivo ingel Varios 8 13-10-2005 21:15:19
Obtener usuario propietario de un proceso walrus API de Windows 2 06-09-2005 17:48:13
WinZip cambia de propietario. marcoszorrilla Noticias 0 18-07-2005 22:15:17


La franja horaria es GMT +2. Ahora son las 07:58:15.


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