none
Adicionar Hadles atraves de classes RRS feed

  • Pergunta

  • <!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0cm; margin-right:0cm; margin-bottom:10.0pt; margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-fareast-language:EN-US;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page Section1 {size:595.3pt 841.9pt; margin:70.85pt 3.0cm 70.85pt 3.0cm; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

    Ola pessoal estou com uma duvida cabeluda, mas se der certo vai ficar legal.

    Preencho um dataset através de um recordset, esse dataset esta “conectado” com um BindingSource1, tenho meus textbox bonitinhos la na tela, so que, para ficar configurando cada textbox é meio complicado e eu como so meio preguiçoso utilizo uma função que, pega o que esta escrito na tag do textBox e define o BindingSource1, através desta linha

    TxtBox.DataBindings.Add("Text" , Binding, TxtBox.Tag)

    Para que o maxlength do textbox tbm seja configurado utilizo o recordset para analizar o tipo de dado e setar o maxlength tbm.

    If R.Fields(TxtBox.Tag).Type = 133 Then TxtBox.MaxLength = 10 'data

    Este é um exemplo para setar o maxlength do textbox com campo data

    Até ai ok, mas o problema é com data, aparece a data com a hora junto, uma solução seria quando estiver configurando o binding, na mesma hora formatar o textbox com data, essa seria a primeira solução que imagino funcionar.

    Consegui resolver isso indo no evento change do textbox criei a seguinte linha

    If Not IsDate(Txt_Nascimento.Text) Or Txt_Nascimento.ReadOnly = False Then Exit Sub

    Txt_Nascimento.Text = FormatDateTime(Txt_Nascimento.Text, DateFormat.ShortDate)

    Mas axei meio um trabalho brasal, tendo outro ponto de vista que seria uma segunda solução interessante é que nessa função eu adicionar um Handles quando encontrasse um textbox do tipo data já adicionasse um Handles utilizando essa classe, mas teria como criar isso?, já tentei e não consegui.

    Poderia ser feito no proprio form, mas a intenção é a propria função defina isso evitando trabalho repetitivos, não ficar configurando cada tela, se o sistema já identifica se é data, e define o MaxLength, pq não formatar.

    Caso alguem tenha uma ideia melhor fico grato.

    sexta-feira, 20 de novembro de 2009 19:25

Todas as Respostas

  • Everton, o DataSet retornado do banco de dados possui uma lista de colunas, e cada objeto que representa as suas colunas possui uma propriedade DataType , acho que poderia ser uma boa você olhar para essa propriedade na hora de formatar os textbox.

    public partial class Form1 : Form
    {
        //seu dataset com dados
        DataSet x = new DataSet();
        public Form1()
        {
            InitializeComponent();
            //iteração em todos os controles da tela
            foreach (Control var in this.Controls)
            {
                TextBox tx = var as TextBox;
                if (tx != null)
                foreach (DataTable var in x.Tables)
                {
                     if(var.Columns.Contains(tx.Tag))
                         //faca um metodo que formata seu TextBox
                        //Conforme o Tipo de dado
                 }
            }
        }
    }
    não costumo fazer nada dinamico assim em meus forms, faço tudo na mão mesmo statico.

    Abraço.
    segunda-feira, 30 de novembro de 2009 13:31