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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [31] 32
301  Programación / .NET (C#, VB.NET, ASP) / Re: Como crear un array de controles desde un módulo dentro de un control (Panel) en: 23 Septiembre 2015, 17:41 pm
Ok, gracias Elektro

Por curiosidad he probado de hacer algo parecido con el código que expuse al principio. A ver que te parece  ::)


Código
  1. Module Module1
  2.    Dim lblEtiqueta(4) As Label
  3.    Sub CrearPanel(ByVal pnl As Object, ByVal Disponible As Boolean)
  4.        Dim Starlbl As New Point(x:=10, y:=20)
  5.        pnl.backcolor = Color.DarkGray
  6.        If Disponible Then
  7.  
  8.            For I As Integer = 0 To 3
  9.                lblEtiqueta(I) = New Label
  10.                lblEtiqueta(I).Width = 15
  11.                lblEtiqueta(I).Height = 15
  12.                lblEtiqueta(I).BackColor = Color.Gray
  13.                lblEtiqueta(I).Location = Starlbl 'posición X e Y del cuadro
  14.                pnl.Controls.Add(lblEtiqueta(I)) 'Crea el label
  15.                Starlbl.X += 20
  16.            Next
  17.        Else
  18.            Try
  19.                For Index As Integer = 0 To 3
  20.                    lblEtiqueta(Index).Dispose()
  21.                Next Index
  22.            Catch ex As Exception
  23.            End Try
  24.        End If
  25.    End Sub
  26. End Module
  27.  
  28.  


Para llamar uso:
(para mostrar los Labels)
Código
  1. CrearPanel(Panel1, True)

(para quitar los labels)
Código
  1. CrearPanel(Panel1, False)
302  Programación / .NET (C#, VB.NET, ASP) / Re: Como crear un array de controles desde un módulo dentro de un control (Panel) en: 23 Septiembre 2015, 15:54 pm
Gracias muy buena respuesta, me has resuelto todas las dudas.;-)

