ASP .NET - Formatando fórmulas químicas


Talvez você nunca vá precisar deste recurso, mas como o mundo dá muitas voltas, e saber não ocupa espaço, neste artigo eu mostro como podemos exibir fórmulas químicas formatadas em uma páginas ASP .NET que usa o controle DataGridView.

Fórmula química representa o número e o tipo de átomos que constituem uma molécula. Os tipos de fórmulas são: molecular, eletrônica e estrutural plana.

a) Molecular: é a representação mais simples e aponta apenas quantos átomos de cada elemento químico que constitui a molécula.
Exemplos:   H2O (água),    CO2 (gás carbônico).

b) Eletrônica: essa fórmula indica os elétrons da camada de valência de cada átomo e a formação dos pares eletrônicos, e também os elementos e o número de átomos envolvidos. É conhecida também como fórmula de Lewis.
Exemplo:  H• •O• •H (água).

c) Estrutural plana: indica as ligações entre os elementos, cada par de elétrons entre os átomos é representado por um traço. Conhecida também como fórmula estrutural de Couper.
Exemplos:  H – O – H  => água         O = C = O   => gás carbônico

fonte : http://www.brasilescola.com/quimica/formulas-quimicas.htm (acessado em julho 2013)

Vamos primeiro criar uma tabela chamada Formulas no banco de dados Cadastro.mdf com a seguinte estrutura:

Vamos incluir alguns dados na tabela conforme abaixo:

Observe que as fórmulas não estão formatadas.

Criando o projeto no Visual Web Developer

Agora abra o Visual Web Developer 2010 Express Edition e no menu File clique em New Web Site;

A seguir selecione o template ASP .NET Empty Web Site e informe o nome WebSiteFormulas;

No menu WebSite clique em Add New Item e a seguir selecione o template Web Form aceitando o nome padrão: Default.aspx;

Abra página Default.aspx e no meno design inclua um controle DataGridView e em Choose Data Source selecione <New Data source...>

Selecione a conexão com o banco de dados Cadastro.mdf e clique em Next>;

Escolha a tabela Formulas e a seguir clique em Next> e depois em Finish.

Este procedimento esta vinculado a tabela Formulas ao controle DataGridView e exibindo os valores dos campos id, nome e formula.

Formatando as fórmulas

Vamos agora usar um controle DataGrid (sim podemos usar o DataGrid ainda) para exibir as fórmulas formatadas.

A seguir defina o código abaixo na página que irá definir um controle DataGrid com duas colunas:

</span><asp:DataGrid id="DataGrid1" AutogenerateColumns="False" runat="server"
BackColor="#DEBA84" BorderColor="#DEBA84" BorderStyle="None" BorderWidth="1px"
CellPadding="3" CellSpacing="2" Height="318px" Width="381px">
<Columns>
<asp:TemplateColumn HeaderText ="Nome">
  
 <ItemTemplate>
      <font face="Arial" size="3" >
         <b> <%#DataBinder.Eval(Container.DataItem, "Nome").ToString()%> </b>
      </font>
</ItemTemplate>

</asp:TemplateColumn>
<asp:TemplateColumn HeaderText ="Fórmula Química">
  
 <ItemTemplate>
      <font face="Arial" size="3" >
           <b> <%#FormataFormulaQuimica(DataBinder.Eval(Container.DataItem, "Formula").ToString())%> </b>
     </font>
</ItemTemplate>

</asp:TemplateColumn>
</Columns>
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<ItemStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" Mode="NumericPages" />
<SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
</asp:DataGrid>
</div>
</form>

Abra o arquivo code-behind Default.aspx.vb e defina o seguinte código no arquivo:

Imports System.Data.SqlClient
Imports System.Data

Partial Class _Default
    Inherits System.Web.UI.Page

    Private ds As DataSet = New DataSet

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            binddata()
        End If
    End Sub

    Sub binddata()
        Dim sqlStmt As String = "Select * from Formulas"
        Dim conString As String = "Data Source=.\sqlexpress;Initial Catalog=Cadastro;Integrated Security=True"
        Dim myda As SqlDataAdapter = New SqlDataAdapter(sqlStmt, conString)
        myda.Fill(ds)
        DataGrid1.DataSource = ds
        DataGrid1.DataBind()
    End Sub

    Function FormataFormulaQuimica(ByVal fldval As String) As String
        Dim ValoresCampos() As String = Regex.Split(fldval, "")
        Dim i As Integer = 0
        Dim strval As String = ""
        'Navega através de cada caractere de ValoresCampos
        For i = 0 To ValoresCampos.Length - 1
            'Verifica se o valor é numérico => True/False
            If IsNumeric(ValoresCampos(i)) Then
                strval = strval & "<sub>" & ValoresCampos(i) & "</sub>"
            Else
                strval = strval & ValoresCampos(i)
            End If
        Next
        Return strval
    End Function
End Clas

No código acima estamos definindo uma conexão com a tabela Formulas e vinculando-a ao DataGrid.

O método FormataFormulaQuimica() é quem realiza a formatação do campo onde as fórmulas foram incluídas.

Executando o projeto iremos obter:

Temos assim uma comparação entre as exibições das fórmulas não formatadas e usando a formatação definida na aplicação.

Pegue o projeto completo aqui: ASPNETFormulas.zip

Mat 22:41 Ora, enquanto os fariseus estavam reunidos, interrogou-os Jesus, dizendo:

Mat 22:42 Que pensais vós do Cristo? De quem é filho? Responderam-lhe: De Davi.

Mat 22:43 Replicou-lhes ele: Como é então que Davi, no Espírito, lhe chama Senhor, dizendo:

Mat 22:44 Disse o Senhor ao meu Senhor: Assenta-te à minha direita, até que eu ponha os teus inimigos de baixo dos teus pés?

Mat 22:45 Se Davi, pois, lhe chama Senhor, como é ele seu filho?

Referências:


José Carlos Macoratti