| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Mar 25 Sep, 2007 1:00 pm Asunto: Usar structura de otro form? COMO?AYUDA!!!!!! YA SOLUCIONADO |
|
|
Resulta que tengo una estructura dinamica declarada en un form 1, y despues de rellenar la estructura desde este mismo form 1, me gustaria acceder a sus datos desde otro form 2.
El caso es que he probado a declarar la estructura fuera de la clase que define el form 1 en el .h
| Código: |
//---------------------------------------------------------------------------
#ifndef armariosH
#define armariosH
//---------------------------------------------------------------------------
#include <Classes>
#include <Controls>
#include <StdCtrls>
#include <Forms>
#include <ComCtrls>
#include <Dialogs>
#include <ExtCtrls>
#include <Grids>
#include <Menus>
//---------------------------------------------------------------------------
////////Cola de estructuras de dibujos tipo pilar armario /////////////////////////////
struct Dibujos2{
char Tipo_P2[1024];
struct Dibujos2 *siguiente;
}*primero_Dib2,*ultimo_Dib2;
////////////////////////////////////////////////////////////////////////////
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
TImage *Image1;
TLabel *Label6;
TLabel *Label7;
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TEdit *Edit4;
TDateTimePicker *DateTimePicker1;
TStringGrid *StringGrid1;
TButton *Button1;
TComboBox *ComboBox1;
TComboBox *ComboBox2;
TDateTimePicker *DateTimePicker2;
TEdit *Edit5;
TStringGrid *StringGrid2;
TMainMenu *MainMenu1;
TMenuItem *Archivo1;
TMenuItem *Calcular2;
TMenuItem *Nuevo1;
TMenuItem *Abrir1;
TMenuItem *guardar1;
TMenuItem *Imprimir1;
TMenuItem *salir1;
TMenuItem *Herramientas1;
TMenuItem *Aadirmasceldas1;
TPopupMenu *PopupMenu1;
TMenuItem *Tipopuerta1;
TMenuItem *Pilarderecho;
TMenuItem *Pilarizquierdo;
TMenuItem *Pilarcentro;
TPrintDialog *PrintDialog1;
TLabel *Label8;
TEdit *Edit6;
TComboBox *ComboBox3;
TEdit *Edit7;
TStringGrid *StringGrid3;
TLabel *Label9;
void __fastcall ComboBox1Change(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
void __fastcall ComboBox2Click(TObject *Sender);
void __fastcall ComboBox2KeyPress(TObject *Sender, char &Key);
void __fastcall StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State);
void __fastcall Aadirmasceldas1Click(TObject *Sender);
void __fastcall Imprimir1Click(TObject *Sender);
void __fastcall Calcular2Click(TObject *Sender);
void __fastcall guardar1Click(TObject *Sender);
void __fastcall Nuevo1Click(TObject *Sender);
void __fastcall Abrir1Click(TObject *Sender);
void __fastcall Button1Click(TObject *Sender);
void __fastcall salir1Click(TObject *Sender);
void __fastcall StringGrid2DblClick(TObject *Sender);
void __fastcall ComboBox3Exit(TObject *Sender);
void __fastcall ComboBox3Click(TObject *Sender);
void __fastcall Edit7KeyPress(TObject *Sender, char &Key);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall PilarderechoClick(TObject *Sender);
void __fastcall PopupMenu1Popup(TObject *Sender);
void __fastcall PilarizquierdoClick(TObject *Sender);
void __fastcall PilarcentroClick(TObject *Sender);
void __fastcall buscar_Dibujos2();
void __fastcall Edit1KeyPress(TObject *Sender, char &Key);
void __fastcall Edit3KeyPress(TObject *Sender, char &Key);
private: // User declarations
public: // User declarations
char Tipo_P2[1024];
char Medida1[1024];
char Medida2[1024];
char Medida3[1024];
char Medida4[1024];
char Medida5[1024];
int Cantidad,ekis,igriega,Columna,Fila;
//////////////////////////////////////////////
void virtual __fastcall WMShowWindow(TMessage& Msg);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_SHOWWINDOW,TMessage,WMShowWindow)
END_MESSAGE_MAP(TForm)
BOOL __fastcall OnPaintCallbackEvent(HDC dc);
BOOL __fastcall OnPaintControlCallbackEvent(Controls::TControl* TheControl,
HDC dc);
//////////////////////////////////////////////*/
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
|
y despues acceder a sus datos desde el form2.
| Código: |
struct Dibujos2 *buscad;
buscad=primero_Dib2;
while(buscad!=NULL)
{
ShowMessage(buscad->Tipo_P2);
buscad=buscad->siguiente;
}
|
El problema es que , no me da ningun error a la hora de compilar,despues
cuando inserto datos en esta estructura desde el form 1 y saco su contenido accediendo desde este mismo form1 no da problemas y consigo ver todo su contenido, pero cuando intento ver el contenido de la structura accediendo a esta desde el form2, me dice que esta está vacia.
Alguien puede ayudarme.
GRACIAS
Ultima edición por hetorsc el Vie 28 Sep, 2007 8:30 am, editado 1 vez |
|
| Volver arriba |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Mar 25 Sep, 2007 4:44 pm Asunto: |
|
|
Creo que si es igual que con los componentes, debes referirte a ella así:
Form1->Dibujos2 (o como se llame la estructura) _________________ Saludos, Alpha. |
|
| Volver arriba |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Mar 25 Sep, 2007 5:14 pm Asunto: |
|
|
he probado de varias maneras pero nada no funciona, me dice que "Dibujos2" no forma parte de Form1
| Código: |
Form1-> Dibujos2 *buscad;
buscad=primero_Dib2;
while(buscad!=NULL)
{
ShowMessage(buscad->Tipo_P2);
buscad=buscad->siguiente;
}
|
asi tampoco
| Código: |
Form1->struct Dibujos2 *buscad;
buscad=primero_Dib2;
while(buscad!=NULL)
{
ShowMessage(buscad->Tipo_P2);
buscad=buscad->siguiente;
}
|
tambien he provado a declarar la estructura en el public de form1 y nada.
Alguna solucion? |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 26 Sep, 2007 7:35 am Asunto: |
|
|
Efectivamente la Estructura no forma parte de Form1
Pero si forma parte del archivo de cabecera h. del form1
solucion 1
incluye el archivo de cabecera del form 1 dentro de el 2
y usa las declaraciones que tienes de la estrucutura de la siguiente manera
| Código: | #include "Unit1.h" <-- donde esta la estructura.
#include "Unit2.h" <-- Archivo del Form2 |
en alguna parte de tu codigo....
usa la forma que estas usando.
| Código: | Dibujos2 *buscad;
buscad=primero_Dib2; // cambia esto
buscad = new Dibujos2 // por esto
// aun que no necesitas declarar "otra" estructura puedes
// referirte a ella, de manera directa
while(buscad!=NULL)
{
ShowMessage(buscad->Tipo_P2);
buscad=buscad->siguiente;
} |
_________________