Y lo del canvas es lo que buscaba, creía que el equivalente en WPF era el stackpanel  :P
303  Programación / .NET (C#, VB.NET, ASP) / Como crear un array de controles desde un módulo dentro de un control (Panel) en: 22 Septiembre 2015, 19:36 pm
Hola amigos

Hasta ahora he estado usando Windows Forms, pero para conseguir un aspecto gráfico más bonito en mi aplicación he decidido usar WPF. El problema es que cambian algunos eventos y propiedades y otras cosas y tengo que ir investigando.

Me ha pasado que ya tenía una apliación hecha en Windows Forms y he ido pasado el código a WPF pero resulta que concretamente esto no lo he sabido resolver.

En Windows Forms creé un Panel y un array de controles con Labels. El panel se crea desde un módulo que he llamado (modCrearPanel).  El módulo también tiene eventos y más cosas pero no viene a cuento. La cuestión es poder crear los Labels dentro de un control StackPanel en WPF.


- Primero: Creo un Panel o StackPanel en el Windows Forms y en MainWindow en WPF
- Segundo paso:

EN WINDOWS FORMS
(no es el código original, es una simplificación)
Código
  1. Module Module1
  2.    Dim Etiqueta As New Label
  3.    Dim lblEtiqueta(4) As Label
  4.    Sub CrearPanel()
  5.        Dim Y As Integer = 20
  6.        Dim X As Integer
  7.        Form1.Panel1.BackColor = Color.DarkGray
  8.        X = 10 'valor X inicial
  9.        For I as Integer = 0 To 3
  10.            lblEtiqueta(I) = New Label
  11.            lblEtiqueta(I).Width = 15
  12.            lblEtiqueta(I).Height = 15
  13.            lblEtiqueta(I).BackColor = Color.Gray
  14.            lblEtiqueta(I).Location = New Point(X, Y) 'posición X e Y del cuadro
  15.            Form1.Panel1.Controls.Add(lblEtiqueta(I)) 'Crea el label
  16.            X = X + 20
  17.        Next
  18.    End Sub
  19. End Module
  20.  

CON WPF (NO FUNCIONA)
Código
  1. Module Module1
  2.    Dim Etiqueta As New Label
  3.    Dim lblEtiqueta(4) As Label
  4.    Dim Main As MainWindow
  5.    Public Sub CrearPanel()
  6.        Dim Y As Integer = 10
  7.        Dim X As Integer
  8.        Main.StackPanel1.Background = Brushes.DarkGray
  9.        X = 10
  10.        For i As Integer = 0 To 3
  11.            lblEtiqueta(i) = New Label
  12.            lblEtiqueta(i).Background = Brushes.Gray
  13.            lblEtiqueta(i).Width = 15
  14.            lblEtiqueta(i).Height = 15
  15.            lblEtiqueta(i).Margin = New Thickness(0, X, Y, 0)
  16.            X = X + 20
  17.            Main.StackPanel1.Children.Add(lblEtiqueta(i))
  18.        Next i
  19.        Main.Show()
  20.    End Sub
  21. End Module


Para crear el Penel se llama desde el Load o Loaded en WPF a CrearPanel.

Con toda seguridad el problema está en la forma de poder hacer referencia al StackPanel1 que se encuentra en MainWindow. No se como se hace.


Gracias por ayuda



Encontré la forma   :laugh:


Código
  1. Module Module1
  2.    Dim Etiqueta As New Label
  3.    Dim lblEtiqueta(4) As Label
  4.    Private app As Application
  5.    Private Main As MainWindow
  6.    Public Sub CrearPanel()
  7.        Dim Y As Integer = 10
  8.        Dim X As Integer
  9.        app = System.Windows.Application.Current
  10.        Main = CType(app.MainWindow, MainWindow)
  11.  
  12.        Main.StackPanel1.Background = Brushes.DarkGray
  13.        X = 10
  14.        For i As Integer = 0 To 3
  15.            lblEtiqueta(i) = New Label
  16.            lblEtiqueta(i).Background = Brushes.Gray
  17.            lblEtiqueta(i).Width = 15
  18.            lblEtiqueta(i).Height = 15
  19.            lblEtiqueta(i).Margin = New Thickness(0, X, 0, Y)
  20.            X = X + 20
  21.            Main.StackPanel1.Children.Add(lblEtiqueta(i)) 'Crea el label
  22.        Next i
  23.    End Sub
  24. End Module



Esto es lo que había que añadir al código para poder hacer referencia a objetos creados en MainWindow

Código
  1.    Private app As Application
  2.    Private Main As MainWindow
  3.    Public Sub CrearPanel()
  4.        app = System.Windows.Application.Current
  5.        Main = CType(app.MainWindow, MainWindow)
  6.       Main.StackPanel1.Background = Brushes.DarkGray
  7. End Sub
  8.  

Encontré la solución aquí:
https://msdn.microsoft.com/es-es/library/vstudio/ms750944%28v=vs.100%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

Ahora que lo he conseguido hacer solo falta colocar correctamente los labels ya que en susitución a "Location"  he usado "Margin" y no funciona igual. Veré a ver  :-\

Saludos

304  Programación / .NET (C#, VB.NET, ASP) / No puedo obtener estadística de subida y bajada de red en XP en: 15 Septiembre 2015, 19:32 pm
Hola,

Con VB.Net 2010 y utilizando System.Net.NetworkInformation obtengo el valor de datos de subida y bajada de mi conexión.

El caso es que me funciona en Vista y Windows7  pero no en XP.

Esta es la función que he utilizado:

Código
  1. Public Class InformationNetWork
  2. Dim Estado As String
  3. Dim DatosRecibidos As String
  4. Dim DatosEnviados As String
  5.  
  6.    Public Function EnumerateNetwok()
  7.        Dim properties As System.Net.NetworkInformation.IPGlobalProperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
  8.        Dim ipstat As System.Net.NetworkInformation.IPGlobalStatistics = properties.GetIPv4GlobalStatistics()
  9.  
  10.  
  11.        '//Estado de red
  12.        Dim ipv4Stats As System.Net.NetworkInformation.IPv4InterfaceStatistics
  13.        ipv4Stats = System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces(0).GetIPv4Statistics
  14.  
  15.  
  16.        DatosRecibidos = ipv4Stats.BytesReceived.ToString
  17.        DatosEnviados = ipv4Stats.BytesSent.ToString
  18.  
  19.  
  20.        '//Estado Conexión
  21.  
  22.        Dim ipv4Time As System.Net.NetworkInformation.IPGlobalProperties = System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties()
  23.        Try
  24.            Dim n = ipv4Time.GetActiveTcpConnections().Cast(Of System.Net.NetworkInformation.TcpConnectionInformation).First(Function(el) el.State)
  25.            Estado = n.State
  26.        Catch ex As Exception
  27.            Estado = "Desconectado"
  28.        End Try
  29.        Return 0
  30.    End Function
  31.  
  32.  
  33.  
  34.    Public Property DatesRecibidos As String
  35.        Get
  36.            Return DatosRecibidos
  37.        End Get
  38.        Set(ByVal value As String)
  39.        End Set
  40.    End Property
  41.    Public Property DatesEnviados As String
  42.        Get
  43.            Return DatosEnviados
  44.        End Get
  45.        Set(ByVal value As String)
  46.        End Set
  47.    End Property
  48. End Class
  49.  

Y para llamarlo hago lo siguiente:

Código
  1.  
  2. Public Class Form1
  3. Dim Subida As Decimal
  4.    Dim Bajada As Decimal
  5.    Dim OldSubida As Decimal
  6.    Dim OldBajada As Decimal
  7.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  8.        Dim InfoNet As New InformationNetWork
  9.        InfoNet.EnumerateNetwok()
  10.  
  11.  
  12.        Label4.Text = FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2) & " MB"
  13.        Label5.Text = FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2) & " MB"
  14.        If OldSubida <> Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) Then
  15.            Label6.Text = Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) + OldSubida & " MB"
  16.            Label7.Text = Convert.ToDecimal(FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2)) + OldBajada & " MB"
  17.            Label9.Text = (Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) + OldSubida) + _
  18.                (Convert.ToDecimal(FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2)) + OldBajada) & " MB"
  19.  
  20.            Subida = Convert.ToDecimal(FormatNumber(((InfoNet.DatesEnviados / 1024 / 1024)), 2)) + OldSubida
  21.            Bajada = Convert.ToDecimal(FormatNumber(((InfoNet.DatesRecibidos / 1024 / 1024)), 2)) + OldBajada
  22.        End If
  23.    End Sub
  24.  
  25. End Class
