Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#9711
Si lo único que quieres es capturar unas cuantas teclas fuera del form puedes crear hotkeys globales:
Código (vbnet) [Seleccionar]

#Region " GlobalHotkeys Class "

   Class Shortcut
       Inherits NativeWindow
       Implements IDisposable

#Region " GlobalHotkeys Declarations "
       Protected Declare Function UnregisterHotKey Lib "user32.dll" (ByVal handle As IntPtr, ByVal id As Integer) As Boolean
       Protected Declare Function RegisterHotKey Lib "user32.dll" (ByVal handle As IntPtr, ByVal id As Integer, ByVal modifier As Integer, ByVal vk As Integer) As Boolean

       Event Press(ByVal sender As Object, ByVal e As HotKeyEventArgs)
       Protected EventArgs As HotKeyEventArgs, ID As Integer

       Enum Modifier As Integer
           None = 0
           Alt = 1
           Ctrl = 2
           Shift = 4
       End Enum
       Class HotKeyEventArgs
           Inherits EventArgs
           Property Modifier As Shortcut.Modifier
           Property Key As Keys
       End Class
       Class RegisteredException
           Inherits Exception
           Protected Const s As String = "Shortcut combination is in use."
           Sub New()
               MyBase.New(s)
           End Sub
       End Class
#End Region

#Region " GlobalHotkeys IDisposable "
       Private disposed As Boolean
       Protected Overridable Sub Dispose(ByVal disposing As Boolean)
           If Not disposed Then UnregisterHotKey(Handle, ID)
           disposed = True
       End Sub
       Protected Overrides Sub Finalize()
           Dispose(False)
           MyBase.Finalize()
       End Sub
       Sub Dispose() Implements IDisposable.Dispose
           Dispose(True)
           GC.SuppressFinalize(Me)
       End Sub
#End Region

#Region " GlobalHotkeys debugger "
       <DebuggerStepperBoundary()>
       Sub New(ByVal modifier As Modifier, ByVal key As Keys)
           CreateHandle(New CreateParams)
           ID = GetHashCode()
           EventArgs = New HotKeyEventArgs With {.Key = key, .Modifier = modifier}
           If Not RegisterHotKey(Handle, ID, modifier, key) Then Throw New RegisteredException
       End Sub
       Shared Function Create(ByVal modifier As Modifier, ByVal key As Keys) As Shortcut
           Return New Shortcut(modifier, key)
       End Function

       Protected Sub New()
       End Sub
       Protected Overrides Sub WndProc(ByRef m As Message)
           Select Case m.Msg
               Case 786
                   RaiseEvent Press(Me, EventArgs)
               Case Else
                   MyBase.WndProc(m)
           End Select
       End Sub
#End Region

   End Class

#End Region


Ejemplos de uso:

Código (vbnet) [Seleccionar]
    ' Declare the GlobalHotkey
   
    Dim WithEvents GlobalHotkey_CTRL_E As Shortcut
    Dim WithEvents GlobalHotkey_ALT_E As Shortcut
    Dim WithEvents GlobalHotkey_ALT_SHIFT_E As Shortcut

    ' Create the GlobalHotkey into a sub
   
    GlobalHotkey_CTRL_E = Shortcut.Create(Shortcut.Modifier.Ctrl, Keys.E)
    GlobalHotkey_ALT_E = Shortcut.Create(Shortcut.Modifier.Alt, Keys.E)
    GlobalHotkey_ALT_SHIFT_E = Shortcut.Create(Shortcut.Modifier.Alt Or Shortcut.Modifier.Shift, Keys.E)

    Private Sub GlobalHotkey_CTRL_E_Press(ByVal s As Object, ByVal e As Shortcut.HotKeyEventArgs) Handles GlobalHotkey_CTRL_E.Press
       MessageBox.Show("Youve pressed [CTRL + E]")
    End Sub

    Private Sub GlobalHotkey_ALT_E_Press(ByVal s As Object, ByVal e As Shortcut.HotKeyEventArgs) Handles GlobalHotkey_ALT_E.Press
       MessageBox.Show("Youve pressed [ALT + E]")
    End Sub

    Private Sub GlobalHotkey_ALT_SHIFT_E_Press(ByVal s As Object, ByVal e As Shortcut.HotKeyEventArgs) Handles GlobalHotkey_ALT_SHIFT_E.Press
       MessageBox.Show("Youve pressed [ALT +SHIFT + E]")
    End Sub


Aquí te peudes descargar el snippet:

[APORTE] Snippets (ACTUALIZADO 21/12/2012)
#9712
Por si no lo conocían aquí les dejo este magnifico control para darle un toque diferente a vuestra APP  ;D

http://www.codeproject.com/Articles/182973/The-Amazing-ProgressBar-Control

#9713
Al clickar sobre el botón azul que he señalado en la imagen (2011), se generan en tiempo real una lista de checkboxes y botones en el GroupBox de la derecha,
al clickar en uno de los botones generados en el groupbox, se parsea un texto delimitado y se añaden los items al listview.

Al clickar en otro botón azul limpio los controles del GroupBox (...controls.clear) y todo vuelve a empezar.

