Librería de Snippets para VB.NET !! (Compartan aquí sus snippets)

Iniciado por Eleкtro, 18 Diciembre 2012, 22:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

¿Que es un Snippet?

Es una porción de código que suele contener una o varias Subrutinas con el propósito de realizar una tarea específica,
cuyo código es reusable por otras personas y fácil de integrar con sólamente copiar y pegar el contenido del Snippet.

[youtube=960,540]https://www.youtube.com/watch?v=6E3AEs66KaQ[/youtube]




( click para ver el índice )









Novlucker

Los aportes son siempre bienvenidos, peeeero, tal vez deberías de tener snippets que hagan las cosas de la manera más elegante y "performante" posible :P, hay código mejorable, pero es mucho para revisar :xD

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

$Edu$

Esto de snippets vendria a ser como "codigos sueltos" para poder copiar y tenerlos a mano siempre? es como que nos hayas dejado tus apuntes con funciones? o el VS tiene algo para leer esa extension .snippet y aplicarlo a tu proyecto de alguna forma? no lo tengo instalado por eso solo he mirado los codigos en notepad.

Novlucker

Exacto, se instalan en el Visual, y se tienen fragmentos de código prefabricado y para autocompletado :P

[youtube=420,315]http://www.youtube.com/watch?v=OfprmT6eP6k[/youtube]

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

$Edu$

Vendrian a ser entonces como las clases que trae el VS? solo que estos snippets serian clases incorporadas por nosotros mismos.

Gracias!

Eleкtro

#5
$Edu$ no se si tienes el VS pero si lo tienes donde escribes el código del form presiona "click derecho > insert snippet" y ahí ves lo que són.

Cita de: $Edu$ en 19 Diciembre 2012, 00:02 AM
Esto de snippets vendria a ser como "codigos sueltos" para poder copiar y tenerlos a mano siempre?
Ya te ha contestado Novlucker pero cabe decir que un snippet no es algo que haya inventado Microsoft, hay bastantes editores de texto que soportan el uso de snippets, y bueno... los que trabajen con HTML/CSS/PHP y todo eso seguro que están muy acostumbrados a usar snippets para sus diseños web, igual que se pueden tener snippets para Batch (xD).

saludos!




Cita de: Novlucker en 18 Diciembre 2012, 23:04 PM
tal vez deberías de tener snippets que hagan las cosas de la manera más elegante y "performante" posible :P,
hay código mejorable

Hay algunos snippets que yo solo no podría haberlos creado porque no sé hacerlo, por ejemplo el "GlobalHotkeys.snippet", no véas cuanto código con las APIs, como para ponerme a intentar mejorarlos! :xD

Ahora te hago yo una sugerencia:
De sabios es compartir el conocimiento, hay que realizar buenas acciones antes de que se acabe el munedo en... 2 días  :silbar:,
Y lo que necesita todo aprendiz de programador es un aporte con los snippets del gran Nov, muchos lo agradecerían (O al menos uno aquí presente... xD).

Ahí lo dejo...  :-X

Saludos!








Novlucker

Cita de: EleKtro H@cker en 19 Diciembre 2012, 04:04 AM
De sabios es compartir el conocimiento, hay que realizar buenas acciones antes de que se acabe el munedo en... 2 días  :silbar:,
Y lo que necesita todo aprendiz de programador es un aporte con los snippets del gran Nov, muchos lo agradecerían (O al menos uno aquí presente... xD).

Es que no tengo snippets personalizados, solo uso los que vienen incorporados en el Visual :P Justamente ayer luego de ver los tuyos me puse a pensar que sería lo que podría tener en snippets, pero la verdad no se me ocurre :P

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Eleкtro

#7
Cita de: Novlucker en 19 Diciembre 2012, 13:11 PMme puse a pensar que sería lo que podría tener en snippets, pero la verdad no se me ocurre :P
que pena que no tengas,
yo pienso que con unos cuantos snippets y pocas modificaciones se puede llegar a crear un programa entero en un instante.

Por ejemplo creamos un programa con un webbrowser y el htmlagilitypack para parsear alguna web y tomar los enlaces, o un auto-login, nos cuesta varias horas hacerlo (sin tener en cuenta el diseño).

Ahora sacamos snippets de las funciones y subrutinas más improtantes que hacemos en ese proyecto, y el próximo proyecto parecido que tengamos que hacer nos costará minutos, o al menos mucho mucho menos que al principio xD.

PD: Tenías razón, había mucho code mejorable, por ejemplo el de "isinternetavaliable" se hacía en unas 10 líneas y de una manera que no me gusta nada, el snippet original incluido en VS2012 lo hace en una línea xD


HE ACTUALIZADO LOS SNIPPETS
Algunos nuevos y algunos ligéramente mejorados basándome en los que vienen incluidos por defecto en VS2012.








