C#, Visual Basic by Codelines

      Veja aqui: C-Sharp, Visual Basic 6.0 , ASP.Net, VB .NET, WPF, cursos de programação, banco de dados Access e SQL Server, downloads, dicas, tutoriais, serviços de desenvolvimento de sistemas, APIs, activex, código fonte, exemplos, type libraries . 

 

WPF: persistindo configurações de posicionamento, tamanho e zoom de janelas e colunas de grades por usuário

Você gostaria de dar aos usuários dos seus programas a flexibilidade de poder ajustar cada janela da aplicação ao posicionamento, tamanho e zoom que melhor atendesse às necessidades de cada um e também fazer o mesmo com as colunas de cada grade podendo ajustar suas larguras, ordens e visibilidades?

Pois bem, com WPF é possível fazer tudo isto. Veja como neste exemplo.

 

Plataforma CSLA para objetos de negócio

Neste artigo, vamos falar sobre objetos de negócio e de um recurso gratuito que temos na Internet para automatizar e estruturar algumas ações comuns a todos os objetos de negócio. Trata-se da plataforma CSLA desenvolvida por Rockford Lotka, um renomado especialista em programação orientada a objetos.

Objetos de negócio são as classes onde são verificadas as regras de validação das propriedades dos objetos que fazem parte da aplicação e de seus relacionamentos. Normalmente, cada objeto de negócio é representado no banco de dados por uma ou mais tabelas. Os objetos de negócio possuem propriedades que correspondem aos campos da tabela que os representa no banco de dados e são ligados aos formulários da aplicação por databinding de modo que o valor de cada uma das suas propriedades seja ligado a um campo do formulário. Objetos de negócio podem ser do tipo raiz, que não são filhos de outro, ou podem ser objetos filhos que dependem para existir da existência prévia do seu objeto pai. Um objeto filho também pode ser pai de outro e assim por diante. Quando um objeto é filho de outro, costuma haver no objeto pai uma propriedade para referenciá-lo. Se o relacionamento entre a classe do objeto pai e a classe do objeto filho for de um-para-um, a classe do pai terá uma propriedade do tipo da classe do objeto filho. Caso o relacionamento seja de um-para-muitos, a propriedade será do tipo coleção.

Seja qual for o relacionamento pai-filho, quando o objeto pai é carregado para edição, os objetos filhos também são carregados já que eles fazem parte das informações que definem o objeto pai. Se um objeto filho dentro da hierarquia de objetos é alterado, ele pode ter sua validação para salvamento dependente de propriedades do objeto pai e mesmo de outros objetos da hierarquia. Desta forma, ele deve ser salvo apenas quando o objeto de mais alto nível for salvo e as regras de validação neste nível estiverem verificadas. Se as modificações não forem válidas para salvamento do objeto pai, o usuário deve poder cancelar todas as alterações na hierarquia de objetos e fazer com que tudo volte ao que era antes de iniciar a edição. Ou seja, é preciso que uma cópia seja feita do valor de cada propriedade de cada objeto da hierarquia no momento em que se dá início à edição do objeto pai. Assim será possível desfazer em cada objeto qualquer alteração nele. Mas implementar isto dá trabalho e padronizar um modo de fazer isto também. Mas esta é uma das coisas que a plataforma CSLA nos dá de graça.

Derivando nossos objetos da classe BusinessBase da plataforma CSLA, eles terão a capacidade de armazenar seus dados em um cache interno sempre que se chamar o método BeginEdit desta classe base. Quando houver necessidade de cancelar uma edição, bastará chamar o método CancelEdit e todas as propriedades do objeto e de seus objetos filhos em qualquer nível da hierarquia serão restauradas ao que eram antes do início da edição.

Outra coisa que a plataforma CSLA nos dá é um sistema formidável para criar regras de validação de modo que as próprias regras são objetos com métodos associados a elas que fazem a validação do objeto. As regras são associadas às propriedades dos objetos e, toda vez que uma propriedade muda, as regras associadas a ela são executadas. Cada regra tem uma propriedade onde é armazenada a mensagem de erro para ser exibida na interface gráfica quando o método que verifica a regra retornar false. Quando a execução de uma regra retorna false, ela é adicionada à coleção BrokenRulesCollection da classe BusinessBase e a propriedade Error desta classe retorna a lista das mensagens de erro das regras na BrokenRulesCollection. À medida que as regras vão sendo testadas e retornam true, elas vão sendo retiradas da BrokenRulesCollection se lá estiverem. Uma regra pode ser executada sempre que outras propriedades mudem mediante a criação de uma dependência entre as propriedades. Regras podem ter prioridade de execução e suspender a execução de outras de menor prioridade quando retornam false. O objeto é considerado válido para salvamento somente quando quando a sua BrokenRulesCollection estiver vazia e o mesmo ocorrer com a BrokenRulesCollection de cada um dos seus objetos filhos dentro da hierarquia que ele representa.

