|
|
|
|
|
Dicas
|
|
Visual Basic (ActiveX/Controles/DLL)
|
|
|
Título da Dica: Definir automáticamente o tamanho dos campos de acordo com a Tabela
|
|
|
|
Postada em 21/8/2006 por Daniel
Para funcionar precisa 1) que o nome dos campos da base sejam iguais aos campos do Form 2) campos especiais exeplo como label devem começar com ET_, campo data devem começar por DT_ e assim por diante basta configurar nessa linha os inicios dos campos a serem desprezados: If InStr(1, " RT_ ET_ GD_ BT_ DT_ MN_ ", " " & T_Inic & " ") = 0 Then
no form_load colocar a chamada da função passando o nome da recordset e do formulário exemplo: G_Def_Tamanho_Campos (Rc_Cli), Frm_Cliente
segue a função:
Public Function G_Def_Tamanho_Campos(Tp_Recordset As Object, TNomeObj As Object) As Boolean 'Define o tamanho maximo dos campos a serem preenchidos na tela Dim T_Ini As String, V_Tam As Integer, T_Tipo As String, T_Formato As String Dim T_Nome As String, T_Inic As String, T_Default As String, t_indice As String Dim T_Decimal As Integer, T_mask As String G_Def_Tamanho_Campos = 0 On Error Resume Next Set G_Formul = TNomeObj For Each G_Control In G_Formul.Controls T_Inic = UCase(Left(G_Control.Name, 3)) T_Ini = TypeName(G_Control) If InStr(1, " RT_ ET_ GD_ BT_ DT_ MN_ ", " " & T_Inic & " ") = 0 Then If InStr(1, " TextBox MaskEdBox Mask_Edit DBCombo DBList ComboBox ListBox SSOption OptionButton CheckBox SSCheck BDComb_Box MaskEdBox_Data MaskEdBox_DH MaskEdBox_Hora MaskEdBox_Num MaskEdBox_Int ", " " & T_Ini & " ") > 0 Then 'Se for um objeto valido T_Nome = G_Control.Name T_Default = "" T_Default = Tp_Recordset(T_Nome).DefaultValue If InStr(1, " MaskEdBox_Data MaskEdBox_DH MaskEdBox_Hora MaskEdBox_Num MaskEdBox_Int MaskEdBox Mask_Edit ", " " & T_Ini & " ") > 0 Then 'Se for um objeto valido If G_Control.Mask <> "" Then GoTo G_Def_Tamanho_Campos_continua End If If InStr(1, " SSOption OptionButton ", " " & T_Ini & " ") > 0 Then t_indice = G_Control.Index Err = 0 T_Tipo = Tp_Recordset(T_Nome).Type V_Tam = 0 'dbBigInt dbBinary dbBoolean dbByte dbChar dbCurrency dbDate dbDecimal dbDouble dbFloat dbGUID dbInteger dbLong dbLongBinary dbMemo dbNumeric dbSingle dbText dbTime dbTimeStamp dbVarBinary Select Case T_Tipo Case dbByte V_Tam = 3 Case dbBoolean V_Tam = 2 Case dbBigInt, dbBinary, dbCurrency, dbDecimal, dbDouble, dbInteger, dbLong, dbLongBinary, dbNumeric, dbSingle V_Tam = 10 Case dbDate, dbTime, dbTimeStamp V_Tam = 10 Case dbText, dbChar V_Tam = Tp_Recordset(G_Control.Name).Size Case dbMemo V_Tam = 65535 Case Else 'dbFloat dbGUID dbVarBinary V_Tam = Tp_Recordset(T_Nome).Size End Select If Err = 0 Then Select Case T_Ini Case "SSOption", "OptionButton" TNomeObj(T_Nome)(t_indice).Tag = T_Default GoTo G_Def_Tamanho_Campos_continua2 Case "Mask_Edit" Case "MaskEdBox", "MaskEdBox_Data", "MaskEdBox_DH", "MaskEdBox_Hora", "MaskEdBox_Num", "MaskEdBox_Int" T_mask = "" T_Formato = "" T_Decimal = 0 T_mask = Tp_Recordset(T_Nome).Properties("InputMask").Value T_Decimal = Tp_Recordset(T_Nome).Properties("DecimalPlaces").Value T_Formato = Tp_Recordset(T_Nome).Properties("Format").Value 'Format G_Formata_Mask T_mask, T_Formato, T_Decimal, (T_Tipo), TNomeObj(T_Nome) TNomeObj(T_Nome).Format = T_Formato If TNomeObj(T_Nome).Mask = "" And TNomeObj(T_Nome).Format = "" Then TNomeObj(T_Nome).MaxLength = V_Tam Case "BDComb_Box" Case Else TNomeObj(T_Nome).MaxLength = V_Tam End Select End If G_Def_Tamanho_Campos_continua: TNomeObj(T_Nome).Tag = T_Default TNomeObj(T_Nome).Tag = G_REMOVE_ESP(TNomeObj(T_Nome).Tag) G_Def_Tamanho_Campos_continua2: TNomeObj(T_Nome).Texto_Dica = Tp_Recordset(T_Nome).Properties("Description").Value 'user controls TNomeObj(T_Nome).ToolTipText = Tp_Recordset(T_Nome).Properties("Description").Value 'Description End If End If Next G_Control G_Def_Tamanho_Campos = -1 End Function
|
|
|
|
|