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

#7591
Cita de: luis456 en 12 Diciembre 2013, 05:59 AMsera porque uso la version 2010 express ?

No creo que por usar una versión Express afecte de tal forma como para restringir el acceso a las propiedades de un control ...vaya, pero tampoco voy a poner la mano en el fuego por Microsoft xD.

Quizás símplemente las propiedades estén ocultas (por algún extraño motivo) pero sigan accesibles, ¿no puedes modificar las propiedades usando código?.

Una alternativa al listbox es usar un Listview y modificarle la propiedad View a "LargeIcon" para hacerlo horizontal.

Otra (posible) alternativa sería descargar/instalar algún Listbox de terceros y comprobar si tiene las propiedades que le faltan a tu ListBox por defecto:
-> http://lmgtfy.com/?q=codeproject+listbox+user+control

Saludos

#7592
Control Iterator

Recolecta uno o varios controles y realiza una operación específica en ellos.

Le añadí decenas de overloads y métodos, el código es bien largo: http://pastebin.com/ypuQdKf0

Ejemplos de uso:
Código (vbnet) [Seleccionar]

ControlIterator.Disable(CheckBox1)

ControlIterator.Enable({CheckBox1, CheckBox2})

ControlIterator.Check(Of CheckBox)(Me)

ControlIterator.Uncheck(Of CheckBox)(Me.GroupBox1)

ControlIterator.Hide(Of CheckBox)("1")

ControlIterator.PerformAction(Of CheckBox)(Sub(ctrl As CheckBox) ctrl.Visible = True)

ControlIterator.AsyncPerformAction(RichTextBox1,
                                    Sub(rb As RichTextBox)
                                        For n As Integer = 0 To 9
                                            rb.AppendText(CStr(n))
                                        Next
                                    End Sub)

#7593
Te entendí desde el primer momento, quieres localizar la ubicación de la aplicación MSWord indiferéntemente de la versión de Office que haya instalado en el PC.
(Lo que no entiendo es que digas que tienes un programa con botones... eso entonces no es Batch y Batch no seria necesario usarlo, pero bueno, ya puestos no tiene importancia.)

Pero no es todo hacer click y listo, te he explicado la manera de localizar la ubicación del word.exe mediante el registro:

CitarHKLM\SOFTWARE\Microsoft\Office\8.0\Word\InstallRoot\Path
HKLM\SOFTWARE\Microsoft\Office\8.5\Word\InstallRoot\Path
HKLM\SOFTWARE\Microsoft\Office\9.0\Word\InstallRoot\Path
HKLM\SOFTWARE\Microsoft\Office\10.0\Word\InstallRoot\Path
HKLM\SOFTWARE\Microsoft\Office\11.0\Word\InstallRoot\Path
HKLM\SOFTWARE\Microsoft\Office\12.0\Word\InstallRoot\Path
HKLM\SOFTWARE\Microsoft\Office\13.0\Word\InstallRoot\Path
HKLM\SOFTWARE\Microsoft\Office\14.0\Word\InstallRoot\Path
HKLM\SOFTWARE\Microsoft\Office\15.0\Word\InstallRoot\Path

Al parecer la subclave de registro es idéntica desde la versión 8.0 (al menos) hasta la 15.0, es decir, desde el Office97 hasta el Office2013, eso he leido por ahi, no puedo verificarlo.

Solo tienes que iterar esa lista de subclaves con el comando REG QUERY para comprobar si el valor existe en alguna de ellas y capturar dicho valor con el comando FOR /F, y listo, ya habrás conseguido la ruta del executable del Word sin preocuparse de que versión haya instalada en el PC, no lo vamos a hacer todo por ti.

EDITO:
Cita de: MaX2 en 11 Diciembre 2013, 21:09 PMSi esa aplicación se ejecuta en un ordenador que tiene instalado word 97, le digo que esta en esta ruta:
XXXXXXXXXXXXXXXXXXXXXXXX