A classe BusinessBase também monitora o estado dos objetos pelas propriedades IsDirty, IsNew e IsDeleted que indicam quando um objeto foi alterado, é novo ou está marcado para ser excluído. Desta forma, a plataforma chama automaticamente os métodos adequados para incluir, atualizar ou excluir o objeto no momento da persistência dos dados. No caso de objetos não-novos, somente aqueles com IsDirty em true serão salvos dentro de uma hierarquia. Se as configurações indicarem que a camada de acesso a dados reside em outro computador, a plataforma serializará os objetos automaticamente para que eles viajem na rede de modo transparente para o programador.

Para usar a plataforma CSLA você precisará aderir a alguns padrões implementando alguns métodos que são chamados por padrão pelo método Save da classe BusinessBase. Se o objeto for um objeto raiz, por exemplo, a classe BusinessBase irá chamar o método DataPortal_Insert sempre que a propriedade IsNew do objeto estiver em true; caso o objeto esteja com a propriedade IsDirty com true e IsNew seja false, a plataforma irá chamar o método DataPortal_Update; se o objeto estiver com IsDeleted com true e IsNew em false, o método chamado será DataPortal_Delete. As propriedades podem ser declaradas normalmente, mas para tirar proveito real da plataforma, você terá que declarar as propriedades de modo que elas sejam monitoradas pela plataforma. Isto é feito declarando uma variável do tipo PropertyInfo e os métodos GetValue e SetValue de BusinessBase passando o PropertyInfo da propriedade como argumento.

A plataforma oferece uma grande quantidade de classes de suporte aos mais diferentes tipos de projetos e de relacionamentos entre os objetos. Mais informações sobre a plataforma CSLA e o download das diversas versões podem ser obtidos em http://cslanet.com .

Na Codelines, temos usado a plataforma CSLA a pouco tempo, mas já nos convencemos da sua grande utilidade. Uma ferramenta para automatizar a geração de código foi desenvolvida para criar os objetos de negócio e implementar os métodos de busca, inclusão, alteração e exclusão dos objetos bem como as viewmodels usadas para relacioná-los com suas views. Para aplicações com WPF, a ferramenta gera os valueconverters para converterem ids de objetos em seus nomes para serem exibidos em janelas e gera inclusive parte da interface gráfica com as funções de localização, filtragem e exportação para Excel nas listas de objetos. Esta ferramenta com seu código fonte é vendida por apenas R$ 150,00. Caso tenha interesse nela, favor contatar-nos pelo e-mail codelines@codelines.com .

Pílulas de programação, pequenas dicas para o dia-a-dia.

Dica do dia: WPF: bug na plataforma .Net quando se usa teclas de atalho para botões.

Conheça RealCash 2.0 - controle financeiro grátis  
Saia do vermelho controlando suas finanças com RealCash.

SilentIdea 4.0    
Enquanto trabalha você pode usar o micro para treinar sua mente e aumentar seu desempenho. Clique aqui para conhecer SilentIdea, uma ferramenta que irá ajudá-lo a melhorar sua performance no trabalho e nos estudos.

Curso de programação em Visual Basic 6.0 Grátis Aqui

Tabela de strings de conexão OLE DB a vários bancos de dados e em diferentes situações.

Seu banco de dados Access vive se corrompendo? Tente isto .

Instalador Gratuito: Inno Setup Veja aqui como conseguir um instalador profissional e gratuitamente.

Tutorial sobre subclassificação de janelas , uma técnica avançada para dar mais poder às suas aplicações. Veja aqui.

Pílulas de programação (pequenas dicas para o dia-a-dia)

WPF: bug na plataforma .Net quando se usa teclas de atalho para botões.

WPF e MVVM: carregando listas para tabcontrols na hora certa.

Cuidado com os atalhos de teclado.

WPF: alterando propriedades no container por triggers no content

MVVM: eliminando a necessidade de callbacks para exibir views modais


Se você gostou deste site e tem a barra do Google instalada, favor votar nele para projetá-lo melhor no resultado das buscas e para que outras pessoas possam vir a conhecê-lo.


E-mail: codelines@codelines.com

Contador de visitas
Sayaç
Contador de visitas


Conteúdo:

 

Software de avaliação de desempenho

Controle Financeiro

Subliminal messages software

Novo MSG

controle financeiro pessoal

controle financeiro grátis

CashPreview

estoque

download controle financeiro

expressões idiomáticas