Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   "Undeclared Identifier "CLOSE" (https://www.clubdelphi.com/foros/showthread.php?t=36343)

anghell77 09-10-2006 08:13:23

"Undeclared Identifier "CLOSE"
 
Puede que sea de novatísimo...pero no lo sé...

Alguien sabe porqué demonios no me reconoce la instruccion CLOSE en un formulario??
La situación:
Tengo un formulario que es submenú de Reportes.
Dos botones en este form, MENU REPORTES, y MENU PRINCIPAL
El primero (Menu Reportes) envía obvio al form con las opciones del menú de reportes, el cual se queda abierto pero minimizado mientras trabajo en el subemenu (form donde tengo el problem)
El segundo (Menu Principal) debe cerrar mi formulario de submenú, el menú de reportes y enviar hasta el primer formulario del proyecto.

La situación está en que:

Código Delphi [-]
procedure TRep_Inv.Menu_ReportesClick(Sender: TObject);
begin
Rep_Inv.Close;
Menu_Reportes.Show;
end;

Lo curioso es que en éste evento (el anterior) si me envía al form menu_reportes...

En el siguiente me da el error:
Código Delphi [-]
procedure TRep_Inv.Menu_PrincipalClick(Sender: TObject);
begin
Rep_Inv.Close;
Menu_Reportes.Close; //Aquí el error "Undeclared Identifier "CLOSE"
Menu_Principal.Show;
end;

Y aquí el código del evento OnClose del Formulario de menú de Reportes

Código Delphi [-]
procedure TMenu_Reportes.FormClose(Sender: TObject; var Action: TCloseAction);
var a:=Integer;
begin
For a:=17 downto 0 do
Menu_Reportes.AlphaBlendValue:=a*15;

Principal.WindowState:=WsNormal;
Principal.Visible:=true;
end;



Lo que debo aceptar, es que no sé para que rollo sirve el ShowModal, MIDI, MIDIChild....eso,...no se ni que demonios...todos mis forms están en su propieda
Cita:

FormStyle fsNormal
y ya antes desde otros formularios había hecho la llamada de cerrar el formulario actual, el de menu de reportes y que me dejara en el principal...

NOTA: Aún de que no se encuentre en el uses del implementation,la unidad correspondiente al Menu_Reportes, me lo muestra en el evento ya escrito anteriormente

Código Delphi [-]
...
Rep_Inv.Close;
Menu_Reportes.Show;...

Y aunque lo agregue al uses, sigue el mismo error....
Ya busqué en la ayuda....y ps no...no encontré algo similar....
Gracias por el tiempo que se tomen en leerlo!!
{Saludos}

Bicho 09-10-2006 08:59:00

Hola,

ya probaste de hacer lo siguiente:

Código Delphi [-]
procedure TRep_Inv.Menu_PrincipalClick(Sender: TObject);
begin
Rep_Inv.Close;
NombreDeLaUnitALaQuePertenece.Menu_Reportes.Close; //Aquí el error "Undeclared Identifier "CLOSE"
Menu_Principal.Show; //Aqui debes poner lo mismo, porque al compilar te dira que show no lo reconoce
end;

No basta con incluir en el uses la unit a la que pertenece el formulario que estas usando, sino que además para acceder a ella debes incluirla explícitamente.

Espero te sirva.

Saludos

anghell77 09-10-2006 09:04:48

:mad::mad:...A veces (lo he dicho antes) me siento inútil e inservible:( (será que tengo que dormir :confused::confused: además de aprender más, más más...) .... :D:D

Gracias, Bicho.....Ha funcionado.....

Lo que no concibo....es ¿porqué suceden ese tipo de cosas?...Digo, cuando en otros form (versiones anteriores) lo había implementado de esa forma.... y funcionaba.....

Bueno....el problema solucionado...la incógnita, será necesaria estudiarla....

Gracias nuevamente.....

{Saludos}

epuigdef 09-10-2006 11:53:59

Buenas!

La direfencia está en si tienes declarada la otra unit en la parte "uses" del form.

En caso afirmativo no necesitarías indicar el nombre del unit tal y como te ha dicho bicho.

Un saludo

Edu

Ñuño Martínez 09-10-2006 12:18:26

Cita:

Empezado por anghell77
Lo que no concibo....es ¿porqué suceden ese tipo de cosas?...Digo, cuando en otros form (versiones anteriores) lo había implementado de esa forma.... y funcionaba.....

Se debe, principalmente, al sistema de protección de datos (o encapsulación) definido por el lenguaje Pascal. Según la definición formal del lenguaje, un módulo sólo puede acceder a sus propios datos, quedando los datos del resto de los módulos ocultos a la vista. Si lleváramos a rajatabla esta norma, no sería posible utilizar otros módulo (units) en nuestros programas, así que dentro del área de visibilidad de un módulo se incluyen los módulos adyacentes declarados en la sección USES, pero no los módulos no adyacentes.

Creo que está claro, ¿no? :D Es importante entenderlo para evitar que te pase otra vez lo que te ha pasado.


La franja horaria es GMT +2. Ahora son las 09:38:12.

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