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 11-11-2015
Yugo Yugo is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 25
Poder: 0
Yugo Va por buen camino
Obtener valor de una propiedad de una Tabla en un Form1 desde otro Form2

Buenas, la duda que tengo es la siguiente: Tengo un Form1 donde coloco los componentes TTable (TablaAbierta), TDataSource (dsTablaAbierta), TDBGrid, TButton1 y TButton2.

Trato de abrir una tabla paradox seleccionándola desde un TOpenDialog que aparece tras pulsar el TButton1, para que sea visualizada en el TDBGrid y al pulsar el TButton2 se abra un TForm2 donde hay colocado un TEdit para capturar el nombre de la tabla abierta en el TForm1 mediante... Edit1->Text = Form1->TablaAbierta->TableName;

Pero algo falla y no soy capaz de verlo...


Código:
TOpenDialog *SelecTabla;
  SelecTabla = new TOpenDialog(this);

  String nomTabla;

  //Configuración del objeto TOpenDialog
  SelecTabla->Title = "Seleccionar la Tabla que desea abrir...";
  SelecTabla->Filter = "Tabla de Bases de Datos (*.DB) | *.DB";
  SelecTabla->Options << ofHideReadOnly << ofFileMustExist << ofEnableSizing;
  //Asignamos el directorio inicial por defecto del cuadro de diálogo
  SelecTabla->InitialDir = ExtractFilePath(Application->ExeName);

  if(SelecTabla->Execute())
  {
    nomTabla = ExtractFileName(SelecTabla->FileName); //contiene "nombreTabla.Extension"

    //Indicar la ruta donde reside la tabla que deseamos abrir
    TablaAbierta->DatabaseName = ExtractFilePath(SelecTabla->FileName);

    //Asignamos el nombre de la tabla que deseamos visualizar:
    TablaAbierta->TableName = nomTabla;  //pasar el nombre de la tabla CON [.DB]

    //Activar la tabla para trabajar con ella:
    TablaAbierta->Active = true; //Activar por último la tabla

    //Especificamos el conjunto de datos (TablaAbierta) que servirán de fuente de
    //datos a los objetos DBGrid y DBNavigator para visualizarlos en pantalla:
    dsTablaAbierta->DataSet = TablaAbierta;

    //Configuramos las propiedades del DBGrid y DBNavigator para enlazarlos con
    //Table1 y los hace visibles al usuario.
    DBGrid1->DataSource = dsTablaAbierta;
    DBGrid1->Visible = true;
    DBNavigator1->DataSource = dsTablaAbierta;
    DBNavigator1->Visible = true;


  }
  else //SelecTabla->Execute()==false
  {
    //Mensaje que aparece en caso de pulsar CANCELAR ó la 'X' de CERRAR ventana
    MessageDlg("Operación de apertura de tabla cancelada.",
                 mtWarning, TMsgDlgButtons() << mbOK, 0);
  }
Responder Con Cita
  #2  
Antiguo 11-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Depuraste el codigo? que es lo que falla?

Nunca trabaje con paradox, pero esto me hace ruido

Código PHP:
TablaAbierta->DatabaseName ExtractFilePath(SelecTabla->FileName); 
Si en el opendialog seleccionas el archivo C:\carpeta\hello.bd, ExtractFilePath te devuelve C:\carpeta\

Sigo haciendo puras conjeturas, pero de seguro te salta una excepcion de que el archivo no existe o algo asi

Siempre que te salgan errores es bueno para los foreros que nos indiques el mensaje de la excepcion y en que linea ocurre, algo muy facil de ver con el depurador. Simplemente corres la aplicacion con F9 y listo
Responder Con Cita
  #3  
Antiguo 11-11-2015
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 Yugo.
Cita:
Empezado por Yugo Ver Mensaje
...
Trato de abrir una tabla paradox seleccionándola desde un TOpenDialog que aparece tras pulsar el TButton1, para que sea visualizada en el TDBGrid y al pulsar el TButton2 se abra un TForm2 donde hay colocado un TEdit para capturar el nombre de la tabla abierta en el TForm1 mediante... Edit1->Text = Form1->TablaAbierta->TableName;

