Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Creacion de un Frame (https://www.clubdelphi.com/foros/showthread.php?t=55720)

afunez2007 24-04-2008 19:07:38

Creacion de un Frame
 
Hola Tengo el siguiente lio:

Tengo 2 forms y frame(creado a traves de la opcion File>New>Frame)

El asunto es el Form1 es el Main, tiene un boton para crear el Form2, hasta aqui todo esta bien, el problema es el form2 hay un boton para crear el Frame, pero no logro conseguirlo,

El codigo para crear el frame es el siguiente (Evento Click del Boton en el Form2):

Código Delphi [-]
var
  Form2: TForm2;


implementation

uses Unit4;

{$R *.dfm}

procedure TForm2.SpeedButton1Click(Sender: TObject);
begin
Frame4:=TFrame(ClaseFrame).Create(Self);
Frame4.Parent:=Self;
end;

y los errrores que salen son los siguientes:

Cita:

[Error] Unit2.pas(33): Undeclared identifier: 'Frame4'
[Error] Unit2.pas(33): Undeclared identifier: 'ClaseFrame'
[Error] Unit2.pas(34): Missing operator or semicolon
[Fatal Error] Project1.dpr(7): Could not compile used unit 'Unit2.pas'
Gracias por Adelantado!!

dec 24-04-2008 19:17:37

Hola,

A simple vista no se ve que declarada la variable "Fram4". Tal vez está en "Unit4", tal vez no. Desde luego el compilador se queja de que no ve la declaración, por lo que esta no debe estar en lado alguno, y así no puede compilarse el programa.

El segundo problema es similar al primero: no se encuentra la declaración del identificador "ClaseFrame". Aunque aquí tal vez hay algo más que decir, puesto que la siguiente instrucción:

Código Delphi [-]
Frame4 := TFrame(ClaseFrame).Create(Self);

Y que debería quedar, más o menos como sigue:

Código Delphi [-]
Frame4 := TClaseFrame.Create(Self);

No sé hasta qué punto he acertado o no. Y no sé hasta qué punto he podido ayudarte en algo.

afunez2007 24-04-2008 19:23:10

he probado el codigo que me dices y me sigue dando error:

Cita:

[Error] Unit2.pas(35): Undeclared identifier: 'Frame4'
[Error] Unit2.pas(35): Missing operator or semicolon
[Fatal Error] Project1.dpr(9): Could not compile used unit 'Unit2.pas'
El codigo esta asi:

Código Delphi [-]
var
  Form2: TForm2;

implementation

uses Unit4, Unit3, Unit5;

{$R *.dfm}

procedure TForm2.SpeedButton1Click(Sender: TObject);
begin
Frame4 := TClaseFrame.Create(Self);
end;

Saludos y Gracias por sus comentarios

dec 24-04-2008 19:31:12

Hola,

No se trataba tanto de probar el código que yo he propuesto, puesto que sería complicado que te funcionase tal cual, en este caso. El asunto es que comprendas qué quiere decir el error: "Undeclared identifier: 'Frame4'".

El compilador te está diciendo, "de acuerdo, veo que quieres usar la variable "Frame4", pero, ¿dónde está esa variable? No la veo declarada. Y así no puedo seguir.". Así que no se trata de copiar y pegar una posible solución, sino de saber qué está fallando y porqué.

Ahora bien, ¿dónde está declarada la variable "Frame4"? Tal vez, pero sólo tal vez, puedas declararla localmente, más o menos de este modo:

Código Delphi [-]
var
  Frame4: TClaseFrame;
begin
  Frame4 := TClaseFrame.Create(Self);
end;

PD. Atento a las etiquetas "DELPHI" que uso en mi mensaje. ¿Verdad que el código fuente se ve mejor? Pues tú puedes hacer lo mismo en tus mensajes. Voy a editar el anterior para que tú a su vez puedas hacer lo mismo y ver el uso que hago de las correspondientes etiquetas "DELPHI".

afunez2007 24-04-2008 21:58:36

Perdon por mi ignorancia, el tema que es mi primera vez con este tema de los Frame forms, no tengo ninguna experiencia en el asunto, por lo tanto no se como declarar.

Mi idea principal era tener una aplicacion que tenga un main form, con botones para crear nuevos forms a los cuales llamare modulos, dentro de cada form modulo deberia tener forms que se desplieguen sobre estos.

El asunto es que intente hacerlo con MDIs, sin embargo me aconsejara que en vez de MDIs, utilizara Frame Forms.

Entonces el punto es que no he podido lograr un boton en el form2(modulo1) que ejecute un Frame form.

Saludos y Gracias

grandmasterdari 25-04-2008 00:39:32

Pregunta
 
¿por las dudas estas dentro de un proyecto? ( ...project->new->...)

afunez2007 25-04-2008 00:46:01

Hola

Te explico:
Un proyecto Nuevo, 2 forms (Form1=Main form, Form2 = Modulo1), y un Frame creado a travez de la opcion File>New>Frame

El Form1 tiene un boton para ejecutar/Crear el form2
El Form2 Hay un boton para ejecutar/Crear el Frame1

El problema esta en el boton del form2 que crea el Frame

Saludos y Gracias

grandmasterdari 25-04-2008 00:57:05

Intento de solucion 01
 
en mi mundo esto se haria asi

Código:

    Form1->Enabled=false;
    InternosF=new TInternosF(Application);
    InternosF->ShowModal();
    delete(InternosF);
    Form1->Enabled=true;

creo que te falto el showmodal(), y si por las dudas resolves tu problema, no te molestes en avisar, nos agrada no saber que paso


La franja horaria es GMT +2. Ahora son las 15:10:42.

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