Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Nueva duda... abrir otro Form... x_x (https://www.clubdelphi.com/foros/showthread.php?t=36526)

Ascii1457 15-10-2006 19:05:39

Nueva duda... abrir otro Form... x_x
 
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í:
Código Delphi [-]
 // ...

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


Código Delphi [-]
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...

Código Delphi [-]
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
Código Delphi [-]
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:
Código Delphi [-]
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í...

Cita:

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 ; )


La franja horaria es GMT +2. Ahora son las 10:06:34.

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