Profil de EmersonEspaço de Emerson Santon...BlogRéseauSkyDrive Outils Aide

Blog


24 novembre

Ribbon nos ThemedControls?

Estou trabalhando num novo controle, chamado Ribbon, que apresentei na sessão “Show Us Your App” na Southwest Fox 2009.

Apesar de ser totalmente funcional, ele possui um número limitado de funcionalidades disponíveis na interface Ribbon do Microsoft Office e é necessário criar alguns builders, exemplos e uma ajuda para torná-lo mais fácil de usar.

Se você estiver interessado neste controle e quiser me ajudar nestas tarefas, por favor, entre em contato comigo.

Veja este screenshot…

Ribbon_ThemedControls

14 janvier

As surpresas do controle grid

Sempre achei o controle grid do VFP limitado... até o dia em que Cetin Basoz (Universal Thread) me disse algo que é óbvio, mas nunca havia parado para pensar: é possível inserir em uma coluna do grid qualquer tipo de controle: image, editbox, grid, container, etc.

Inserir outros controles nas colunas do grid é mais fácil do que você pode imaginar e, dependendo do que você deseja fazer, não necessite de nenhuma linha de código!

Quer saber como? Baixe aqui o exemplo desenvolvido com o VFP 9 e leia com atenção o tutorial abaixo.

A base de dados

No exemplo serão utilizadas duas tabelas: Equipes (tabela pai) e Membros (tabela filho).
Ambas pertencem ao banco de dados Empresas e são relacionadas através do campo pkEquipe (chave primária da tabela pai) e fkEquipe (chave estrangeira da tabela filho).

O form e o ambiente de dados

Crie um form e adicione ao Data Environment as duas tabelas.
Note que, pelo fato de existir uma integridade referencial entre elas, ao adiciona-las, automaticamente é criado um relacionamento.
Configure a propriedade InitialSelectedAlias do Data Environment para que a tabela Equipes seja selecionada ao abrir o form.

O grid

Crie um grid e configure as propriedades (na barra de ferramentas Properties) ColumnCount como 2 e RecordSource como Equipes.
Na barra de ferramentas Properties, selecione o controle textbox da coluna 1 do grid, clique na barra de título do form, pressione a tecla Delete e confirme a exclusão do controle textbox.
Repita o procedimento acima na coluna 2.
Até aqui, nenhuma novidade. O grid será utilizado para navegar pelos registros da tabela Equipes.

Os objetos que serão incluídos no grid

Crie um container e adicione a ele os seguintes controles: image, textbox e editbox.
Configure a propriedade ControlSource dos controles textbox e editbox como Equipes.NomeEquipe e Equipes.Observacoes respectivamente.
Configure a propriedade PictureVal do controle image como Equipes.Logotipo.
Clique no controle container, pressione CTRL+X e, em seguida, clique com o botão direito do mouse no grid, selecione a opção Edit no menu de atalho; clique na coluna 1 do grid e pressione CTRL+V.
O container será utilizado para exibir os dados do registro atual da tabela Equipes.

Crie mais um grid e configure as propriedades (na barra de ferramentas Properties) ChildOrder como fkEquipe, ColumnCount como 3, LinkMaster como Equipes, RecordSource como Membros e RelationalExpr como pkEquipe.
Configure a propriedade ControlSource das colunas 1, 2 e 3 como Membros.Membro, Membros.Cargo e Membros.Plataforma respectivamente.
Clique no grid, pressione CTRL+X e, em seguida, clique com o botão direito do mouse no grid1, selecione a opção Edit no menu de atalho; clique na coluna 1 do grid1 e pressione CTRL+V.
O grid será utilizado para exibir os registros da tabela Membros correspondentes ao registro da tabela Equipes.

Ooops, o que aconteceu com o logotipo?

Se você executar o form neste momento, perceberá que o logotipo exibido em todos os registros é o mesmo. Não se assuste!
Para exibir o logotipo correspondente seria necessário que o VFP reavaliasse a propriedade PictureVal a cada registro (assim como a propriedade ControlSource), o que não ocorre.
Então não é possível exibir uma imagem diferente para cada registro? Sim, é possível.
Crie um método no form chamado Imagem e digite nele o seguinte comando:

WITH THISFORM.o_grid1.Column1.o_container1
   .o_image1.PICTUREVAL = equipes.logotipo
ENDWITH

Configure a propriedade DynamicBackColor da coluna 1 do grid1 como ThisForm.Imagem().
A propriedade DynamicBackColor é reavaliada a cada mudança de registro na tabela. Incluindo a chamada ao método Imagem nesta propriedade, o logotipo será exibido corretamente.

Conclusão

Qualquer versão do Visual FoxPro permite a inserção de objetos nas colunas do grid.
A exceção fica por conta do armazenamento da imagem em um campo do tipo BLOB na tabela e da propriedade PictureVal do controle image (versão 9) e de algumas propriedades relativas ao layout dos controles (implementadas a partir da versão 8).
Agora, é só trabalhar o layout dos controles para que o resultado seja agradável para os usuários. Veja a figura abaixo:

artigo1

20 octobre

Material da palestra sobre "Como melhorar a aparência de seus aplicativos"

Conforme prometido, estou disponibilizando o material que apresentei na Conferência de Desenvolvedores VFP - 2008, sobre "Como melhorar a aparência de seus aplicativos".

Você pode baixar a apresentação clicando aqui.

Como o foco principal foi a utilização dos ThemedControls, veja abaixo algumas telas de aplicativos que os utilizam (clique na imagem para amplia-la):

 

Mauricio Marques_1 Paulo Henrique_1

Maurício Marques - Moshe

Paulo Henrique - PWI
   
Rick Schummer Koen Piller_4
Rick Schummer Koen Piller
10 septembre

Novo recurso no ZoomNavBar

Atendendo a inúmeros pedidos, implementei um novo recurso no controle ZoomNavBar.

Agora é possível desabilitar/habilitar um botão passando um parâmetro para os métodos AddButton e AddStackButton (no momento de sua criação) ou ainda utilizando os novos métodos SetButtonState and SetStackButtonState.

O controle ZoomNavBar faz parte dos ThemedControls que você pode baixar aqui.

Abaixo você pode conferir uma prévia do novo recurso...

ZoomNavBar_NewDisableFeature