$Edu$

Es que si miras un poco al futuro, cualquiera va a poder programar lo que quiera, cada vez esta tan facil que las generaciones futuras diran "se programar" y solo sabran la estructura para programar pero 0 conocimiento en generar codigo propio. Lo mismo piensan las generaciones antiguas de nosotros los que usamos .NET y no ASM xD

Eleкtro

Deberían hacer un post en esta sección que contenga sólamente snippets y donde todos aporten snippets útiles  ;D






He hecho este snippet para agilizar el renombramiento de archivos, aquí tienen ;)

PD: Uso "MOVE" porque de otra forma es imposible renombrar el archivo con el mismo nombre, como bien está explicado aquí por NovLucker: http://foro.elhacker.net/net/solucionado_iquestcomo_renombrar_un_archivo_o_carpeta_con_el_mismo_nombre-t378839.0.html

Código (vbnet) [Seleccionar]
   ' Usage:
    '
    ' RenameFile("C:\Test.txt", "TeSt.TxT")
    ' RenameFile("C:\Test.txt", "Test", "doc")
    ' RenameFile(FileInfoObject.FullName, FileInfoObject.Name.ToLower, FileInfoObject.Extension.ToUpper)
    ' If RenameFile("C:\Test.txt", "TeSt.TxT") Is Nothing Then MsgBox("El archivo no existe!")

