BIORRITMOS
[Programa base para el cálculo de biorritmos]
Fecha: domingo 29 de Junio de 2003
(07/Jul/2003)
Autor: Jordi del Rio [email protected]
El código aqui presentado no es ninguna maravilla de la "ciencia y de la técnica" solo se trata de un programa base para el cálculo de biorritmos. Despu�s lo adorn�is seg�n os plazca.
El código original estaba en C# y en Ingles, así que como he podido (todo mi ingles se resume ha haber trabajado de camionero en ruta internacional ) lo he traducido al castellano ( rectifico, al catalán que es como aparece en la aplicación que estoy construyendo y luego al castellano). A parte de los 3 biorritmos clásicos he añadido 6 más. Los primarios son los más conocidos (f�sico, intelectual y emocional) los secundarios, son combinaciones de los primarios. El ciclo de la Pasi�n p.e. surge de la media ente el f�sico y el emocional. Finalmente he añadido 4 , llamados superiores, Intución, Estetica, Autoconsciencia y espritualiad (aqui anoto que estos últimos solo sirven para "obsesos" como un serevidor de las paraciencias, astrologia, etc).
"Anem per feina" que decimos los catalanes , es decir, "manos a la obra"
Ingredientes básicos :
2 datetimepicker, Uno para la fecha de nacimiento y otro para la fecha actual o que desemos calcular
1 textbox, Para el nombe (no sirve de mucho pero adorna el programa)
1 PictureBox :. Donde se dibujarán los ciclos ( "La madre del cordero", el arroz de la paella)
1 label : Donde pondremos los dias que llevamos vividos,
Labels, al gusto de cada uno si queremos adornar el biorritmo con etiquetas que nos indiquen el dia exacto etc (como la sal en la vida), Yo No las he puesto me limito a presentar la base del programa
Public Class Form1 Inherits System.Windows.Forms.Form #Region " C�digo generado por el Dise�ador de Windows Forms " Public Sub New() MyBase.New() 'El Dise�ador de Windows Forms requiere esta llamada. InitializeComponent() 'Agregar cualquier inicializaci�n despu�s de la llamada a InitializeComponent() End Sub 'Form reemplaza a Dispose para limpiar la lista de componentes. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Requerido por el Dise�ador de Windows Forms Private components As System.ComponentModel.IContainer 'NOTA: el Dise�ador de Windows Forms requiere el siguiente procedimiento 'Puede modificarse utilizando el Dise�ador de Windows Forms. 'No lo modifique con el editor de c�digo. Friend WithEvents BioCanvas As System.Windows.Forms.PictureBox Friend WithEvents BoxEmoc As System.Windows.Forms.CheckBox Friend WithEvents BoxMental As System.Windows.Forms.CheckBox Friend WithEvents BoxFisic As System.Windows.Forms.CheckBox Friend WithEvents BoxIntu As System.Windows.Forms.CheckBox Friend WithEvents BoxEst As System.Windows.Forms.CheckBox Friend WithEvents BoxAutoC As System.Windows.Forms.CheckBox Friend WithEvents BoxEsp As System.Windows.Forms.CheckBox Friend WithEvents BoxPasion As System.Windows.Forms.CheckBox Friend WithEvents BoxDomini As System.Windows.Forms.CheckBox Friend WithEvents BoxSabi As System.Windows.Forms.CheckBox Friend WithEvents DataC As System.Windows.Forms.DateTimePicker Friend WithEvents FechaN As System.Windows.Forms.DateTimePicker Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents tbNombre As System.Windows.Forms.TextBox Friend WithEvents lbDiasV As System.Windows.Forms.Label Private Sub InitializeComponent() Me.BioCanvas = New System.Windows.Forms.PictureBox() Me.BoxEmoc = New System.Windows.Forms.CheckBox() Me.BoxMental = New System.Windows.Forms.CheckBox() Me.BoxFisic = New System.Windows.Forms.CheckBox() Me.BoxIntu = New System.Windows.Forms.CheckBox() Me.BoxEst = New System.Windows.Forms.CheckBox() Me.BoxEsp = New System.Windows.Forms.CheckBox() Me.BoxAutoC = New System.Windows.Forms.CheckBox() Me.BoxPasion = New System.Windows.Forms.CheckBox() Me.BoxDomini = New System.Windows.Forms.CheckBox() Me.BoxSabi = New System.Windows.Forms.CheckBox() Me.DataC = New System.Windows.Forms.DateTimePicker() Me.FechaN = New System.Windows.Forms.DateTimePicker() Me.Label1 = New System.Windows.Forms.Label() Me.Label2 = New System.Windows.Forms.Label() Me.tbNombre = New System.Windows.Forms.TextBox() Me.lbDiasV = New System.Windows.Forms.Label() Me.SuspendLayout() ' 'BioCanvas ' Me.BioCanvas.BackColor = System.Drawing.SystemColors.ActiveCaption Me.BioCanvas.Location = New System.Drawing.Point(43, 75) Me.BioCanvas.Name = "BioCanvas" Me.BioCanvas.Size = New System.Drawing.Size(337, 177) Me.BioCanvas.TabIndex = 0 Me.BioCanvas.TabStop = False ' 'BoxEmoc ' Me.BoxEmoc.ForeColor = System.Drawing.Color.Red Me.BoxEmoc.Location = New System.Drawing.Point(67, 260) Me.BoxEmoc.Name = "BoxEmoc" Me.BoxEmoc.Size = New System.Drawing.Size(81, 24) Me.BoxEmoc.TabIndex = 3 Me.BoxEmoc.Text = "Emocional" ' 'BoxMental ' Me.BoxMental.ForeColor = System.Drawing.Color.Green Me.BoxMental.Location = New System.Drawing.Point(67, 313) Me.BoxMental.Name = "BoxMental" Me.BoxMental.Size = New System.Drawing.Size(77, 24) Me.BoxMental.TabIndex = 4 Me.BoxMental.Text = "Mental" ' 'BoxFisic ' Me.BoxFisic.ForeColor = System.Drawing.Color.Blue Me.BoxFisic.Location = New System.Drawing.Point(67, 286) Me.BoxFisic.Name = "BoxFisic" Me.BoxFisic.Size = New System.Drawing.Size(81, 24) Me.BoxFisic.TabIndex = 5 Me.BoxFisic.Text = "Fisic" ' 'BoxIntu ' Me.BoxIntu.ForeColor = System.Drawing.Color.FromArgb(CType(192, Byte), CType(64, Byte), CType(0, Byte)) Me.BoxIntu.Location = New System.Drawing.Point(164, 261) Me.BoxIntu.Name = "BoxIntu" Me.BoxIntu.Size = New System.Drawing.Size(81, 24) Me.BoxIntu.TabIndex = 8 Me.BoxIntu.Text = "Intuitiu" ' 'BoxEst ' Me.BoxEst.ForeColor = System.Drawing.Color.Aqua Me.BoxEst.Location = New System.Drawing.Point(164, 284) Me.BoxEst.Name = "BoxEst" Me.BoxEst.Size = New System.Drawing.Size(81, 24) Me.BoxEst.TabIndex = 9 Me.BoxEst.Text = "Estetic" ' 'BoxEsp ' Me.BoxEsp.ForeColor = System.Drawing.Color.Magenta Me.BoxEsp.Location = New System.Drawing.Point(164, 340) Me.BoxEsp.Name = "BoxEsp" Me.BoxEsp.Size = New System.Drawing.Size(81, 24) Me.BoxEsp.TabIndex = 10 Me.BoxEsp.Text = "Espirtual" ' 'BoxAutoC ' Me.BoxAutoC.ForeColor = System.Drawing.Color.Yellow Me.BoxAutoC.Location = New System.Drawing.Point(164, 311) Me.BoxAutoC.Name = "BoxAutoC" Me.BoxAutoC.Size = New System.Drawing.Size(113, 24) Me.BoxAutoC.TabIndex = 11 Me.BoxAutoC.Text = "Auto Consciencia" ' 'BoxPasion ' Me.BoxPasion.ForeColor = System.Drawing.Color.Salmon Me.BoxPasion.Location = New System.Drawing.Point(282, 256) Me.BoxPasion.Name = "BoxPasion" Me.BoxPasion.Size = New System.Drawing.Size(81, 24) Me.BoxPasion.TabIndex = 12 Me.BoxPasion.Text = "Passi�" ' 'BoxDomini ' Me.BoxDomini.ForeColor = System.Drawing.Color.CornflowerBlue Me.BoxDomini.Location = New System.Drawing.Point(282, 284) Me.BoxDomini.Name = "BoxDomini" Me.BoxDomini.Size = New System.Drawing.Size(81, 24) Me.BoxDomini.TabIndex = 13 Me.BoxDomini.Text = "Domini" ' 'BoxSabi ' Me.BoxSabi.ForeColor = System.Drawing.Color.Khaki Me.BoxSabi.Location = New System.Drawing.Point(282, 308) Me.BoxSabi.Name = "BoxSabi" Me.BoxSabi.Size = New System.Drawing.Size(81, 24) Me.BoxSabi.TabIndex = 14 Me.BoxSabi.Text = "Sabiduria" ' 'DataC ' Me.DataC.Location = New System.Drawing.Point(44, 50) Me.DataC.MinDate = New Date(1899, 1, 1, 0, 0, 0, 0) Me.DataC.Name = "DataC" Me.DataC.ShowUpDown = True Me.DataC.TabIndex = 16 ' 'FechaN ' Me.FechaN.Format = System.Windows.Forms.DateTimePickerFormat.Short Me.FechaN.Location = New System.Drawing.Point(138, 13) Me.FechaN.MinDate = New Date(1899, 1, 1, 0, 0, 0, 0) Me.FechaN.Name = "FechaN" Me.FechaN.ShowUpDown = True Me.FechaN.Size = New System.Drawing.Size(84, 20) Me.FechaN.TabIndex = 17 ' 'Label1 ' Me.Label1.Location = New System.Drawing.Point(18, 11) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(116, 23) Me.Label1.TabIndex = 18 Me.Label1.Text = "Fecha de Nacimiento" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Label2 ' Me.Label2.Location = New System.Drawing.Point(234, 10) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(72, 23) Me.Label2.TabIndex = 19 Me.Label2.Text = "Nombre" Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'tbNombre ' Me.tbNombre.Location = New System.Drawing.Point(326, 13) Me.tbNombre.Name = "tbNombre" Me.tbNombre.Size = New System.Drawing.Size(88, 20) Me.tbNombre.TabIndex = 20 Me.tbNombre.Text = "" ' 'lbDiasV ' Me.lbDiasV.Location = New System.Drawing.Point(276, 47) Me.lbDiasV.Name = "lbDiasV" Me.lbDiasV.Size = New System.Drawing.Size(147, 23) Me.lbDiasV.TabIndex = 21 Me.lbDiasV.Text = "Dias vividos" Me.lbDiasV.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(442, 366) Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.lbDiasV, Me.tbNombre, Me.Label2, Me.Label1, Me.FechaN, Me.DataC, Me.BoxSabi, Me.BoxDomini, Me.BoxPasion, Me.BoxAutoC, Me.BoxEsp, Me.BoxEst, Me.BoxIntu, Me.BoxFisic, Me.BoxMental, Me.BoxEmoc, Me.BioCanvas}) Me.Name = "Form1" Me.Text = "Biorritmos" Me.ResumeLayout(False) End Sub #End RegionAQUI COMIENZA EL PROGRAMA
'Declaramos las variables que necesitaremos 'PAra realizar cada ciclo precisamos de matrices de puntos 'ciclos Primarios Private PuntsF(32) As Point 'Matriz de puntos para ci.Fisico Private PuntsM(32) As Point 'Matriz de puntos para ci.Intelectual Private PuntsE(32) As Point 'Matriz de puntos para ci.Emocional 'ciclos Secundarios Private PuntsP(32) As Point 'Matriz de puntos para ci.Pasional Private PuntsD(32) As Point 'Matriz de puntos para ci.Dominio Private PuntsS(32) As Point 'Matriz de puntos para ci.Sabiduria 'ciclos Superiores Private PuntsIn(32) As Point 'Matriz de puntos para ci.Intuitivo Private PuntsEst(32) As Point 'Matriz de puntos para ci.Estetico Private PuntsAu(32) As Point 'Matriz de puntos para ci.Autoconsciencia Private PuntsEsp(32) As Point 'Matriz de puntos para ci.Espiritual Private b As Integer Private DiaN, MesN, AnyN As Integer Private DataCalc As Date Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Sub PreparaGrafico(ByVal Grafic As System.Drawing.Graphics) On Error GoTo CtrlErrores 'Variables para el lapiz i relleno que utilizaremos Dim Lapiz As System.Drawing.Pen Dim rectBrush As System.Drawing.Brush Lapiz = Nothing rectBrush = Nothing '"Pas" es el resultado de dividir el area del grafico por 31 partes, simulando 31 dias Dim Pas As Integer = BioCanvas.Width / 31 Dim Meitat As Integer = BioCanvas.Height / 2 'Dividimos la anchura por la mitad Dim Rect As Rectangle 'Definim un area rectangular Rect = ClientRectangle 'Area del client Rect.Inflate(0, -BioCanvas.Height / 2) 'L'establim a la mesura del Picturebox contenidor Grafic.Clear(System.Drawing.Color.White) 'Esbablecemos un color de fondo 'Para un ciclo de 31 dias 'Recordemos que hemos dividido el grafico en 31 partes Dim i As Integer For i = 0 To 31 Dim dataAra As Boolean = (i + 1) = DataC.Value.Day If dataAra = True Then If Not tbNombre.Text = Nothing Then 'Lapiz negro y color gris de fondo Lapiz = New System.Drawing.Pen(System.Drawing.Color.Black, 1) rectBrush = New SolidBrush(Color.LightGray) 'Far�iment Grafic.FillRectangle(rectBrush, i * Pas, 0, Pas, BioCanvas.Height) Grafic.DrawRectangle(Lapiz, i * Pas, 0, Pas, BioCanvas.Height) End If Else 'Si no es la fecha Lapiz = New System.Drawing.Pen(System.Drawing.Color.Gray, 1) End If Grafic.DrawLine(Lapiz, i * Pas, 0, i * Pas, BioCanvas.Height) Lapiz = New System.Drawing.Pen(System.Drawing.Color.Gray, 1) Grafic.DrawLine(Lapiz, 0, Meitat, BioCanvas.Width, Meitat) Next Exit Sub CtrlErrores: Select Case Err.Number Case Else MsgBox(Err.Number & Err.Description & Err.Erl) End Select End Sub #Region "DibCiclo" 'C�lculo de cada Ciclo Private Function BioF(ByVal u As Integer) As Integer Return (BioCanvas.Height / 2.6 * Sin((u Mod 23) * 2 * PI / 23)) End Function Private Function BioE(ByVal u As Integer) As Integer Return (BioCanvas.Height / 2.6 * Sin((u Mod 28) * 2 * PI / 28)) End Function Private Function BioI(ByVal u As Integer) As Integer Return (BioCanvas.Height / 2.6 * Sin((u Mod 33) * 2 * PI / 33)) End Function Private Function BioIntu(ByVal u As Integer) As Integer Return (BioCanvas.Height / 2.6 * Sin((u Mod 38) * 2 * PI / 38)) End Function Private Function BioEst(ByVal u As Integer) As Integer Return (BioCanvas.Height / 2.6 * Sin((u Mod 43) * 2 * PI / 43)) End Function Private Function BioAutoCons(ByVal u As Integer) As Integer Return (BioCanvas.Height / 2.6 * Sin((u Mod 48) * 2 * PI / 48)) End Function Private Function BioEsp(ByVal u As Integer) As Integer Return (BioCanvas.Height / 2.6 * Sin((u Mod 53) * 2 * PI / 53)) End Function Private Sub BioCanvas_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles BioCanvas.Paint DibujaBios(e.Graphics) End Sub Private Sub DibujaBios(ByVal Grafic As System.Drawing.Graphics) On Error GoTo CtrlErrores Dim Lapiz As System.Drawing.Pen = Nothing Grafic.Clear(Color.White) 'Definim Color Blanc per al fons PreparaGrafico(Grafic) 'Procediment que prepara el grafic, dibuja la base '----------'Dibujo Ciclos Primarios---------------------------------------- 'dibuja el Ciclo "Fisic" If BoxFisic.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.Red, 1) Grafic.DrawCurve(Lapiz, PuntsF) End If 'dibuja el Ciclo Mental If BoxMental.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.Green, 1) Grafic.DrawCurve(Lapiz, PuntsM) End If 'dibuja el Ciclo Emocional If BoxEmoc.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.Blue, 1) Grafic.DrawCurve(Lapiz, PuntsE) End If '----------'Dibuix ciclos Secundaris--------------------------------------- 'Ciclo de la Pasio If BoxPasion.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.Salmon, 1) Grafic.DrawCurve(Lapiz, PuntsP) End If 'Ciclo del Domini If BoxDomini.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.CornflowerBlue, 1) Grafic.DrawCurve(Lapiz, PuntsD) End If 'Ciclo de la sabiduria If BoxDomini.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.Khaki, 1) Grafic.DrawCurve(Lapiz, PuntsS) End If '----------'Dibuix ciclos Superiores-------------------------------------- 'dibuja el Ciclo Intuitivo If BoxIntu.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.DarkRed, 1) Grafic.DrawCurve(Lapiz, PuntsIn) End If 'dibuja el Ciclo Estetico If BoxEst.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.Aqua, 1) Grafic.DrawCurve(Lapiz, PuntsEst) End If 'dibuja el Ciclo AutoConsciencia If BoxAutoC.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.Yellow, 1) Grafic.DrawCurve(Lapiz, PuntsAu) End If 'dibuja el Ciclo Espiritual If BoxEsp.Checked Then Lapiz = New System.Drawing.Pen(System.Drawing.Color.Yellow, 1) Grafic.DrawCurve(Lapiz, PuntsEsp) End If Exit Sub CtrlErrores: Select Case Err.Number Case Else MsgBox(Err.Number & Err.Description & Err.Erl()) End Select End Sub #End Region Private Sub Recalcular(ByVal sender As Object, ByVal e As System.EventArgs) 'Procedimiento que recalcula los puntos On Error GoTo CtrlErrores Dim I As Integer 'Contador Dim bbb As Integer 'El numero de dies viscuts Dim Bn As Integer Dim Pas As Integer = BioCanvas.Width / 31 'Obtenemos el numero de dias vividos (peque�a "chorrada" pero que sirve para entender como obtenemos el valor "BBB" que es el que precisamos para el calculo Bn = Dn(DataC.Value.Year, DataC.Value.Month, DataC.Value.Day) - Dn(FechaN.Value.Year, FechaN.Value.Month, FechaN.Value.Day) lbDiasV.Text = Bn & " Dias vividos" bbb = Dn(DataC.Value.Year, DataC.Value.Month, 1) - Dn(AnyN, MesN, DiaN) For I = 0 To 32 'Para la coordenada Horizontal (X) , vamos avanzando un "Pas" PuntsM(I).X = (I * Pas) PuntsE(I).X = PuntsM(I).X PuntsF(I).X = PuntsE(I).X PuntsIn(I).X = PuntsF(I).X PuntsEst(I).X = PuntsIn(I).X PuntsAu(I).X = PuntsEst(I).X PuntsEsp(I).X = PuntsAu(I).X PuntsP(I).X = PuntsEsp(I).X PuntsD(I).X = PuntsP(I).X PuntsS(I).X = PuntsD(I).X 'ciclos Primarios PuntsF(I).Y = Int(BioCanvas.Height / 2) - (BioF(bbb)) PuntsE(I).Y = Int(BioCanvas.Height / 2) - (BioE(bbb)) PuntsM(I).Y = Int(BioCanvas.Height / 2) - (BioI(bbb)) 'ciclos Secondarios PuntsP(I).Y = (PuntsF(I).Y + PuntsE(I).Y) / 2 PuntsD(I).Y = (PuntsM(I).Y + PuntsF(I).Y) / 2 PuntsS(I).Y = (PuntsE(I).Y + PuntsM(I).Y) / 2 'ciclos superiores PuntsIn(I).Y = Int(BioCanvas.Height / 2) - (BioIntu(bbb)) PuntsEst(I).Y = Int(BioCanvas.Height / 2) - (BioEst(bbb)) PuntsAu(I).Y = Int(BioCanvas.Height / 2) - (BioAutoCons(bbb)) PuntsEsp(I).Y = Int(BioCanvas.Height / 2) - (BioEsp(bbb)) bbb = bbb + 1 'Incrementamos en 1 los dias Next I DibujaBios(BioCanvas.CreateGraphics) Exit Sub CtrlErrores: Select Case Err.Number Case Else MsgBox(Err.Number & Err.Description & Err.Erl()) End Select End Sub Private Function Dn(ByVal Any As Integer, ByVal Mes As Integer, ByVal Dia As Integer) As Integer 'Con esta funcion, convertimos una fecha cualquiera en un valor "integer" Dim s, p As Integer s = Int((22 - Mes) / 10) p = Int((s * 12 + Mes - 14) * 30.59 + Dia) Dn = Int((Any - 1899 - s) * 365.25 + p) End Function Private Sub BoxFisic_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BoxFisic.CheckedChanged, BoxMental.CheckedChanged, BoxEmoc.CheckedChanged, BoxIntu.CheckedChanged, BoxAutoC.CheckedChanged, BoxEst.CheckedChanged, BoxEsp.CheckedChanged, BoxPasion.CheckedChanged, BoxSabi.CheckedChanged, BoxDomini.CheckedChanged 'Maravilla del VB.NET, todos los controles en los que repetimos el mismo evento los podemos agrupar 'Cada vez que el estado "chekeado/NoChekeado" canvie, recalculamos todo Recalcular(sender, e) End Sub Private Sub DataC_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataC.TextChanged 'Cade vez que variemos la fecha, se recalcular�n los ciclos Recalcular(sender, e) End Sub Private Sub FechaN_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles FechaN.Validated DiaN = FechaN.Value.Day MesN = FechaN.Value.Month AnyN = FechaN.Value.Year End Sub Private Sub FechaN_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles FechaN.KeyPress 'Si presionamos intro se producira la validacion de la fecha 'El foco pasa el control al nombre If e.KeyChar = ChrW(13) Then tbNombre.Focus() End If If e.KeyChar = ChrW(27) Then Me.Close() 'Se cierra el formulario End If End Sub Private Sub tbNombre_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbNombre.KeyPress 'Controlamos la entrada de teclas Select Case e.KeyChar Case ChrW(27) FechaN.Focus() Case ChrW(13) 'Hemos pulsado Intro tbNombre_Validated(sender, e) 'Validamos el contenido Case "a" To "z" 'Solo permitimos entrar letras Case "�" 'La � aparte (maravilla de nuestro idioma que salta el codigo ASCII) Case Else 'Cualquier otra tecla no la reconocemos e.Handled = True End Select End Sub Private Sub tbNombre_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles tbNombre.Validated 'Al validar el nombre tbNombre.Text = UCase(tbNombre.Text) 'Lo convertimos a mayusculas ( parece que queda mas bonito 'Permitimos que se dibjuen los ciclos primarios ( pa que se vea algo) BoxFisic.Checked = True BoxMental.Checked = True BoxEmoc.Checked = True Recalcular(sender, e) 'el resto lo dejamos a eleccion del usuario que vaya seleccionando ciclos segun su gusto End Sub End Class
¿ Os atreveriais a comparar los biorritmos de dos personas ?. Una pista : fijaros en como se elaboran los ciclos Pasion, Sabiduria, y maestria (ciclos secundarios).
Espero que os sea útil
Jordi
Fichero con el c�digo de ejemplo (BioCodFuente.zip - 371 KB)