Colunas Técnicas :: Visual FoxPro

 

   Programando em Visual FoxPro e C# - Parte II    

 
  

vfpVfpeCsharp01.jpg

Pablo van Diest Originalmente publicado na Universal Thread Magazine

http://www.UTMag.com/Portuguese

Na primeira parte deste artigo vimos as similaridades e diferenças entre ambas as linguagens. Nesta segunda parte nos concentraremos em usa-las em um projeto comum.

Aproveitaremos as melhores características de ambas as plataformas para fazer funcionar um componente VFP no ambiente .NET e desvendar uma grade em uma pagina ASP.NET. Para isto veremos, mais alem de C# mesmo, uma série de particularidades do Visual Studio .NET que na realidade são praticamente idênticas a usar qualquer das linguagem suportadas por este.

Esta segunda parte do artigo esta orientada a lhe introduzir de forma simples à linguagem C#, da plataforma .NET, e algumas das bibliotecas mais usadas dentro do Framework, para um desenvolvedor VFP.

C# round 2 – Uso de componentes COM em ASP.NET

Para podermos continuar vamos necessitar criar uma pasta onde vamos colocar nosso projeto, uma vez criada a pasta vamos ver entre suas proprieadades para que possamos compartilha-la como página web, Também é necessário configurar o IIS (InterNet Information Service) vamos então até administrative tools (ferramentas administrativas). Ao abrir a janela, na parte esquerda aparecem varios elementos separados em três grupos e vamos selecionar o último desvendando seu contêudo.

Na pasta de services (serviços) devemos assegurar que o InterNet Information Services esteja no automático e se não esta funcionano, devemos ativar o serviço. Fazendo clic direto sobre o grupo chamado InterNet Information Service temos que agregar um novo serviço web para publicar a pasta compartilhada mais acima seguindo os passo do assistente.

Criar um projeto

Uma vez configurados os pontos anteriores é necessário abrir o .NET, vamos criar um novo projeto e ao abrir a caixa de dialogo vamos selecionar um projeto em Visual C# a esquerda e uma aplicação web ASP.NET, é necessário indicar sobre a pasta que vai trabalhar e em seguida simplesmente aceitar. Uma vez que o projeto se abre, se abre um formulário web em branco chamado Webform1.aspx.

Cc564881.vfpVfpeCsharp201(pt-br,MSDN.10).jpg

Figura 1: Criação de um novo projeto

Figura 2: Toolbox de VS.NET

Figura 2: Toolbox de VS.NET

Na parte esquerda da tela aparece uma ToolBox de onde se instalarão os objetos no formulário web, vamos selecionar uma grade de dados e vamos inseri-la no webform.

Configurar uma Grade

A manipulação das grades é de importância fundamental para se poder mostrar o resultado de uma consulta, e por isso que veremos como configurar a grade do príncipio ao fim. Uma vez que se tenha colocado uma grade no documento web, é necessário configurar algumas propriedades, sem dúvida a grade tem muitas possibilidades de configuração e vamos explorar as mais interessantes.

Para poder utilizar o assintente de configuração das grades é necessário clicar com o botão direito e selecionar a opção Property Builder.

E então nesta pasta se configura as colunas visíveis, cada coluna se adiciona selecinando o tipo de coluna na lista a esquerda e passando-a para a lista a direita. Uma vez adicionada todas as colunas é necessário completar o Header text (Texto do cabeçalho) e o Data field (campo associado).

Levando em conta que o titulo que esta na parte superior da página chamado Create columns automatically at run time (criar as colunas automaticamente em tempo de execução) não deverá estar selecionado, já que você adicionará as colunas da tabela associada a grade depois das colunas configuradas manualmente

Cc564881.vfpVfpeCsharp203(pt-br,MSDN.10).jpg

Figura 3: Propriedades da grade

Nesta pasta se configura o Paging o Paginador, é o mesmo que dizer se a consulta tráz 20 registro e você quer que a grade não mostre mais que 10 aparecerá habilitada a flecha de seguinte > e ao pressiona-la ela mostrará os 10 registros seguintes.

Cc564881.vfpVfpeCsharp204(pt-br,MSDN.10).jpg

Figura 4: Paginação de resultados

Esta é a pasta que que mais afeta a apresentação da grade já que nesta pasta se configuram as cores, fontes e tamanhos dos elementos da grade por item e por coluna.

Cc564881.vfpVfpeCsharp205(pt-br,MSDN.10).jpg

Figura 5: Formato da grade

Ao desmarcar a opção Itens se pode configurar tanto o item normal como o alternativo assim também como o selecionado, isto permite indicar a grade que fonte, tamanho e cor de frente e fundo se deseja utilizar em cada caso, se por exemplo se coloca que o back color de um item normal é branco e do item alternativo é cinza claro a grade mostra uma linha cinza separada por uma linha branca, igual ao procedimento se aplica a propriedade DynamicBackColor no Visual FoxPro.

