Pt:Controles
From PRADO Wiki
Contents |
Controles
Um controle é uma instância da classe TControl ou de uma de suas classes filha. Um controle é um componente definido em conjunto com uma interface de usuário. A classe base TControl define o relacionamento pai-filho entre os controles, o que reflete na relação pai-filho entre os elementos na interface do usuário.
Árvore de Controle
Os Controles são relacionados entre si através de relacionamentos pai-filho. Cada controle-pai pode ter um ou mais controles-filhos. Um controle-pai está em estado de transição na carga de seus controles-filhos. O resultado da geração dos controles-filhos são normalmente usados para compor a apresentação do controle-pai. A página é a raíz da árvore, cuja a apresentação é retornada aos usuários finais.
O relacionamento pai-filho é estabelecido normalmente por templates no PRADO. Em seu código, você também pode explicitamente especificar um controle como filho de outro através dos seguintes métodos:
$parent->Controls->add($child); $parent->Controls[]=$child;
onde a propriedade "Controls" refere-se à coleção de controles-filho do pai.
Identificação de Controle
Cada controle possui uma propriedade "ID" que pode ser a sua única identificação entre outros controles. Além desta propriedade, cada controle possui um "UniqueID" e um "ClientID" que podem ser usados para identificar globalmente o controle na árvore onde o controle reside. "UniqueID" e "ClientID" são muito similares. O primeiro é usado pelo PRADO para determinar a localização do controle correspondente na árvore, enquanto o último é principalmente usado no lado do cliente como ID's de tags HTML. Em geral, você não deve confiar no formato explícito do "UniqueID" e "ClientID".
Nomeadores de Recipiente
Cada controle tem um nome de recipiente que é um controle criado com um namespace único para diferenciação entre controles com o mesmo ID. Por exemplo, um controle "TRepeater" cria vários itens que possuem controles-filhos com a mesma ID. Para diferenciar estes controles-filho, cada item retira um nome de recipiente. Consequentemente, o controle-filho pode ser unicamente identificado usando o ID do nomeador de recipiente junto com o seu próprio ID. Como você já pode ter entendido, "UniqueID" e "ClientID" confiam nos nomeadores de recipientes.
ViewState e ControlState
O HTTP é um protocolo que não suporta interação contínua entre usuário e servidor. Cada requisição é considerada como discreta e independente de outra. Numa aplicação WEB, entretanto, é preciso saber o que o usuário fez na requisição anterior. As pessoas introduzem sessões para ajudá-las a lembrar o estado das informações.
O PRADO emprestou o conceito de controlstate e viewstate do Microsoft ASP.NET para disponibilizar um mecanismo adicional de controle de estado. Um valor colocado em viewstate ou controlstate pode estar disponível nas próximas requisições se elas forem submissões de formulários (chamadas "postback") para a mesma página pelo mesmo usuário. A diferença entre a viewstate e controlstate é que a primeira pode ser disabilitada e a última não.
A viewstate e controlstate são implementadas no "TControl". Elas são utilizadas normalmente para definir várias propriedades dos controles. Para salvar e resgatar valores da viewstate ou controlstate, utilize os seguintes métodos:
$this->getViewState('Name',$defaultValue); $this->setViewState('Name',$value,$defaultValue); $this->getControlState('Name',$defaultValue); $this->setControlState('Name',$value,$defaultValue);
onde "$this" refere-se à instância do controle, "Name" refere-se à chave identificadora do valor salvo, "$defaultValue" é opcional. Quando resgatar os valores da viewstate ou controlstate, se a chave correspondente não existir, o valor padrão será retornado.

