FormCampo.vb

  1. ' FormCampo.vb — ProInf.net — feb-2012
  2. '
  3. ' Permite la creación y edición de campos definidos por el usuario
  4.  
  5. Public Class FormCampo
  6.  
  7. Private inicializado As Boolean = False
  8.  
  9. Private Sub FormCampo_Load() Handles Me.Load
  10. If Not inicializado Then
  11. inicializado = True
  12. EtiquetaCodigoLongitud.DataBindings.Add("Text", CajaCodigoLongitud, "Value")
  13. 'EntrelazarMinimoMaximo(CajaRangoMinimo, CajaRangoMaximo)
  14. 'EntrelazarMinimoMaximo(CajaMonedaMinima, CajaMonedaMaxima)
  15. 'EntrelazarMinimoMaximo(CajaTextoMinimo, CajaTextoMaximo)
  16. End If
  17. End Sub
  18.  
  19. 'Private Shared Sub EntrelazarMinimoMaximo(ByVal cajaMinimo As NumericUpDown, ByVal cajaMaximo As NumericUpDown)
  20. ' cajaMaximo.DataBindings.Add("Minimum", cajaMinimo, "Value")
  21. ' cajaMinimo.DataBindings.Add("Maximum", cajaMaximo, "Value")
  22. 'End Sub
  23.  
  24. Public Function Mostrar(
  25. Optional ByRef campo As CampoDefinido = Nothing
  26. ) As Boolean
  27. VaciarCajas()
  28. PonerCampo(campo)
  29. If Me.ShowDialog(FormGenerar) = DialogResult.OK Then
  30. campo = ObtenerCampo()
  31. Return True
  32. Else
  33. Return False
  34. End If
  35. End Function
  36.  
  37. Sub VaciarCajas()
  38. Dim ARABIGA = Numerales.Numeración_Arábiga.ToString()
  39. CajaCodigoCaracteres.Text = "ABC"
  40. CajaCodigoLongitud.Value = 1
  41. CajaLista.Text = ""
  42. CajaRangoMinimo.Value = 0
  43. CajaRangoMaximo.Value = 100
  44. RellenarCajaNumerales(CajaRangoNumeral)
  45. CajaRangoNumeral.SelectedIndex = CajaRangoNumeral.Items.IndexOf(ARABIGA)
  46. CajaMonedaMinima.Value = 0
  47. CajaMonedaMaxima.Value = 10000
  48. CajaMonedaUnidad.SelectedIndex = CajaMonedaUnidad.Items.IndexOf("1,00")
  49. CajaFechaMinima.Text = New Date(Date.Today.Year, 1, 1).ToString("dd/MM/yyyy")
  50. CajaFechaMaxima.Text = New Date(Date.Today.Year, 12, 31).ToString("dd/MM/yyyy")
  51. FormUtils.ChequearCajaLista(CajaFechaSemana, False)
  52. CajaHoraMinima.Text = "00:00"
  53. CajaHoraMaxima.Text = "23:59"
  54. CajaTextoMinimo.Value = 10
  55. CajaTextoMaximo.Value = 50
  56. CajaContadorInicio.Value = 1
  57. CajaContadorIncremento.Value = 1
  58. RellenarCajaNumerales(CajaContadorNumeral)
  59. CajaContadorNumeral.SelectedIndex = CajaContadorNumeral.Items.IndexOf(ARABIGA)
  60. 'ReiniciarMinimoMaximo(CajaRangoMinimo, CajaRangoMaximo, -1000000000, 1000000000)
  61. 'ReiniciarMinimoMaximo(CajaMonedaMinima, CajaMonedaMaxima, -1000000000, 1000000000)
  62. 'ReiniciarMinimoMaximo(CajaTextoMinimo, CajaTextoMaximo, 1, 5000)
  63. End Sub
  64.  
  65. Private Sub RellenarCajaNumerales(ByVal cajaLista As ListBox)
  66. With cajaLista.Items
  67. If .Count = 0 Then
  68. For Each clave As Numerales In Recursos.numerales.Keys
  69. .Add(clave.ToString())
  70. Next
  71. End If
  72. End With
  73. End Sub
  74.  
  75. 'Private Shared Sub ReiniciarMinimoMaximo(
  76. ' ByVal cajaMinimo As NumericUpDown, ByVal cajaMaximo As NumericUpDown,
  77. ' ByVal minimo As Integer, ByVal maximo As Integer
  78. ')
  79. ' cajaMinimo.Minimum = minimo
  80. ' cajaMaximo.Maximum = maximo
  81. ' cajaMinimo.Maximum = maximo
  82. ' cajaMaximo.Minimum = minimo
  83. 'End Sub
  84.  
  85. Sub PonerCampo(ByVal campo As CampoDefinido)
  86. If campo Is Nothing Then
  87. Else
  88. CajaNombre.Text = campo.Nombre
  89. If TypeOf campo Is CampoCodigo Then
  90. Solapas.SelectedIndex = 0
  91. PonerCampoCodigo(campo)
  92. ElseIf TypeOf campo Is CampoLista Then
  93. Solapas.SelectedIndex = 1
  94. PonerCampoLista(campo)
  95. ElseIf TypeOf campo Is CampoRango Then
  96. Solapas.SelectedIndex = 2
  97. PonerCampoRango(campo)
  98. ElseIf TypeOf campo Is CampoMoneda Then
  99. Solapas.SelectedIndex = 3
  100. PonerCampoMoneda(campo)
  101. ElseIf TypeOf campo Is CampoFecha Then
  102. Solapas.SelectedIndex = 4
  103. PonerCampoFecha(campo)
  104. ElseIf TypeOf campo Is CampoHora Then
  105. Solapas.SelectedIndex = 5
  106. PonerCampoHora(campo)
  107. ElseIf TypeOf campo Is CampoLogico Then
  108. Solapas.SelectedIndex = 6
  109. PonerCampoLogico(campo)
  110. ElseIf TypeOf campo Is CampoTexto Then
  111. Solapas.SelectedIndex = 7
  112. PonerCampoTexto(campo)
  113. ElseIf TypeOf campo Is CampoContador Then
  114. Solapas.SelectedIndex = 8
  115. PonerCampoContador(campo)
  116. End If
  117. End If
  118. End Sub
  119.  
  120. Sub PonerCampoCodigo(ByVal campo As CampoCodigo)
  121. CajaCodigoCaracteres.Text = campo.Caracteres
  122. CajaCodigoLongitud.Value = campo.Longitud
  123. CajaCodigoFormato.Text = campo.Formato
  124. End Sub
  125.  
  126. Sub PonerCampoLista(ByVal campo As CampoLista)
  127. CajaLista.Lines = campo.Elementos
  128. End Sub
  129.  
  130. Sub PonerCampoRango(ByVal campo As CampoRango)
  131. CajaRangoMaximo.Value = campo.Maximo
  132. CajaRangoMinimo.Value = campo.Minimo
  133. CajaRangoNumeral.SelectedIndex = campo.Numeral
  134. End Sub
  135.  
  136. Sub PonerCampoMoneda(ByVal campo As CampoMoneda)
  137. CajaMonedaMaxima.Value = campo.Maximo
  138. CajaMonedaMinima.Value = campo.Minimo
  139. CajaMonedaUnidad.SelectedIndex = campo.IndiceUnidad
  140. End Sub
  141.  
  142. Sub PonerCampoFecha(ByVal campo As CampoFecha)
  143. CajaFechaMaxima.Text = campo.Maximo.ToString("dd/MM/yyyy")
  144. CajaFechaMinima.Text = campo.Minimo.ToString("dd/MM/yyyy")
  145. FormUtils.ChequearCajaLista(CajaFechaSemana, campo.DiasSemana)
  146. End Sub
  147.  
  148. Sub PonerCampoHora(ByVal campo As CampoHora)
  149. CajaHoraMaxima.Text = campo.Maximo.ToString("HH:mm")
  150. CajaHoraMinima.Text = campo.Minimo.ToString("HH:mm")
  151. End Sub
  152.  
  153. Sub PonerCampoLogico(ByVal campo As CampoLogico)
  154. 'Nada que hacer
  155. End Sub
  156.  
  157. Sub PonerCampoTexto(ByVal campo As CampoTexto)
  158. CajaTextoMaximo.Value = campo.Maximo
  159. CajaTextoMinimo.Value = campo.Minimo
  160. End Sub
  161.  
  162. Sub PonerCampoContador(ByVal campo As CampoContador)
  163. CajaContadorInicio.Value = campo.Inicio
  164. CajaContadorIncremento.Value = campo.Incremento
  165. CajaContadorNumeral.SelectedIndex = campo.Numeral
  166. CajaContadorPalabra.Text = campo.Palabra
  167. CajaContadorFemenina.Checked = campo.Femenina
  168. End Sub
  169.  
  170. Function ObtenerCampo() As CampoDefinido
  171. Dim campo As CampoDefinido
  172. Select Case Solapas.SelectedIndex
  173. Case 0 : campo = ObtenerCampoCodigo()
  174. Case 1 : campo = ObtenerCampoLista()
  175. Case 2 : campo = ObtenerCampoRango()
  176. Case 3 : campo = ObtenerCampoMoneda()
  177. Case 4 : campo = ObtenerCampoFecha()
  178. Case 5 : campo = ObtenerCampoHora()
  179. Case 6 : campo = ObtenerCampoLogico()
  180. Case 7 : campo = ObtenerCampoTexto()
  181. Case 8 : campo = ObtenerCampoContador()
  182. Case Else : campo = Nothing
  183. End Select
  184. Return campo
  185. End Function
  186.  
  187. Function ObtenerCampoCodigo() As CampoCodigo
  188. Dim campo As New CampoCodigo()
  189. campo.Nombre = CajaNombre.Text
  190. campo.Caracteres = CajaCodigoCaracteres.Text
  191. campo.Longitud = CajaCodigoLongitud.Value
  192. campo.Formato = CajaCodigoFormato.Text
  193. Return campo
  194. End Function
  195.  
  196. Function ObtenerCampoLista() As CampoLista
  197. Dim campo As New CampoLista()
  198. campo.Nombre = CajaNombre.Text
  199. campo.Elementos = CajaLista.Lines
  200. Return campo
  201. End Function
  202.  
  203. Function ObtenerCampoRango() As CampoRango
  204. Dim campo As New CampoRango()
  205. campo.Nombre = CajaNombre.Text
  206. campo.Maximo = CajaRangoMaximo.Value
  207. campo.Minimo = CajaRangoMinimo.Value
  208. campo.Numeral = CajaRangoNumeral.SelectedIndex
  209. Return campo
  210. End Function
  211.  
  212. Function ObtenerCampoMoneda() As CampoMoneda
  213. Dim campo As New CampoMoneda()
  214. campo.Nombre = CajaNombre.Text
  215. campo.Maximo = CajaMonedaMaxima.Value
  216. campo.Minimo = CajaMonedaMinima.Value
  217. campo.IndiceUnidad = CajaMonedaUnidad.SelectedIndex
  218. Return campo
  219. End Function
  220.  
  221. Function ObtenerCampoFecha() As CampoFecha
  222. Dim campo As New CampoFecha()
  223. campo.Nombre = CajaNombre.Text
  224. campo.Maximo = Date.Parse(CajaFechaMaxima.Text)
  225. campo.Minimo = Date.Parse(CajaFechaMinima.Text)
  226. campo.DiasSemana = FormUtils.ObtenerIndicesChequeados(CajaFechaSemana)
  227. Return campo
  228. End Function
  229.  
  230. Function ObtenerCampoHora() As CampoHora
  231. Dim campo As New CampoHora()
  232. campo.Nombre = CajaNombre.Text
  233. campo.Maximo = Date.Parse(CajaHoraMaxima.Text)
  234. campo.Minimo = Date.Parse(CajaHoraMinima.Text)
  235. Return campo
  236. End Function
  237.  
  238. Function ObtenerCampoLogico() As CampoLogico
  239. Dim campo As New CampoLogico()
  240. campo.Nombre = CajaNombre.Text
  241. Return campo
  242. End Function
  243.  
  244. Function ObtenerCampoTexto() As CampoTexto
  245. Dim campo As New CampoTexto
  246. campo.Nombre = CajaNombre.Text
  247. campo.Maximo = CajaTextoMaximo.Value
  248. campo.Minimo = CajaTextoMinimo.Value
  249. Return campo
  250. End Function
  251.  
  252. Function ObtenerCampoContador() As CampoContador
  253. Dim campo As New CampoContador
  254. campo.Nombre = CajaNombre.Text
  255. campo.Inicio = CajaContadorInicio.Value
  256. campo.Incremento = CajaContadorIncremento.Value
  257. campo.Numeral = CajaContadorNumeral.SelectedIndex
  258. campo.Palabra = CajaContadorPalabra.Text
  259. campo.Femenina = CajaContadorFemenina.Checked
  260. Return campo
  261. End Function
  262.  
  263. Private Sub Probar() Handles BotonPrueba.Click
  264. Dim campo = ObtenerCampo()
  265. If TypeOf campo Is IReiniciable Then
  266. DirectCast(campo, IReiniciable).Reiniciar()
  267. End If
  268. CajaPrueba.Text = campo.Aleatorio()
  269. End Sub
  270.  
  271. End Class

Proinf.net