MSR Develop Blog

Posts Tagged ‘pradoframework

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