Bien, por cada botón azul, necesito recordar los checkboxes del GroupBox que estaban seleccionados, y los items del listview que estaban seleccionados.

Necesito recordarlo dentro del programa, no necesito que cada vez que se abra la aplicación se recuerden los elementos.

Creo que puedo hacer esto sin ayuda pero seguro que lo haría de la manera más complicada xD, me vendrían bien algunas sugerencias antes de empezar a hacerlo...

Mi pregunta es... ¿Como me recomiendan hacerlo?




EDITO:

No se si será la forma más correcta, pero bueno, así es como lo he hecho de momento:


Código (vbnet) [Seleccionar]

Public SelectedFolders As New List(Of String)

   Public Sub LlamadaCheckBox(ByVal sender As Object, ByVal e As System.EventArgs)
       Dim CheckboxN As CheckBox = CType(sender, CheckBox)
       If CheckboxN.Checked = True Then
           SelectedFolders.Add(ResourceTag & CheckboxN.Text)
       Else
           SelectedFolders.Remove(ResourceTag & CheckboxN.Text)
       End If
   End Sub



el sub que crea los controles:
Código (vbnet) [Seleccionar]
 Private Sub AddSubfolders(ByVal InputList As List(Of String))
       GroupBox_subcarpetas.Controls.Clear()

       Dim foldernum As Integer = 0
       Dim Array_Size As Integer = InputList.Count
       Dim chk_() As CheckBox
       Dim btn_() As Button
       ReDim chk_(Array_Size)
       ReDim btn_(Array_Size)

       For Each folder In InputList

           foldernum += 1
           chk_(foldernum) = New CheckBox
           chk_(foldernum).Name = "CheckBox" & foldernum
           chk_(foldernum).Text = folder
           chk_(foldernum).Top = 20 * foldernum
           chk_(foldernum).Tag = ResourceTag & chk_(foldernum).Text

           btn_(foldernum) = New Button
           btn_(foldernum).Name = "Button" & foldernum
           btn_(foldernum).Text = folder
           btn_(foldernum).TextAlign = ContentAlignment.TopLeft
           btn_(foldernum).Size = New Point(111, 20)
           btn_(foldernum).Top = 20 * foldernum
           btn_(foldernum).Location = New Point(20, btn_(foldernum).Top)
           btn_(foldernum).Tag = ResourceTag

           GroupBox_subcarpetas.Controls.Add(chk_(foldernum))
           GroupBox_subcarpetas.Controls.Add(btn_(foldernum))
           AddHandler chk_(foldernum).CheckedChanged, AddressOf LlamadaCheckBox
           AddHandler btn_(foldernum).Click, AddressOf LlamadaButton

           btn_(foldernum).BringToFront()

           If SelectedFolders.Contains(ResourceTag & chk_(foldernum).Text) Then chk_(foldernum).Checked = True

       Next
#9714
Cita de: seba123neo en  6 Enero 2013, 03:44 AMsi, lo estoy haciendo  :xD

A ver si no recuerdo mal spiritdead dijo que el objeto se debe crear en una class, de ser así imagino que esa manera será para agregar objetos/items predefinidos al listview,
¿Pero que pasa entonces si yo necesito añadir los items sin conocer cuales son los items? es decir, por ejemplo parsear un texto delimitado e ir agregando los items uno por uno:

Línea de un texto cualquiera:
Simple Plan - I Can Wait Forever;4m:54s;128 Kbps;4,49 MB

Ejemplo de como se añadiría en un listview convencional:
Código (vbnet) [Seleccionar]
' llamo al sub que hace un SPLIT en cada línea del texto...

' Seteo los strings...
Listview_Row_STR(1) = TextDelimited(0)
Listview_Row_STR(2) = TextDelimited(1)
Listview_Row_STR(3) = TextDelimited(2)

' Y añado el item
Listview_Item = New ListViewItem(Listview_Row_STR)
GListView.Items.Add(Listview_Item)


¿En el tutorial explicarás como hacer algo así? me refiero a añadir los items "en tiempo real", sin haberlos predefinido en una class.

Bueno, ya me esperaré a que salga el tuto para hacer allí las preguntas xD.

Saludos.
#9715
Era más fácil de lo que pensaba, y con un AddHandler añadiré el resto de botones (Otra cosa que aprendí de tí xD),
si que me has servido de ayuda (como siempre) ;D

Saludos!






EDITO:

Pues si que me queda una duda... pero es simple curiosidad...

¿Que diferencia hay si en lugar de hacer esto como lo estoy haciendo (IF, ELSEIF) lo hiciera con un select case?
¿Que es mejor, y porqué?

He estado intentando comparar y pensar en el razonamiento de cual sería mejor usar en este caso, pero a mi parecer creo que daría exactamente el mismo resultado sin optimización ninguna del código, símplemente es lo mismo pero distinto de hacer (para este caso), ¿Me equivoco?.