Ultima edición por Cesar C. Salazar Gonzalez el Mie 26 Sep, 2007 11:12 am, editado 1 vez |
|
| Volver arriba |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Mie 26 Sep, 2007 10:29 am Asunto: |
|
|
nada , me sigue diciendo que está vacia la estructura.
He metido los includes correspondientes.
he cambiado:
| Código: |
buscad=primero_Dib2; // cambia esto
buscad = new primero_Dib2 // por esto
|
y me da un error.
y he intentado hacerlo sin declarar otra estructura, de manera directa , pero nada.
No se lo que hacer. |
|
| Volver arriba |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Mie 26 Sep, 2007 11:10 am Asunto: |
|
|
Y si declaras la estructura en la parte "public", dentro del archivo de cabecera del Form1??
Entonces ya podrías utilizar la estructura de la forma que yo te dije (creo)
A ver si así... es raro de todas formas.
En fin, que tengas suerte. Ya nos comentas _________________ Saludos, Alpha.
Ultima edición por Alpha120 el Mie 26 Sep, 2007 11:12 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: Mie 26 Sep, 2007 11:11 am Asunto: |
|
|
vaya pues yo lo he echo asi y no he tenido ningún problema
estas seguro, que te marca un error?
| Código: | Dibujos2 *cesar = new Dibujos2;
strcpy(cesar->Tipo_P2,"cesar");
this->Caption = (AnsiString) cesar->Tipo_P2; |
_________________
 |