Também esta coleção de colunas que ao desmarcar mostra todas as colunas configuradas na pasta columns, se pode detalhar alguma propriedade específica de uma coluna, como cor e fundo, a fonte mais grande, o texto em negrito, ou qualquer outra configuração que afete únicamente a referida coluna.

Esta última pasta permite configurar o tipo e espessura das bordas da grade e suas linhas

Cc564881.vfpVfpeCsharp206(pt-br,MSDN.10).jpg

Figura 6: Bordes da grade

Passe-se parametros a uma página

Como já vimos, se utiliza: Reponse.Redirect() para chamar uma página, ao chamar uma página o código que esta debaixo não se executa devido a redirecionar o código para outra página webform. O Modo de passar um parametro não é tão comodo como no Visual FoxPro, já que tem de saber o nome do parametro que se vai passar o valor e a ordem do mesmo como por exemplo:

Reponse.Redirect("minhapagina.aspx?parametro1=valor&?parametro2=outrovalor")

O nome de cada parametro esta precedido por um sinal de interrogação e seguido de um sinal de igual com o valor correspondente, para separar cada parametro se utiliza o sinal &.

Ler os parametro de uma página

Para que se possa ler os parametros que tenham sido enviados por outra página é necessário utilizar Request.QueryString() que devolve o valor do parametro desejado.

Suponhamos que se deseja passar de uma página para outra o código e o Apelido-Nome de usuário que acaba de se logar, então neste caso parametro1 é o código e parametro2 é o Apelido-Nome.

Convert.ToInt32(Request.QueryString["parametro1"].ToString());
apelido = Request.QueryString["parametro2"].ToString();

Gerar um XML no VFP para ser lido por C#

Define Class Clientes as session OLEPUBLIC
   Procedure BuscarClientes
   Local lcXml as String
   Select * from Clientes into cursor Cur_Clientes
   CursorToXml("Cur_Clientes", "lcXml",1,32,"1")
   Close Tables All
   Return lcXml
EndDefine

Figura 7: Adicionar referências

Figura 7: Adicionar referências

Devido ao nome do componente estar relacionado com o nome do projeto, vamos supor que o projeto se chama teste, com a classe se chama clientes no Visual FoxPro se instância como CreateObjet("Teste.Clientes").

Incorporar uma referência COM ao projeto

É necessário criar uma referência no projeto para poder acessar os serviços de componentes criados com Visual FoxPro, isto se fáz através do Solution Explorer que é encarregado de administrar os projetos simultaneos que estão em desenvolvimento.

Entre as opções do projeto estão as referências, é necessário dar um click com o botão direito para desconectar o menu e poder selecionar a primeira opção chamada Add Reference (Adicionar Referência).

Para adicionar uma referência o componente do Visual FoxPro é necessário selecionar a pasta chamada COM onde temos listados todos os componentes registrados.

Cc564881.vfpVfpeCsharp208(pt-br,MSDN.10).jpg

Figura 8: Selecionando o componente COM

Ao dar duplo click em um componente aparece uma lista abaixo das referências COM relacionadas ao projeto.

Cc564881.vfpVfpeCsharp209(pt-br,MSDN.10).jpg

Figura 9: Componentes COM selecionados

Chamar o componente pelo C#

prueba.clientes oObj = new prueba.clientesClass();
xml = oObj.BuscarClientes()dsDatos.ReadXml( new System.IO.StringReader(xml));
// Associar o DataSet com os dados da grade
this.grilla.DataSource = dsDatos.Tables[0];
this.grilla.AutoGenerateColumns = true;
this.grilla.DataBind();
DataSet dsDatos = new DataSet();
String xml = "";

Conclusão

Como pudemos ver, a interação entre o Visual FoxPRo e C# é completa, a compatibilidade entre ambos é possível por meio dos documentos XML os quais proporcionan uma ferramenta poderosa para unir estes dois mundos tão diferentes como são o Visual FoxPro e suas tabelas DBF's com .NET e seus DataSet's

Na próxima parte veremos mais detalhadamente de como utilizar o novo objeto estrela do Visual FoxPro v8 chamado XmlAdapter e utilizaremos o controle de erros estruturados com Try - Catch - Finally - EndTry. Veremos como passar várias tabelas de componente de negógios para a camada de usúario e como atualizar multiplas tabelas na camada de dados.

Pablo van Diest (Buenos Aires, Argentina) é Desenvolvedor Senior na Merino Aller, uma compahia produtora de software ERP para América Latína e Espanha. Pode ser contactado em pablov@merino.com.ar.      

   

Faça o download deste documento:

Visual FoxPro e C# - Parte 2 

downl.gif  formato Word, 154 Kb