elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 ... 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 [118] 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 ... 166
1171  Programación / Desarrollo Web / Re: ¿Duda programas para crear paginas web sin saber programar nada es posible ? en: 24 Noviembre 2012, 14:56 pm
En bastantes páginas que ofrecen servicios de alojamiento Web he visto que brindan la posibilidad de instalar varios tipos de plataformas Web y plugins. 000webhost.com ofrece dicha opción.
1172  Programación / .NET (C#, VB.NET, ASP) / Re: Problema visual con la imagen de fondo del form... en: 22 Noviembre 2012, 18:44 pm
Prueba con el evento MouseWheel. Es el evento encargado de manejar el Scrolleo a través de la rueda del ratón.

Saludos!
1173  Programación / .NET (C#, VB.NET, ASP) / Re: [VS] ¿clonar evento para varios elementos? ¿FOR? en: 20 Noviembre 2012, 17:34 pm
Lo que hace NovLucker es guardar los subdirectorios de una ruta en un archivo xml serializado en funcion del Checkbox, pues si éste está checkado guarda la ruta . Posteriormente puedes acceder a dichos datos a través de GetSavedsPaths() e ir checkando los CheckBoxes.Sería algo como "tus rutas de música favoritas". Buen aporte sin duda :)

Estoy ciego, gracias HdM por aportar la solución pues no ví que se borraban los CheckBoxes dibujados al llamar a updatecheckboxes() y me lié pensando en otra cosa xD. Debería funcionar bien, ya que cargas la última ruta, obtienes los indices checkados y dibujas los Checkboxes (Todo en el evento Load) . Al quitar el método CargarPropiedades() de updatecheckboxes() te aseguras que si cargas una nueva ruta, se dibujen nuevos CheckBoxes y no haya conflictos si la cantidad es menor a la anterior.

Disfruta de la app :D
1174  Programación / .NET (C#, VB.NET, ASP) / Re: [VS] ¿clonar evento para varios elementos? ¿FOR? en: 20 Noviembre 2012, 14:27 pm
Encontré el error, es lo que te dije antes y no es por el código si no por las rutas cargadas. Esta vez te lo intentaré explicar lo mejor posible :P

cuando se inicia la App se dibujan los CheckBoxes de la ruta actual. Si cargas mas rutas a través del FolderButton() entonces se añaden mas CheckBoxes (la matriz mCheck tendrá mas índices). Hasta ahí bien. Aunque llames a CargarPropiedades() todo seguirá bien ya que tendrás los mismos índices que cuando cargaste la primera ruta.

El problema se presenta al cerrar la aplicación, pues imagínate que la ruta que cargaste al principio del programa genera 10 Checkboxes y la que cargaste con FolderButton genera 5 CheckBoxes más. Si antes de cerrar el programa tildaste el CheckBox 12,13 y 14 cuando abras la App otra vez sólo se dibujarán los CheckBoxes de la última ruta cargada (los 5 que generaste mediante FolderButton). Entonces la matriz mCheck tendrá 5 índices y le será imposible acceder al índice 12,13 y 14 pues esos índices los generaste cuando tenías 15 CheckBoxes Y AHORA TIENES 5 no los 15 que generaste por última vez (cargas el último directorio asignado a la propiedad, no los anteriores :/)

Tienes que idear un método para que se carguen las últimas rutas cargadas en el formulario, de esta forma podrás dibujar todos los CheckBoxes de ambas rutas y posteiormente comprobar si fueron tildados la última vez. Puedes hacerlo con una propiedad que guarde una matriz de cadenas String().

Espero que lo entiendas, pues el error es bastante crítico xD Si no lo entendieras pues podría ayudarte mediante código, pero estaría bien que pudieras arreglarlo pues es la mejor manera de comprender el funcionamiento del programa. Cualquier duda aquí me tienes.

Saludos!
1175  Programación / .NET (C#, VB.NET, ASP) / Re: [VS] ¿clonar evento para varios elementos? ¿FOR? en: 20 Noviembre 2012, 12:50 pm
Buenas EleKtro!

Te diría que debugeases la applicación o bien poniendo Breakpoints en los puntos que te interesa evaluar o bien llendo paso a paso por sentencia. Si cargas la app y el directorio es C:\ se dibujaran tantos CheckBoxes como directorios en C:\. Luego imaginate que cargas C:\musica, entonces se añadiran tantos CheckBox como directorios en C:\musica haya, pero claro, estas guardando en la propiedad FolderPathName el ultimo directorio cargado. Si inicias la app otra vez la propiedad que guarda el indice de los CheckBoxes checkados tendra un tamaño mayor a la que se espera pues solo estas dibujando tantos Checkbox como directorios en C:\musica, pero resulta que tambien cargas los de C:\ pues antes al cerrar la aplicación se guardaron los de C:\ y C:\musica.

No sé si ése será el error, el código parece estar bien. Ojala mis ojos fueran un debugger pero a tanto no llego xD como ultimo recurso pasame la solucion del proyecto y te busco el error.

Saludos!
1176  Programación / .NET (C#, VB.NET, ASP) / Re: [VS] ¿clonar evento para varios elementos? ¿FOR? en: 20 Noviembre 2012, 09:59 am
Cuando dibujas nuevos controles la cantidad de CheckBoxes no tiene porque ser la misma que la anterior. Si tenias 20 CheckBoxes ya que encontraste 20 subdirectorios, y luego llamas al FolderBrowserDialog() quizás tengas una mayor cantidad de Controles y por eso es por lo que obtienes un error en conjunto con la propiedad. Me explico, si antes tenias 20 CheckBoxes en la matriz y ahora encontraste 10 subdirectorios pues en la matriz tendrás 30 ya que tienes que resetearla. Otro error es que antes tuvieras el Checkbox10 activado y ahora solo tengas dibujados 7 CheckBoxes e intentes Checkar ese 10. (Ahí te salta error en lo que dijiste de la proiedad).

Para resetear la matriz llama a este método :P

No he probado el código, ni tampoco le he dado muchas vueltas (estoy en clase :P) pero te adjunto algo:
Código
  1.    Dim mCheck(0) As CheckBox
  2.  
  3.    Private Sub UpdateArray()
  4.        Array.Clear(mCheck, 0, mCheck.Length)
  5.        Array.Resize(mCheck, 0)
  6.    End Sub
  7.  

Saludos!
1177  Programación / .NET (C#, VB.NET, ASP) / Re: [VS] ¿clonar evento para varios elementos? ¿FOR? en: 20 Noviembre 2012, 00:48 am
Gracias HdM por sacar el error, pues éste es vital para el posterior funcionamiento. Para cambiar el tipo de propiedad en My.Settings hay que hacerlo de forma manual, especificando en la propiedad en el archivo Designer.Vb el tipo Integer() o Int32().

He modificado el código para que no Checkee CheckBoxes que no fueron seleccionados, ahora se trabaja con una propiedad llamada "Valores" que guarda una lista de enteros que representa los índices de los CheckBoxes que fueron tildados al cerrar el programa. Al iniciar la aplicación se dibujan los CheckBoxes y se procede a comprobar la propiedad. El código está mal estructurado, pero EleKtro, es para que puedas ver lo que hago de forma simple. Recuerda que hay que ser limpios xD

Código
  1. Public Class Form1
  2.    Dim mcheck(0) As CheckBox
  3.    Private Sub CargarPropiedades()
  4.        'Obtenemos la Lista de Enteros de los índices Checkados
  5.        Dim ListaCheckados As Int32() = My.Settings.Valores
  6.        For i As Int32 = 0 To mcheck.Length - 1 'Recorro los CheckBoxes
  7.            For Each indiceCheckado As Int32 In ListaCheckados 'Por cada indice de CheckBoxes checkados
  8.                'Como se los indices de los CheckBoxes checkados, accedo a éstos mediante el Array de los CheckBoxes
  9.                'Ej -> indiceCheckado : 3 (CheckBox3) ;
  10.                'Por lo tanto indiceCheckado - 1 = 2, mCheck(0) = check1, ... m(2) = CheckBox3
  11.                'Es decir el índice N - 1 siempre corresponderá a CheckBoxN
  12.                mcheck(indiceCheckado - 1).Checked = True
  13.            Next
  14.        Next
  15.    End Sub
  16.  
  17.    Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
  18.        Dim mCheckados(0) As Int32 'matriz que guardará los indices de los CheckBoxes checkados
  19.        Dim Cuantos As Int32 = 0 'cuantos CheckBoxes estan checkados
  20.        For i As Int32 = 0 To mcheck.Length - 1 'Recorro los CheckBoxes en busca de Checkados
  21.            If mcheck(i).Checked = True Then
  22.                Cuantos += 1
  23.                'Sumamos un indice por CheckBox checkado
  24.                Array.Resize(mCheckados, Cuantos)
  25.                mCheckados(Cuantos - 1) = i + 1 'metemos en el indice del Array el elemento Checkado (RECUERDA SE EMPIEZA DESDE 0)
  26.                'Por eso lo de Cuantos - 1 (Si tienes 7 Checkados ira desde 0 hasta 6 ...)
  27.            End If
  28.        Next
  29.        My.Settings.Valores = mCheckados 'Actualizamos la propiedades Int32()
  30.        My.Settings.Save()
  31.    End Sub
  32.    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  33.  
  34.        For i As Int32 = 0 To 20
  35.            Array.Resize(mcheck, i + 1)
  36.            mcheck(i) = New CheckBox
  37.            With mcheck(i)
  38.                .Name = "CheckBox" & i + 1
  39.                .Text = mcheck(i).Name
  40.                .Location = New Point(40, i * 40)
  41.            End With
  42.            Me.Controls.Add(mcheck(i))
  43.        Next
  44.        CargarPropiedades()
  45.    End Sub
  46. End Class
  47.  

Espero que te haya servido de ayuda,

Saludos!
1178  Programación / .NET (C#, VB.NET, ASP) / Re: [VS] ¿clonar evento para varios elementos? ¿FOR? en: 19 Noviembre 2012, 23:29 pm
El fallo está en que tu escribes CheckBox0 y cuando cargas las propiedades esperas un CheckBox1,2,3,4 no el 0 xD
Para ello cuando generes los CheckBoxes empieza desde i=0, suma i+1 a la propiedad .Name y .Text de los CheckBoxes y y al final del for suma 1 como te dije, para ReSizear el Array, a mí me funciona :S
1179  Programación / .NET (C#, VB.NET, ASP) / Re: [VS] ¿clonar evento para varios elementos? ¿FOR? en: 19 Noviembre 2012, 23:21 pm
Código
  1. ' update checkboxes
  2.    Public Sub updatecheckboxes()
  3.        Dim filesystem = CreateObject("Scripting.FileSystemObject")
  4.        Dim ThisDir = filesystem.GetFolder(My.Settings.folderpath)
  5.        Dim i As Int32 = 0
  6.        For Each folder In ThisDir.Subfolders
  7.            mCheck(i) = New CheckBox()
  8.            MessageBox.Show("test")
  9.            Me.Panel1.Controls.Add(mCheck(i))
  10.            With mCheck(i)
  11.                .Name = "Checkbox" & i +1 'De esta forma sumas 1 y tendrás CheckBox1,2,3
  12.                .Text = "CheckBox" & i+1 'Lo mismo para el nombre
  13.                .Location = New Point(10, i * 20)
  14.            End With
  15.            AddHandler mCheck(i).CheckedChanged, AddressOf LlamadaCheckBox
  16.            i = i + 1
  17.            Array.Resize(mCheck, i)
  18.        Next
  19.        CargarPropiedad()
  20.    End Sub
1180  Programación / .NET (C#, VB.NET, ASP) / Re: [VS] ¿clonar evento para varios elementos? ¿FOR? en: 19 Noviembre 2012, 23:09 pm
Nótese que actualizo la variable i y ReSizeo el Array al final del for, para que no tengas que cambiar nada.

Código
  1.  
  2. ' update checkboxes
  3.    Public Sub updatecheckboxes()
  4.        Dim filesystem = CreateObject("Scripting.FileSystemObject")
  5.        Dim ThisDir = filesystem.GetFolder(My.Settings.folderpath)
  6.        Dim i As Int32 = 0
  7.        For Each folder In ThisDir.Subfolders
  8.            mCheck(i) = New CheckBox()
  9.            MessageBox.Show("test")
  10.            Me.Panel1.Controls.Add(mCheck(i))
  11.            With mCheck(i)
  12.                .Name = "Checkbox" & i
  13.                .Text = folder.Name
  14.                .Location = New Point(10, i * 20)
  15.            End With
  16.            AddHandler mCheck(i).CheckedChanged, AddressOf LlamadaCheckBox
  17.            i = i + 1
  18.            Array.Resize(mCheck, i)
  19.        Next
  20.        CargarPropiedad()
  21.    End Sub
  22.  
Páginas: 1 ... 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 [118] 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 ... 166
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines