Código y Datos: Privado o Público
En los proyectos visuales, todos los datos y constantes de los objetos Window, MDIWindow o DialogBox son privados, es decir, sólo accesibles al objeto y sus controles hijo. Para compartir los datos con otros objetos del proyecto, agregue archivos Include u objetos Módulo. Los Módulos son objetos de código, que significa que no tienen ninguna ventana ni pueden contener controles, pero todo el código que hay en ellos es público por defecto, es decir, común a todo el proyecto (esto NO es aplicable a las macros, que solamente son visibles dentro de la ventana o módulo donde están definidas). Si desea que los datos de un módulo sean privados, haga lo siguiente:
Para proyectos visuales:
Ponga la propiedad PublicData a FALSE
Para proyectos clásicos:
Desmarque la opción Hacer globales todas las variables de las Propiedades del proyecto
Por otra parte, los archivos Include
también
son comunes a todo el proyecto si se agregan usando las opciones de
menú correspondientes.
Es decir, para los archivos include petenecientes al MASM32
SDK o a la programación
de drivers,
use la
opción de menú "Proyecto->Agregar
archivos Include (*.inc)...",
mientras que para otros
archivos include que desee incluir (y que deberán estar en
la carpeta del proyecto) use
la opción de menú "Proyecto->Agregar
Archivos...". Los archivos
include son los más apropiados
para contener macros y/o estructuras que deban ser globales a todo el
proyecto.
Para los objetos Window, MDIWindow y DialogBox, Easy Code declara los procedimientos como Private por defecto, mientras que para los objetos Module los declara como Public. Puesto que Easy Code ignora la directiva Option Proc, todos los procedimientos son Public, si no se declaran explícitamente como Private, para que puedan ser accedidos por cualquier otro objeto del proyecto. De hecho, todos los procedimientos son Public por defecto si no se declaran Private ni Public, por lo que los procedimientos siguientes son exactamente iguales:
AnyName Proc
Ret
AnyName EndP
y
AnyName Proc Public
Ret
AnyName EndP
Si desea que un procedimiento sea privado, debe añadirle la
correspondiente palabra reservada (Private),
y entonces sólo
será accessible dentro del objeto en el que se encuentra:
AnyName Proc Private
Ret
AnyName EndP
Por consiguiente, si pone la propiedad PublicData a FALSE (proyectos visuales), o desmarca la opción Hacer globales todas las variables (proyectos clásicos), y todos los procedimientos son declarados como Private, tendrá un módulo privado, es decir, sólo accessible desde el propio módulo. Por otra parte, poniendo la propiedad PublicData a TRUE (proyectos visuales), o marcando la opción Hacer globales todas las variables (proyectos clásicos), y no declarando como Private ninguno de sus procedimientos, dará como resultado un módulo público, donde los datos y el código serán accessibles desde cualquier otro objeto del proyecto.
Es una buena práctica mantener como Private todos los procedimientoss de un objeto ventana (proyectos visuales) y agregar uno o mas módulos para compartir el código y los datos que sean comunes. De esta manera su código será mas claro, parecido a lengujes de mas alto nivel, y menos expuestos a errores. Así funciona Easy Code cuando escribe código para un procedimiento: todos los procedimientos de un objeto ventana son declarados Private (a menos que usted los haga Public), mientras que todos los procedimientos de un objeto módulo son declarados Public (a menos que usted los haga explícitamente Private). De hecho, Easy Code no escribe ni Public ni Private, lo cual significa que son Public.
OBSERVACIONES: Easy Code se cuida de los prototipos de todos los procedimientos existentes en el proyecto. Por lo tanto, NO HACE FALTA que escriba ni incluya ninguna sentencia Proto, puesto que no se necesitan en los proyectos de Easy Code.
IMPORTANTE:
Recuerde que Easy Code ignora la directiva Option
Proc,
por lo tanto, para que un procedimiento sea privado, debe
incluir la palabra
reservada correspondiente (Private).
Si no lo declara ni
Public
ni Private,
el
procedimiento será considerado Public.