Código (vbnet) [Seleccionar]
    Private Sub Buttons_Folders_Clicked(sender As Object, e As EventArgs) Handles _
        Button_2000_2006.Click, _
        Button_2007.Click, _
        Button_2008.Click, _
        Button_2009.Click, _
        Button_2010.Click, _
        Button_2011.Click, _
        Button_2012.Click, _
        Button_2013.Click, _
        Button_BSO.Click, _
        Button_Classic.Click

        Dim Clicked_Button As Button = CType(sender, Button)
        Dim Folders As New List(Of String)

        If Clicked_Button.Name = "Button_2000_2006" Then
            ResourceTag = "_2000_2006_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Happy Hardcore")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (English)")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2007" Then
            ResourceTag = "_2007_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (English)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Rock (English)")
            Folders.Add("Techno")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2008" Then
            ResourceTag = "_2008_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2009" Then
            ResourceTag = "_2009_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2010" Then
            ResourceTag = "_2010_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Techno-Progressive")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2011" Then
            ResourceTag = "_2011_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (English)")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2012" Then
            ResourceTag = "_2012_"
            Folders.Add("Dance")
            Folders.Add("Electro")
            Folders.Add("Flamenco")
            Folders.Add("Folk")
            Folders.Add("Hard-Trance")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Hip-hop (English)")
            Folders.Add("Hip-hop (Spanish)")
            Folders.Add("Jumpstyle")
            Folders.Add("Makina")
            Folders.Add("Newstyle")
            Folders.Add("Poky")
            Folders.Add("Pop (English)")
            Folders.Add("Pop (Spanish)")
            Folders.Add("Progressive")
            Folders.Add("Psychodelic")
            Folders.Add("Reggaeton")
            Folders.Add("Rock (English)")
            Folders.Add("Rock (Spanish)")
            Folders.Add("Techno")
            Folders.Add("Trance")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_2013" Then
            ResourceTag = "_2013_"
            Folders.Add("Electro")
            Folders.Add("Hardcore")
            Folders.Add("Hardstyle")
            Folders.Add("Pop (English)")
            Folders.Add("Rock (English)")
            Folders.Add("Techno")
            Folders.Add("UK Hardcore")
        ElseIf Clicked_Button.Name = "Button_BSO" Then
            Folders.Add("BSO")
        ElseIf Clicked_Button.Name = "Button_Classic" Then
            Folders.Add("Classic")
        End If

        AddSubfolders(Folders)
    End Sub




#9716
uf, muchas gracias Seba,
me quitas un peso de encima con ese method, estaba cagado de miedo por si la única alternativa era usar el ObjectListView (Alguna de sus propiedades que hiciera eso automáticamente), no sé si será muy lógico lo que acabo de decir... porque siempre se puede codear lo necesario o en este caso ya hay un method que nos ayuda a hacerlo, pero ... :xD

PD: Deseando ver un día de estos un tutorial de como crear el modelo de objeto para agregar un item en el ObjectListView  :silbar:  ;D

Saludos
#9717
Tienen razón he estado estúpido con esta pregunta xD
#9718
Lo siento pero no se como se le llama a lo que pretendo hacer, así que le llamaré "easy-find" xD,

Esta listview tiene 4 columnas, y me gustaría que la listview se comportase de la siguiente manera con la columna nº 2 ("Archivo"):

- Al pulsar una tecla del teclado (una tecla del alfabeto), visualizar/seleccionar la primera línea que empiece por esa letra.

- (MENOS IMPORTANTE) > Si la columna está desordenada, la misma lógica pero seleccionar la línea más cercana empezando a buscar desde la linea seleccionada, HACIA ABAJO.

Imagino que costará un poco de trabajo así que no lo pido todo hecho, pero ayúdenme a empezar, lo del evento "OnKeyPress" es fácil de hacer, pero no sé como podría hacer el "easy-find"...


Para el primer problema he pensado en recorrer con un FOR todo el array de "ListView.Items()" para buscar el subitem que empiece por la letra presionada, pero de todas formas he preferido hacer este post por si saben de alguna manera más sencilla y/o rápida.

#9719
¿Como puedo resolver esto en VB.NET?

EDITO:
Ups, pregunté demasiado rápido...

La solución:
Código (vbnet) [Seleccionar]
My.Resources.ResourceManager.GetObject(variable)


Código (vbnet) [Seleccionar]
   Public Sub LlamadaButton(ByVal sender As Object, ByVal e As System.EventArgs)
       Dim ButtonN As Button = CType(sender, Button)
       Dim ResourceName = ButtonN.Text
       ReadDelimitedText(My.Resources._(ResourceName), ";")     ' El problema: My.Resources._(ResourceName)
   End Sub


Error: Identifier expected
#9720
Me gustaría manejar el mismo evento para una serie de botones, algo así:

Código (vbnet) [Seleccionar]
   Private Sub Buttons_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
       If Button1.IsClicked = True Then MsgBox("Se ha clickado el botón 1")
       If Button2.IsClicked = True Then MsgBox("Se ha clickado el botón 2")
       If Button3.IsClicked = True Then MsgBox("Se ha clickado el botón 3")
   End Sub


¿Es posible hacer eso?

Si no es posible...¿Que alternativas tengo para simplificarlo de alguna manera parecida, sin tener que hacer un sub por cada evento ".Click" de cada Botón?

Gracias.