#Region " RenameFile function "

    Private Function RenameFile(ByVal File As String, ByVal NewFileName As String, Optional ByVal NewFileExtension As String = Nothing)
        If IO.File.Exists(File) Then
            Try
                Dim FileToBeRenamed As New System.IO.FileInfo(File)
                If NewFileExtension Is Nothing Then
                    FileToBeRenamed.MoveTo(FileToBeRenamed.Directory.FullName & "\" & NewFileName) ' Rename file with same extension
                Else
                    FileToBeRenamed.MoveTo(FileToBeRenamed.Directory.FullName & "\" & NewFileName & NewFileExtension) ' Rename file with new extension
                End If
                Return True ' File was renamed OK
            Catch ex As Exception
                ' MsgBox(ex.Message)
                Return False ' File can't be renamed maybe because User Permissions
            End Try
        Else
            Return Nothing ' File doesn't exist
        End If
    End Function

#End Region


Y unos cuantos más...

Modificar atributos de archivos:
Código (vbnet) [Seleccionar]
   ' Usage:
    ' Attrib("File.txt", IO.FileAttributes.ReadOnly + IO.FileAttributes.Hidden)
    ' If Attrib("File.txt", IO.FileAttributes.System) Is Nothing Then MsgBox("File doesn't exist!")

      Private Function Attrib(ByVal File As String, ByVal Attributes As System.IO.FileAttributes)
        If IO.File.Exists(File) Then
            Try
                FileSystem.SetAttr(File, Attributes)
                Return True ' File was modified OK
            Catch ex As Exception
                ' MsgBox(ex.Message)
                Return False ' File can't be modified maybe because User Permissions
            End Try
        Else
            Return Nothing ' File doesn't exist
        End If
    End Function



Controlar el mismo evento para varios controles:

Código (vbnet) [Seleccionar]
   Private Sub Button_Is_Clicked(sender As Object, e As EventArgs) Handles _
        Button1.Click, _
        Button2.Click, _
        Button3.Click

        Dim Clicked_Button As Button = CType(sender, Button)

        If Clicked_Button.Name = "Button1" Then
        ' Things for Button1
        ElseIf Clicked_Button.Name = "Button2" Then
        ' Things for Button2
        ElseIf Clicked_Button.Name = "Button3" Then
        ' Things for Button3
        End If
    Ens Sub


Un link label:

Código (vbnet) [Seleccionar]
    ' First add a LinkLabel control into the form.

    Private Sub LinkLabel_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
        System.Diagnostics.Process.Start("http://www.Google.com")
        System.Diagnostics.Process.Start("mailto:ME@Hotmail.com")
    End Sub


Procesar todos los archivos de texto de My.Resources:

Código (vbnet) [Seleccionar]
        For Each ResourceFile As DictionaryEntry In My.Resources.ResourceManager.GetResourceSet(Globalization.CultureInfo.CurrentCulture, True, True).OfType(Of Object)()
            If TypeOf (ResourceFile.Value) Is String Then
                MsgBox(My.Resources.ResourceManager.GetObject(ResourceFile.Key))
                'MsgBox(ResourceFile.Key)   ' Resource Name
                'MsgBox(ResourceFile.Value) ' Resource FileContent
            End If
        Next


Procesar todos los archivos de imagen de My.Resources:

Código (vbnet) [Seleccionar]
        For Each ResourceFile As DictionaryEntry In My.Resources.ResourceManager.GetResourceSet(Globalization.CultureInfo.CurrentCulture, True, True).OfType(Of Object)()
            If TypeOf (ResourceFile.Value) Is Drawing.Image Then
                Button_2000_2006.Image = ResourceFile.Value
                'MsgBox(ResourceFile.Key)   ' Resource Name
                'MsgBox(ResourceFile.Value) ' Resource FileContent
            End If
        Next


Ordenar un listview al clickar sobre la columna a ordenar:

Código (vbnet) [Seleccionar]

' Instructions:
' 1. Add the class
' 2. Add the declaration
' 3. Add a listview


Dim ColumnOrder As String = "Down"


#Region " ListView Sort Column event "

    Private Sub ListView_ColumnClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnClickEventArgs) Handles ListView1.ColumnClick
        If ColumnOrder = "Down" Then
            Me.ListView1.ListViewItemSorter = New OrdenarListview(e.Column, SortOrder.Ascending)
            ListView1.Sort()
            ColumnOrder = "Up"
        ElseIf ColumnOrder = "Up" Then
            Me.ListView1.ListViewItemSorter = New OrdenarListview(e.Column, SortOrder.Descending)
            ListView1.Sort()
            ColumnOrder = "Down"
        End If
    End Sub


#End Region


#Region " OrdenarListView [CLASS] "

Public Class OrdenarListview
    Implements IComparer

    Private vIndiceColumna As Integer
    Private vTipoOrden As SortOrder

    Public Sub New(ByVal pIndiceColumna As Integer, ByVal pTipoOrden As SortOrder)
        vIndiceColumna = pIndiceColumna
        vTipoOrden = pTipoOrden
    End Sub

    Public Function Ordenar(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
        Dim item_x As ListViewItem = DirectCast(x, ListViewItem)
        Dim item_y As ListViewItem = DirectCast(y, ListViewItem)

        Dim string_x As String

        If item_x.SubItems.Count <= vIndiceColumna Then
            string_x = ""
        Else
            string_x = item_x.SubItems(vIndiceColumna).Text
        End If

        Dim string_y As String
        If item_y.SubItems.Count <= vIndiceColumna Then
            string_y = ""
        Else
            string_y = item_y.SubItems(vIndiceColumna).Text
        End If

        If vTipoOrden = SortOrder.Ascending Then
            If IsNumeric(string_x) And IsNumeric(string_y) Then
                Return Val(string_x).CompareTo(Val(string_y))
            ElseIf IsDate(string_x) And IsDate(string_y) Then
                Return DateTime.Parse(string_x).CompareTo(DateTime.Parse(string_y))
            Else
                Return String.Compare(string_x, string_y)
            End If
        Else
            If IsNumeric(string_x) And IsNumeric(string_y) Then
                Return Val(string_y).CompareTo(Val(string_x))
            ElseIf IsDate(string_x) And IsDate(string_y) Then
                Return DateTime.Parse(string_y).CompareTo(DateTime.Parse(string_x))
            Else
                Return String.Compare(string_y, string_x)
            End If
        End If
    End Function
End Class

#End Region


Un ejemplo de un SaveFileDialog:

Código (vbnet) [Seleccionar]
        Dim SaveFile As New SaveFileDialog
        SaveFile.Title = "Save a Report File"
        SaveFile.InitialDirectory = Environ("programfiles")
        SaveFile.RestoreDirectory = True
        SaveFile.DefaultExt = "txt"
        SaveFile.Filter = "txt file (*.txt)|*.txt"
        SaveFile.CheckPathExists = True
        'SaveFile.CheckFileExists = True
        'SaveFile.ShowDialog()

        If SaveFile.ShowDialog() = DialogResult.OK Then
          MsgBox(SaveFile.FileName)
        End If


Centrar un form secundario en el form principal:

Código (vbnet) [Seleccionar]
#Region " CenterForm function "

    Function CenterForm(ByVal Form_to_Center As Form, ByVal Form_Location As Point) As Point
        Dim FormLocation As New Point
        FormLocation.X = (Me.Left + (Me.Width - Form_to_Center.Width) / 2) ' set the X coordinates.
        FormLocation.Y = (Me.Top + (Me.Height - Form_to_Center.Height) / 2) ' set the Y coordinates.
        Return FormLocation ' return the Location to the Form it was called from.
    End Function

#End Region

    ' Form2 Load
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Location = Form1.centerForm(Me, Me.Location)
    End Sub

    ' Private Sub Button_MouseHover(sender As Object, e As EventArgs) Handles Button1.MouseHover
    '     Form2.Show()
    ' End Sub

    ' Private Sub Button_MouseLeave(sender As Object, e As EventArgs) Handles Button1.MouseLeave
    '     Form2.Dispose()
    ' End Sub



Saludos!