Pero algo falla y no soy capaz de verlo...
Bueno, la verdad... tampoco veo el código que le asigna el valor al edit de Form2

Si no te entendí mal, podes hacer:
Código PHP:
...
#include "Unit2.h"
...
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  if (
TablaAbierta->Active) {  // verificar si se abrió una tabla

    
if (Form2 == NULL)          // si Form2 no fué creado,
      
Form2 = new TForm2(this); // crearlo

    
Form2->Edit1->Text TablaAbierta->TableName// nombre de tabla a Edit

    
Form2->Show(); // Mostrar
  
}
  else
    
MessageBox(0"Debe elegir una tabla primero"""MB_ICONWARNING MB_OK);

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 12-11-2015
Yugo Yugo is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 25
Poder: 0
Yugo Va por buen camino
Gracias chicos por vuestro tiempo y vuestros aportes!!

La verdad es que releyendo mi mensaje, es cierto que me equivoqué... y además me expliqué algo mal jejeje. Mi intención era escribir el siguiente código en el evento OnCreate del Form2:
Cita:
Edit2->Text = Form1->Table1->TableName;
Incluyo las Units.h de cada uno de ellos respectivamente, pero nada... ni si quiera llega a compilar. El programa se bloquea (No responde). La verdad es que pienso que puede llegar a haber algún problema con él, porque he intentado compilar una nueva aplicación vacia New|Application sin introducir objetos ni código e igualmente se bloquea al pulsar compilar. Así que, por un lado me es imposible reportar el tipo de error producido y por otro lado, rectificar mi comentario para aclarar cómo quería obtener el nombre de la tabla1 en el Form2.

Un saludo y muchas gracias de nuevo!!

Última edición por Yugo fecha: 12-11-2015 a las 03:02:10. Razón: corrección ortográfica
Responder Con Cita
  #5  
Antiguo 12-11-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.003
Poder: 26
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por Yugo Ver Mensaje
Incluyo las Units.h de cada uno de ellos respectivamente, pero nada... ni si quiera llega a compilar. El programa se bloquea (No responde). La verdad es que pienso que puede llegar a haber algún problema con él, porque he intentado compilar una nueva aplicación vacia New|Application sin introducir objetos ni código e igualmente se bloquea al pulsar compilar. Así que, por un lado me es imposible reportar el tipo de error producido (...)
Eso parece un problema de referencia circular. Es decir, a.h incluye b.h que incluye a.h que incluye b.h que incluye ...
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #6  
Antiguo 18-11-2015
Yugo Yugo is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 25
Poder: 0
Yugo Va por buen camino
Cita:
Empezado por Ñuño Martínez Ver Mensaje
Eso parece un problema de referencia circular. Es decir, a.h incluye b.h que incluye a.h que incluye b.h que incluye ...
Muchas gracias Ñuño!! Entiendo por tu comentario que, únicamente es necesario incluir las Units.h en aquellos módulos que vayan a hacer uso de ellas, es decir, no requiere luego hacer lo contrario, ¿cierto?
Responder Con Cita
  #7  
Antiguo 19-11-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.003
Poder: 26
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Coligo por lo que escribes que deberías repasarte tus apuntes de "Iniciación a la Programación en Lenguaje C".

Perdón por la condescendencia, pero es que es de primero de primero de programación básica en C.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
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
abrir y cerrar form2 desde form1 aitorqrv Lazarus, FreePascal, Kylix, etc. 15 20-12-2013 22:11:05
abrir form2 dentro del form1 darkbits Varios 5 10-08-2013 17:51:47
Dejar siempre visible Form2 que se llama desde Form1 yevabas Varios 1 11-05-2013 01:45:40
acceder al form1 desde el form2. petete2008 OOP 2 08-02-2012 21:29:59
form2 cerrar el form1 ingabraham Varios 6 07-01-2009 20:11:13


La franja horaria es GMT +2. Ahora son las 01:47:48.


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