305  Programación / .NET (C#, VB.NET, ASP) / Re: Cambio el cursor y se ve en blanco y negro en: 15 Septiembre 2015, 17:51 pm
Corrígeme si me equivoco al hacer suposiciones, pero deduzco que lo que hiciste fue simplemente copiar y pegar en la class principal el código de ambas classes, de esta forma:
No te equivocas jeje, es verdad, tendría que haberlo metido en un módulo. Fallo de novatos  :xD

En cuanto a lo de WPF. Pues he hecho algunas pruebas y lo he usado.. muy poco no, nada en absoluto. Mi primeros intentos fue porque leí maravillas con respecto a su capacidad gráfica y que podías personalizar los controles. Eso es algo que a mí me gusta hacer. El problema es que no he conseguido personalizar los controles en general, es decir, no tener que estar estableciendo la configuración gráfica para cada control, y de este modo establecer una aspecto gráfico uniforme y cosntante en toda la aplicación. He encontrado ejemplos en la red pero no me han funcionado, supongo que no habré hecho algo bien.

Más adelante, un día de estos crearé un nuevo tema y preguntaré sobre esto en cuestion, poniendo el código y el método que he usado y haber si alguien me ayuda con este tema. Mientras tanto usaré el form clásico. Poco a poco se va llenando el bote.
 
Saludos


306  Media / Juegos y Consolas / Re: ¿Porqué se crean versiones de un juego distintas para Europa, USA y Asia? en: 8 Septiembre 2015, 19:06 pm
Hasta en los juegos tienen que meter la política >:(

307  Programación / Programación Visual Basic / Re: Ayuda con ListBox ?? principiante :) en: 8 Septiembre 2015, 18:46 pm
Hola

El ListBox no es un control hecho para trabajar con directorios.


Lo más básico es usar :
-------------
DriveListBox
DirListBox
FileListBox
-----------



DriveListBox  muestras las unidades de disco duro y DVD/CD- ROM

DirListBox muestra los las carpeta que contienen las unidades de disco

FileListBox muestra los archivos que contienen las carpetas


http://www.recursosvisualbasic.com.ar/htm/tutoriales/control_drive_dir_file.htm



Otra opción más complicada es usar el control TreeView que no está disponible por defecto en el cuadro de herramientas de VB6. Desde Proyecto/Componentes debes cargar el componente"Microsoft Windows Common Controls 6.0" cuyo archivo OCX es MSCOMCTL.OCX. Es decir, si usas este componente tu aplicación tendrá dependencia con este archivo, si no lo encuentra dará error.

Puedes encontrar muchos ejemplos en la red:

http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/334-listar-directorios-en-treeview.htm







 



 
308  Media / Juegos y Consolas / ¿Porqué se crean versiones de un juego distintas para Europa, USA y Asia? en: 8 Septiembre 2015, 17:49 pm
Jugando a viejos juegos de MAME32 he descubierto que se hacía ya en aquel entonces tres versiones de un juego cuya dificultad o contenido podía cambiar según fuera para Europa, Asia y EEUU.

Me he encontrado que un mismo juego en japonés iba más rápido y era más difícil que en la versión para Europa. No se si es que pensaban que es que en Europa somos tontos o que. También puede ser porque el juego para máqunas estaban pensados para recaudar dinero con la excusa del entretenimiento y pudiera ser que había un afán de recaudar más en Japón que en Europa. Es decir, que la dificultad era mayor para evitar que el jugador durase más tiempo jugando y obligarle a introducir de nuevo una moneda.

Luego está en juegos actuales lo del NTSC y PAL. No entiendo lo de usar diferentes frecuencias en un sitio que en otro También que trucos que funcionan en EEUU o Japón no funcionen en Europa y cosas así. Creo que hoy en día también la dificultad del juego puede cambiar.

309  Programación / Programación Visual Basic / Re: vb modificar datos list1 a archivo random txt en: 8 Septiembre 2015, 17:01 pm
Puede que sea porque estás usando el mismo número de archivo #1

Prueba a usar Freefile:
Código
  1. Dim intFile as Integer
  2. intFile = Freefile
  3. ...
  4. Open App.Path & "\Indices.txt" For Binary As intFile
  5.  
310  Programación / .NET (C#, VB.NET, ASP) / Re: Cambio el cursor y se ve en blanco y negro en: 8 Septiembre 2015, 16:51 pm
Gracias, el código va perfecto.

Tan sólo un problema me ha dado y es el siguiente. He usado un Form simple en VisualBasic.Net 2010 y tras copiar y pegar tu código ocurría el siguiente error:

Código:
La clase Form1 se puede diseñar, per no es la primera clase de archivo.
Visual Studio requiere que los diseñadores utilicen la primera clase del archivo.
Mueva el código de clase para convertirla en la primera clase del archivo y vuelva a intetar cargar el diseñador de nuevo.

No se podía ver el diseño del form.

Por ello,si me lo permites, he reducido y cambiado el orden de tu código. También he usado el evento MouseMove en lugar de Label1_MouseEnter y Label1_MouseLeave, ya que el Label que uso en mi programa se crea en tiempo real y es una matriz de control. Creo el evento mediante código y prefiero crear sólo un evento en lugar de dos. Funciona igual. También he cambiado "{0}.ani" por "{0}.cur" ya que mi cursor no es animado. Espero que no te importe.



Código
  1. Imports System
  2. Imports System.ComponentModel
  3. Imports System.IO
  4. Imports System.Runtime.InteropServices
  5. Imports System.Windows.Forms
  6.  
  7. Public Class Form1
  8.  
  9.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  10.  
  11.    End Sub
  12.  
  13.    Private Sub Label1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseMove
  14.        Static cur As Cursor
  15.  
  16.        If cur Is Nothing Then
  17.            cur = CursorUtil.LoadCursorFromResource(My.Resources.Resource1.Cursor1)
  18.        End If
  19.  
  20.        ' Asegurarse de liberar el objeto cuando sea necesario...
  21.  
  22.        DirectCast(sender, Label).Cursor = cur
  23.    End Sub
  24. End Class
  25.  
  26.  
  27. Public NotInheritable Class CursorUtil
  28.    <DllImport("User32.dll", CharSet:=CharSet.Ansi, BestFitMapping:=False, ThrowOnUnmappableChar:=True, SetLastError:=True)>
  29.    Public Shared Function LoadCursorFromFile(ByVal filepath As String) As IntPtr
  30.    End Function
  31.  
  32.    Public Shared Function LoadCursorFromResource(ByVal resource As Byte(), Optional ByVal cleanTempFile As Boolean = True) As Cursor
  33.  
  34.        Dim tmpFilepath As String = String.Format("{0}.cur", Path.GetTempFileName)
  35.  
  36.        Try
  37.            Using fs As New FileStream(tmpFilepath, FileMode.Create, FileAccess.Write, FileShare.Read)
  38.                fs.Write(resource, 0, resource.Length)
  39.            End Using
  40.  
  41.            Dim result As IntPtr = LoadCursorFromFile(tmpFilepath)
  42.            Dim win32Err As Integer = Marshal.GetLastWin32Error
  43.  
  44.            If result = IntPtr.Zero Then
  45.                Throw New Win32Exception([error]:=win32Err)
  46.            Else
  47.                Return New Cursor(result)
  48.            End If
  49.  
  50.        Catch ex As Exception
  51.            Throw
  52.  
  53.        Finally
  54.            If (cleanTempFile) AndAlso (File.Exists(tmpFilepath)) Then
  55.                File.Delete(tmpFilepath)
  56.            End If
  57.  
  58.        End Try
  59.  
  60.    End Function
  61.  
  62. End Class


Esperaba no tener que usar una función API. No entiendo como no se permite usar cursores en color, la verdad.

Páginas: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [31] 32
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines