PDA

Ver la Versión Completa : Nueva duda... abrir otro Form... x_x


Ascii1457
15-10-2006, 19:05:39
Bueno, creo que esta duda realmente debe ser una tontera gigante… pero realmente ya no se como se hace. x_x

Pues tengo 2 Form que cree ( Uno como Ventana principal y otra solo da mensajes )… y pues simplemente quiero abrir del form1 el form2… pero no me funciona, ya que en el código del form1 me dice que no esta declarado form2, como para hacer form2.ShowModal; o algo por el estilo…

Bueno, a ver si alguien me salva de la perdición nuevamente.

Y lo siento si es una pregunta muy tonta ^_^U

PD: Realmente he buscado en el foro... pero como que no he podido pillar nada sobre mi problema en si.

seoane
15-10-2006, 19:14:43
Tienes que declarar en las uses del primer formulario la unidad que contiene el segundo formulario. Algo así:

// ...

var
Form1: TForm1;

implementation

{$R *.dfm}

uses unit2; // Suponiendo que la unit del segundo formulario se llama unit2

// ...

Ascii1457
15-10-2006, 19:21:13
Aaaaaaaaaaaaa... ahora que me fijo esta mas que claro... no se como no me fije antes en eso… U_U

Muchas gracias seoane, que llevaba largo rato dando vueltas en el tema tonto este @_@

Debe ser el sueño que ya no me deja pensar con claridad =_=

Ascii1457
15-10-2006, 19:37:57
Estooo... surgio un pequeño problema...

Al compilar me da este error en la linea que pongo Msgbox.showmodal;

:s

[Pascal Error] Main.pas(63): E2066 Missing operator or semicolon

seoane
15-10-2006, 19:51:08
¿Que es MsgBox? Supongo que es el nombre del formulario que quieres abrir, comprueba que en tu unidad no tienes declarada ninguna otra variable con el mismo nombre. Por lo demás no parece haber ningún error en la linea que muestras, por que no pones aquí un par de lineas anteriores y posteriores.

Ascii1457
15-10-2006, 20:01:50
Bueno, MsgBox es un Form en blanco ( recién creado )... nada mas que eso, y pues no esta declarado en ningún lado MsgBox en el Form1... solo esta declarado en el archivo mismo de MsgBox que es Form2.

lag_0
16-10-2006, 01:01:09
Pascal Error] Main.pas(63): E2066 Missing operator or semicolon

no habras puesto ; al final de la uses, si pegas el codigo mejor :p

Ascii1457
16-10-2006, 03:32:13
Bueno... este es el codigo de Main.pas


unit Main;
interface
uses
//... blablabla ...
type
TMainWIN = class(TForm)
//... blablabla ...
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainWIN: TMainWIN;
NombrePC: String;
AudioCargado: Boolean;
implementation
{$R *.dfm}

Uses Textos; <- Aquí declaro el nombre del otro formulario

//... blablabla...

procedure TMainWIN.FormClick(Sender: TObject);
begin

Msgbox.ShowModal; <-- Aquí sale el error U_U

end;

//... blablabla ...

end.

y pues bueno el otro formulario tiene esto Textos.pas...

unit Textos;
interface
uses
// ... blablabla ...
type
TMsgBox = class(TForm)
// ... blablabla ...
private
{ Private declarations }
public
{ Public declarations }
end;
var
MsgBox: TMsgBox;
implementation
{$R *.dfm}
end.

Estoo... igual cree un proyecto nuevo desde 0... y pues funciona bien, pero en este que les pongo... nop, me da el error @_@

Todooo mal con mi primer código en Delphi *_*

lag_0
16-10-2006, 07:07:29
pues yo no veo ningún error en el codigo que pusiste...
claro que me acabo de despertar ... nosé, la verdad lo veo todo bien

lag_0
16-10-2006, 07:09:17
aa bueno, mira si en
procedure TMainWIN.FormClick(Sender: TObject);
begin

Msgbox.ShowModal; <-- Aquí sale el error U_U

end;


hay más codigo antes de la linea del error, que puede que no pegaras, y en ese caso mira que la linea de antes tenga su ; y then, o do o lo que le haga falta.

Ascii1457
16-10-2006, 07:24:14
Pues nop... es solo un código para testear, y solo esta eso...

Bueno, de todas formas gracias, y el problema se corrigió volviendo a comenzar de 0 el proyecto, en todo caso no llevaba casi nada =P

Si aparece nuevamente el problema... entonces pegare el código completo para ver que pasa.

Lepe
16-10-2006, 11:34:32
El problema que veo es que no creas la ventana MsgBox para nada.

Si se arregló el problemas, es porque delphi está Creando la ventana Msgbox desde que arranca tu aplicación y según esa filosofía solamente deberías hacer un Msgbox.Show/ShowModal y despues un Msgbox.Hide.

Si lo que quieres es crear dinámicamente la ventana y liberarla de memoria, lo normal es hacerlo así:
Pon la propiedad Visible de Msgbox a False:

unit Main;
interface
uses
//... blablabla ...
type
TMainWIN = class(TForm)
//... blablabla ...
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainWIN: TMainWIN;
NombrePC: String;
AudioCargado: Boolean;
implementation
{$R *.dfm}

Uses Textos; <- Aquí declaro el nombre del otro formulario

//... blablabla...

procedure TMainWIN.FormClick(Sender: TObject);
begin
Msgbox := Application.Createform(TMsgbox, Msgbox);
// o bien
Msgbox := TMsgBox.Create(Application); // esto es exactamente igual que la línea anterior... sobre gustos... los colores
// o bien
Msgbox := TMsgBox.Create(MainWin); // Al cerrar el Mainwin, automaticamente se libera el Msgbox
// o si quieres destruirla despues de mostrarla:
MsgBox := TMsgbox.Create(nil); // nadie destruirá la ventana, nosotros por código lo haremos
Msgbox.ShowModal; <-- Aquí sale el error U_U


FreeAndnil(MsgBox);// esta línea hace falta si hemos usado TMsgbox.Create(nil);
end;

//... blablabla ...

end.


Además deberías ir a View -> Source Code y quitar la línea donde se crea la ventana MsgBox.

Saludos

Ascii1457
16-10-2006, 11:58:14
Holas de nuevo =P

Pues el formulario MsgBox si lo cree... pero algo debió pasar con mi primer código, voy a probar así de curiosidad nada mas a ver si se arregla con lo que me comentas aquí...

Además deberías ir a View -> Source Code y quitar la línea donde se crea la ventana MsgBox.

Que me suena a que podría ser...

Pero bueno, ya les vendré a molestar con alguna duda mas adelante, así que muchísimas gracias a todos los que respondieron al post ( y los que lo miraron y pensaron el tema que fuera un segundo >=) ), realmente son geniales. ^_^

Realmente me a parecido increíble esta comunidad, ya que es mi primer mensaje casi y varios han tratado de ayudarme sin pensarlo 2 veces... realmente no podría pedir mejor ayuda =D

Chaus por ahora ; )