Es una mala idea. La ruta de instalación de Office no es fija, es personalizable a la libre elección del usuario, Office puede ser perféctamente instalado en por ejemplo: "C:\Mis Documentos\Office"
Por eso mismo necesitas comprobarlo en el registro...

Saludos!
#7594
@Max2

Creo que no lo entendiste bien...

Citar\..\ = Letra de unidad de origen.

Con eso sólamente te expliqué el equivalente del parámetro, no me refería a que debías reemplazar esos caracteres para especificar una letra,
es decir, tu copialo tal cual lo puse.

Esto:
CitarIconResource=\..\Aplicación\Configuración\Librería.dll,48

Tiene el mismo resultado que esto otro:
IconResource=X:\Aplicación\Configuración\Librería.dll,48

Saludos
#7595
Una función de uso genérico para delimitar un string, es decir, para tomar una porción dell texto (solo una).

Código (vbnet) [Seleccionar]
#Region " Delimit String "

   ' [ Delimit String ]
   '
   ' // By Elektro H@ker
   '
   ' Result: my new house today
   ' MsgBox(Delimit_String("Welcome to my new house today", "to"))

   ' Result: my new house
   ' MsgBox(Delimit_String("Welcome to my new house today", "to", "today"))

   ' Result: my new house
   ' MsgBox(Delimit_String("Welcome to my new house today", "TO", "tODaY", RegexOptions.IgnoreCase))

   ' Result: my new house
   ' MsgBox(Delimit_String("Welcome to my new house today", "to", "to", RegexOptions.IgnoreCase Or RegexOptions.RightToLeft))

   ' Result: Nothing (No IgnoreCase specified.)
   ' MsgBox(Delimit_String("Welcome to my new house today", "TO", "HoUSe"))

   ' Result: Nothing (Second delimiter is not found.)
   ' MsgBox(Delimit_String("Welcome to my new house today", "to", "tokyo", ))

   ''' <summary>
   ''' Delimit a String using Start/End delimiters.
   ''' </summary>
   ''' <param name="str">Indicates the String to delimit.</param>
   ''' <param name="Delimiter_A">A delimiter used to indicate the end of the string.</param>
   ''' <param name="Delimiter_B">An optional delimiter used to indicate the end of the string produced by the first delimiter.</param>
   ''' <param name="Options">Indicates options such as IgnoreCase or to start splitting from RightToLeft.</param>
   Private Function Delimit_String(ByVal str As String,
                                   ByVal Delimiter_A As String,
                                   Optional ByVal Delimiter_B As String = "",
                                   Optional ByVal Options As RegexOptions = RegexOptions.None) As String

       Dim rgx1 As New Regex(Delimiter_A, Options)
       Dim rgx2 As New Regex(Delimiter_B, Options)

       Dim m1 = rgx1.Match(str)
       Select Case Options.ToString.Contains(RegexOptions.RightToLeft.ToString)
           Case False ' Left To Right
               str = str.Substring(m1.Index + m1.Length)
           Case True ' Right To Left
               str = str.Substring(0, m1.Index)
       End Select

       Dim m2 = rgx2.Match(str)
       If Not String.IsNullOrWhiteSpace(Delimiter_B) Then
           Select Case Options.ToString.Contains(RegexOptions.RightToLeft.ToString)
               Case False ' Left To Right
                   str = str.Substring(0, m2.Index)
               Case True ' Right To Left
                   str = str.Substring(m2.Index + m2.Length)
           End Select
       End If

       Return str

   End Function

#End Region
#7596
Cita de: el-brujo en 11 Diciembre 2013, 19:40 PM
En este caso imagino que al poner un ; se piensa que es una inyección SQL xD

En realidad para que se produzca el error lo que hay que poner es una coma, si pones un punto y coma funciona bien (como lo escribí en el comentario principal).

Bueno pues eso, ahi lo dejo.
un saludo!
#7597
Cita de: luis456 en 11 Diciembre 2013, 19:23 PMen  propiedades los valores que pones veo solo el de  size

Que estraño, deberían salir ...pues es una parte de dicho control,
¿Que tipo de proyecto haces? ¿WindowsPresentationFoundation, WindowsForms?
En WPF es totálmente diferente.

Saludos
#7598
Hola

No tuve ningún error en el ejemplo que te dí, es imposible que salga ese tipo de excepcion, ¿que habrás echo? xD

De todas formas el ejemplo de arriba es solo eso, un ejemplo, no te lo tomes al pie de la letra, la idea es que tu no deberías crear el ListBox en tiempo de ejecución... usa el diseñador de formulario (que para algo está), arrastras un ListBox al formulario y ahí le modificas las propiedades en el menú de propiedades del Control, no es necesario crear el control usando código.

así queda el listbox del ejemplo:


Saludos

#7599
Scripting / Re: Dudilla ruby
11 Diciembre 2013, 17:13 PM
Cita de: rubyestaroto en 11 Diciembre 2013, 16:05 PMy para llamarlo se pondría eachAlumnos(){ ... } y no @arrayAlumnos.each() {...} como haríamos con un iterador normal.

Hola,
No me ha quedado claro si tu intención es reinventar la rueda de un For Each de forma universal?, o crear varios métodos distintos PREDEFINIDOS para esa Class para que simulen un For Each.
¿se trata sólamente de hacer lo mismo pero escribiendo (un poco) menos? xD

En mi opinión si "eachALGO" pretendes hacerlo genérico no tiene ni pies ni cabeza pues .each es una extensión de una Colección mientras que eachALGO no es nada y no podría ser lo mismo puesto que no puedes aplicarlo a ningún objeto, no sería un método de un objecto, sería un método, sin más, entonces no podrías utilizarlo de forma dinámica.

Aunque hace mucho que no programo en Ruby pero está claro que en un lenguaje ni usando Lambdas ni magia podrías instanciar métodos de forma dinámica de la manera en la que lo has planteado símplemente escribiendo "eachLOQUESEA" y que el método se crease por si solo, no, yo pienso que la única solución sería crear tu mismo los métodos necesarios (eachAlumnos() eachLoquesea()) cada uno por separado, con su nombre de método y sus instrucciones preestablecidas por ti dentro del Script, claro, y que cada método hiciese un For Each, es decir, creas el método "eachALUMNOS" y haces un .each en el array que tú, préviamente, hayas declarado en las órdenes de dicho método.

Saludos!

Edito: O bien podrías hacer algo parecido a este método :

Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-

days = [ "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday",
        "Saturday",
        "Sunday"
      ]

def each(collection, &procedure)
 procedure.call(collection)
end

each(days) {|var|print var}

sleep 5
Process.exit

__END__


Saludos
#7600
Supongo que estás usando un Winforms asi que la manera sería esta:

Código (vbnet) [Seleccionar]
' Establezco un par de arrays numéricos.
Dim arr1 As Integer() = {1, 2, 3, 4}
Dim arr2 As Integer() = {5, 6, 7, 8}

' Instancio un ListBox con las siguientes propiedades:
Dim LB As New ListBox With
   {
       .MultiColumn = True,
       .ColumnWidth = 10,
       .Size = New Size(300, 20)
   }

' Lo añado al formulario.
Me.Controls.Add(LB)

' Añado los elementos del primer Array, al ListBox.
LB.Items.AddRange(ArrayList.Adapter(arr1).ToArray)

' Añado dos elements vacíos que simulen un "separador".
LB.Items.AddRange(ArrayList.Adapter({String.Empty, String.Empty}).ToArray)

' Añado los elementos del segundo Array, al ListBox.
LB.Items.AddRange(ArrayList.Adapter(arr2).ToArray)


Nota: Si quieres hacer un ListBox más grande y que siga siendo horizontal, también tendrás que agrandar la fuente de texto del control y ajustar el ancho de la columna.

Saludos