MSR Develop Blog

Posts Tagged ‘controles

Las páginas son los controles de mas arriba que no tienen padre. La representación de las paginas son lo que se muestra directamente al usuario final. Los usuarios acceden a las páginas enviando peticiones de servicio.

Cada página debe tener un archivo de template(plantilla). El sufijo del nombre del archivo debe ser “.page” . El nombre del archivo sin el sufijo es el nombre de la página. PRADO tratará de localizar un archivo clase de página dentro del directorio que contiene el archivo de página template.

Un archivo clase de página debe tener el mismo nombre que el archivo página de template pero con el sufijo “.php” . Si el archivo de clase no se encuentra, la página tomará la clase TPage.

En resumen: si tengo MiPagina.page , MiPagina.php deben estar en el mismo directorio y MiPagina.page contiene html, componentes y elementos visuales al usuario final y MiPagina.php contiene la lógica, código PHP.

PostBack

Un formulario enviado(*submiteado*) es llamado a postback(poner nuevamente) si el envío es hecho a la página que tiene el formulario. Postback puede ser considerado un evento que sucede del lado del cliente, activado por el usuario.

PRADO tratará de identificar que control del lado del servidor responder a un evento de postback. Si uno es determinado, por ejemplo, un TButton, lo llamamos el evento postback sender que traducirá el evento postback en algún evento específico del lado del servidor(ej: OnClick and OnCommand eventos del TButton).

Ciclo de vida de las páginas

Entender el ciclo de vida de las páginas es crucial para comprender la programación en PRADO. El ciclo de vida de las páginas se refiere al estado de transición de una página cuando es servida al usuario final. Puedes verlo mejor en la siguiente ilustración:

lifecycles

La imagen será traducida mas adelante…

Artículo: Fundamentals : Pages
Traducción: Martin Sagastume Rue (msr)
Fuente: http://www.pradosoft.com/demos/quickstart/index.php?page=Fundamentals.Pages

Anuncios

Un control es una instancia de la clase TControl o sus subclases. Un control es un componente definido junto con la interfaz de usuario. La clase base TControl define la relación padre-hijo entre los controles la cuál refleja el comportamiento y relacionamiento entre los elementos de la interfaz de usuario.

Arbol de Controles

Los controles están relacionados unos con otros mediante la relación padre-hijo. Cada control padre puede tener uno o mas controles hijos. Un control padre está a cargo de la transición del estado de sus controles hijos. El resultado de los controles hijos son usualmente usados para componer la presentación del control padre. La relacion padre-hijo trae consigo controles en forma de árbol. Una página es la raíz del arbol, la cuál su presentación es mostrada a los usuarios finales.

La relación padre-hijo es usualmente establecida por el framework a través de templates. En el código, usted puede especificar explicitamente un control como hijo de otro usando los siguientes métodos:

$parent->Controls->add($child);
$parent->Controls[]=$child;

donde la propiedad Controls se refiere a la colección del control hijo del padre.

Identificación de Controles

Cada control tiene una propiedad ID que lo identifica de forma única de los demás controles. Además, cada control tiene un UniqueID y ClientID que puede ser usado para identificar globalmente al control en el árbol que reside el control. UniqueID y ClientID son muy similares. Ambos son usados por el framework para determinar el lugar que le corresponder al control en el árbol, mientras que el último es usado principalmente del lado del cliente como tag ID’s del HTML. En general, usted no deberá confiarse de la forma explícita de UniqueID o ClientID.

Nombrando Contenedores

Cada control tiene un nombre contenedor el cuál es un control creando un namespace único para diferenciar controles que tengan el mismo ID. Por ejemplo, un control TRepeater crea multiples items, cada uno tiene controles hijo con los mismos ID’s. Para diferenciar estos controles hijos, cada item sirve como un contenedor de nombres. Por consiguiente, un control hijo puede ser identificado de forma única usando el ID de su contenedor de nombres junto con su propio ID. Como ya habrá entendido, UniqueID y ClientID se confían de los contenedores de nombres.

Un control puede servir como contenedor de nombres si implementa la interface INamingContainer

ViewState y ControlState

HTTP es un protocolo sin estados, esto significa que no provee funcionalidad para soportar interacción continua entre el usuario y el servidor. Cada request(pedido) es considerado como discreto e independiente uno del otro. Una aplicación web, sin embargo, a menudo necesita saber lo que el usuario ha hecho en sus peticiones previas. La gente introduce sessions(sesiones) para ayudar a recordar el estado de esta información.

PRADO le pide prestado el concepto de ViewState y ControlState de Microsoft ASP.NET para proveerle un mecanismo de programacion mucho mas orientado a estados. Un valor guardado en el ViewState o ControlState puede estar disponible para las próximas peticiones si las nuevas peticiones son formularios sumisión (llamados postback) a la misma página por el mismo usuario. La diferencia entre ViewState y ControlState radica en que el ViewState puede ser deshabilitado pero el ControlState no!

ViewState y ControlState no están implementados en TControl. Son comunmente usados para definir varias propiedades de los controles. Para guardar y recuperar valores del ViewState o ControlState, use los siguientes métodos:

$this->getViewState('Name',$defaultValue);
$this->setViewState('Name',$value,$defaultValue);
$this->getControlState('Name',$defaultValue);
$this->setControlState('Name',$value,$defaultValue);

donde $this se refiere al control instanciado, Name se refiere a la clave que identifica el valor persistente, $defaultValue es opcional. Cuando recuperamos valores del ViewState y ControlState, si las correspondientes claves no existe, el valor por defecto será retornado.

Artículo: Fundamentals : Controls
Traducción: Martin Sagastume Rue (msr)
Fuente: http://www.pradosoft.com/demos/quickstart/index.php?page=Fundamentals.Controls