|
| Volver arriba |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Mie 26 Sep, 2007 11:25 am Asunto: |
|
|
Mirar aqui os mando un ejemplo de mi problema,
se trata de dos formularios.
En el primero meto datos en los edits y despues los añado a la estructura.
una vez añadidos a la estructura.
Cuando los muestro desde el form1 funciona prefectamente, pero cuando los muestro desde el form2 esta vacio.
a ver si sabeis que pasa en mi aplicacion.
lo podeis bajar de aqui(pequeño ejemplo):
aqui teneis dos ejemplos:
el primer ejemplo el problema continua:
http://www.megaupload.com/?d=UXHULMW0
en el segundo ejemplo he solucionado el problema de una forma que no me gusta pero es la unica forma que he encontrado.
Lo que hago en este ejemplo es que a la vez que relleno la structura en el form1, relleno con los mismos datos otra estructura igual en el form2 y asi cada form coge la suya:
http://www.megaupload.com/?d=0R3NDTUM
link nuevo , a ver si podeis ahora compilarlo.le he quitado el componente que molestaba.
Ultima edición por hetorsc el Mie 26 Sep, 2007 3:54 pm, editado 3 veces |
|
| Volver arriba |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Mie 26 Sep, 2007 1:21 pm Asunto: |
|
|
No puedo compilarlo siquiera, me falta WINSKINC6.BPI ¿?  _________________ Saludos, Alpha. |
|
| Volver arriba |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Mie 26 Sep, 2007 3:10 pm Asunto: |
|
|
arreglado:
aqui teneis dos ejemplos:
el primer ejemplo el problema continua:
http://www.megaupload.com/?d=UXHULMW0
en el segundo ejemplo he solucionado el problema de una forma que no me gusta pero es la unica forma que he encontrado.
Lo que hago en este ejemplo es que a la vez que relleno la structura en el form1, relleno con los mismos datos otra estructura igual en el form2 y asi cada form coge la suya:
http://www.megaupload.com/?d=0R3NDTUM
link nuevo , a ver si podeis ahora compilarlo y ayudarme .le he quitado el componente que molestaba.
Ultima edición por hetorsc el Mie 26 Sep, 2007 5:06 pm, editado 1 vez |
|
| Volver arriba |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Mie 26 Sep, 2007 4:31 pm Asunto: |
|
|
Pues sí, compila y funciona.
Al botón de Añadir datos a la estructura se le puede dar varias veces. Le das un montón de veces y ya te pones a cerrar ventanitas
Pero me extraña que me falte esa librería, porque me pasa lo mismo para compilar un ejemplo de como encender las luces del teclado, en la parte de "Tips & Tricks".
Yo utilizo BCB6, tiene algo que ver la versión? parece que me falta la librería WINSKINC6.LIB
Alguien sabe algo??? Gracias!! _________________ Saludos, Alpha. |
|
| Volver arriba |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Mie 26 Sep, 2007 4:53 pm Asunto: |
|
|
tienes que añadir el componente VCLSkin.
no viene con el borland 6.
Es un componente que sirve para cambiar el aspecto de los formularios
estilo windows vista y demás estilos.
puedes bajarlo de aki:
http://www.megaupload.com/?d=SMY6HWH0 |
|
| Volver arriba |
|
 |
Alpha120 Lt


Registrado: 11 Mar 2007Mensajes: 99Ubicación: Sevilla, España
|
Publicado: Jue 27 Sep, 2007 1:00 am Asunto: |
|
|
Lo he bajado pero al ir a instalar el paquete me dice que me falta WINSKINC6.bpi
Si le doy al compile.bat, me dice:
"Required package 'vclactnband' not found"
Cómo lo instalo? parece que es para Delphi.
Gracias por tu ayuda! _________________ Saludos, Alpha. |
|
| Volver arriba |
|
 |
hetorsc Lt JG

Registrado: 11 Abr 2007Mensajes: 61
|
Publicado: Jue 27 Sep, 2007 8:22 am Asunto: |
|
|
yo lo que hice fue, dentro del borland ir a Component, Install Packages y instalar lo que te viene comprimido en el rar.
Si que funciona en el borland 6 c++ porque yo lo estoy usando. |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 27 Sep, 2007 8:25 am Asunto: |
|
|
Te he enviado el archivo de regreso, para que puedas checar la informacion, a mi me funciona correctamente _________________
 |
|
| Volver arriba |
|
 |
|