Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Arthaios en 5 Enero 2017, 13:15 pm



Título: Problema con el Sorted
Publicado por: Arthaios en 5 Enero 2017, 13:15 pm
Buenas. Tengo una aplicación (no creada por mi) en la cual, uno de los ListBox ha de mostrarse por orden alfabético.. Sé que la opción más fácil es la de modificar la propiedad Sorted para el Listbox. El tema es que haga lo que haga, no funciona.

Os pego un par de pantallazos para que veias el tema :

(https://s24.postimg.org/hb46lunh1/listbox1.jpg)

(https://s30.postimg.org/40q7p4mr5/listbox2.jpg)


Como veis, he probado a cambiarlo en cuadro de propiedades y tambien en el código pero nada. Decir que tengo (más bien tenía, pero siempre a nivel bastante básico) algo de conocimientos de Vb pero hace muchísimo que no lo toco y ahora acabo de entrar en una nueva empresa y las estoy pasando algo canutas. Asi que, por favor si pudierais echarme una mano os lo agradecería inmensamente. Por si fuera de ayuda, tambien os pego el código del formulario principal.

Código:
Private Sub BuscaTXT_Change()
Dim tomoño As String, conto As Integer
List1.Clear
tomoño = Len(BuscaTXT.Text)
'If tomoño <> "" Then
For Bucle = 0 To (PlantillasLST.ListCount - 1)
    If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
        List1.List(conto) = PlantillasLST.List(Bucle)
        conto = conto + 1
    End If
Next Bucle
'Else
'For Bucle = 0 To (PlantillasLST.ListCount - 1)
'    List1.List(Bucle) = PlantillasLST.List(Bucle)
'Next Bucle
'End If
End Sub

Private Sub CodigoLST_Click()
    Call AxustarLSTs(CodigoLST.ListIndex)
    Call PasarValor(CodigoLST.ListIndex)
End Sub

Private Sub ControlTMP_Timer()
    Estado = True
    If SOFsTXT.Text = "" Then Estado = False
    If SEtiquetaTXT.Text = "" Then Estado = False
    If Estado = True Then FuncionCMD(1).Enabled = True Else FuncionCMD(1).Enabled = False
End Sub

Private Sub DescripcionLST_Click()
    Call AxustarLSTs(DescripcionLST.ListIndex)
    Call PasarValor(DescripcionLST.ListIndex)
End Sub

Private Sub FicheirosLST_Click()
    Call AxustarLSTs(FicheirosLST.ListIndex)
    Call PasarValor(FicheirosLST.ListIndex)
End Sub

Private Sub Form_Load()
    Intro = Chr(13) & Chr(10)
    Call CargarFicheiro("Config", App.Path & "\config.cfg")
    Call CargarOFs
    Call LeerOFs
    Call LeerPlantillas
    Seguro = False
End Sub

Private Sub Form_Unload(Cancel As Integer)
    End
End Sub

Private Sub FuncionCMD_Click(Index As Integer)
    Select Case Index
        Case 0:
                Call CargarOFs
                Call LeerOFs
        Case 1:
                Call EnviarOF(SSeriesTXT.Text & SOFsTXT.Text, SSeriesTXT.Text & Intro & SOFsTXT.Text & Intro & SDescripcionTXT.Text & Intro & SLoteTXT.Text & Intro & SPesoTXT.Text & Intro & ScodigoTXT.Text & Intro & SSacoTXT.Text & Intro & SLineaTXT.Text & Intro & SEtiquetaTXT.Text & Intro & SCantidadeTXT.Text & Intro & SenvaseTXT.Text & Intro & SGranelTXT.Text & Intro)
        Case 2:
                If FicheirosLST.ListIndex <> -1 Then
                    Call BorrarFicheiro(FicheirosLST.List(FicheirosLST.ListIndex))
                End If
        Case 3: Call LeerPlantillas
        Case 4: SEtiquetaTXT.Text = "-": SSacoTXT.Text = "N"
        'Case 5:
                'Call EnviarOF(Right("0" & Second(Time), 2) & Right("000000" & Minute(Time), 6), Right("0" & Second(Time), 2) & Intro & Right("000000" & Minute(Time), 6) & Intro & "PEIXE FRESCO" & Intro & "L4632" & Intro & "40KG" & Intro & "45687" & Intro & "S" & Intro & "1" & Intro & SEtiquetaTXT.Text & Intro)
    End Select
End Sub

Private Sub LineaLST_Click()
    Call AxustarLSTs(LineaLST.ListIndex)
    Call PasarValor(LineaLST.ListIndex)
End Sub

Private Sub List1_Click()
SEtiquetaTXT.Text = List1.Text
List1.Sorted = True
End Sub

Private Sub LoteLST_Click()
    Call AxustarLSTs(LoteLST.ListIndex)
    Call PasarValor(LoteLST.ListIndex)
End Sub

Private Sub MNUConfigurar_Click()
    ConfigFRM.Visible = True
End Sub

Private Sub MNUPechar_Click()
    End
End Sub

Private Sub OFsLST_Click()
    Call AxustarLSTs(OFsLST.ListIndex)
    Call PasarValor(OFsLST.ListIndex)
End Sub

Private Sub PesoLST_Click()
    Call AxustarLSTs(PesoLST.ListIndex)
    Call PasarValor(PesoLST.ListIndex)
End Sub

Private Sub PlantillasLST_Click()
   
    SEtiquetaTXT.Text = PlantillasLST.Text
    SSacoTXT.Text = "S"
   
End Sub

Private Sub SacoLST_Click()
    Call AxustarLSTs(SacoLST.ListIndex)
    Call PasarValor(SacoLST.ListIndex)
End Sub

Private Sub SeriesLST_Click()
    Call AxustarLSTs(SeriesLST.ListIndex)
    Call PasarValor(SeriesLST.ListIndex)
End Sub

Muchas gracias y perdonad si la pregunta es muy tonta pero estoy bastante ofuscado. Graciñas de nuevo.


Título: Re: Problema con el Sorted
Publicado por: okik en 6 Enero 2017, 08:53 am
No puedes establecer SORTED del Listbox en tiempo de ejecución.

Citar
Private Sub List1_Click()
SEtiquetaTXT.Text = List1.Text
List1.Sorted = True
End Sub

Se debe establecer desde las propiedades del objeto.


Abría que ver que tipo de ordenación quieres.

En este caso si lo quisieras de menor a mayor sorted no te sirve, ya que el listbox te lo ordena de la siguiente manera:

Código:
1
12
2
25
4
45


y debería ser así:
Código:
1
2
4
12
25
45

Para los números basta con poner ceros a la izquierda:
Código
  1. Private Sub Form_Load()
  2. Dim patata(5) As String
  3. patata(0) = "05"
  4. patata(1) = "25"
  5. patata(2) = "03"
  6. patata(3) = "35"
  7. patata(4) = "04"
  8. patata(5) = "40"
  9. For Each n In patata
  10. List1.AddItem n
  11. Next
  12.  
  13. End Sub
  14.  

Pero no uses  LIST
Código:
List1.List(Index) = (patata(Index))

usa AddItem

Fíjate:
Código
  1. Dim patata(5) As String
  2. patata(0) = "05"
  3. patata(1) = "25"
  4. patata(2) = "03"
  5. patata(3) = "35"
  6. patata(4) = "04"
  7. patata(5) = "40"
  8. For Index = 0 To UBound(patata) - 1
  9. List1.List(Index) = (patata(Index))
  10. Next
Si lo haces así los elementos no quedarán ordenados, ni siquiera poniendo un cero a la izquierda.

Así que tienes dos razones por la cual no se te ordena. Una es que como ordena alfabéticamente si usas números debes poner ceros a la izquierda, según la longitud del número. Si manejas tres cifras  deberías poner los números del modo --> 001, 002 , ... , 025, 099, ..., 120

La otra razón es que usas, "List1.List(índice)=....", en lugar de List1.AddItem.


Citar
For Bucle = 0 To (PlantillasLST.ListCount - 1)
    If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
       List1.List(conto) = PlantillasLST.List(Bucle)
       List1.AddItem (PlantillasLST.List(Bucle))
        conto = conto + 1
    End If
Next Bucle


Para otro tipo de ordenación especial tendrás que hacer algún tipo de algoritmo de ordenación y luego en ese orden meterlo en el listBox con sorted en False




Título: Re: Problema con el Sorted
Publicado por: Arthaios en 9 Enero 2017, 08:49 am
Buenos dias, muchas gracias por contestar. Agradezco mucho las aclaraciones, en realidad solo quiero que el listbox me muestre el contenido ALFABÉTICAMENTE... en ese caso tendría con poner el sorted en sitio adecuado, ¿valdría?.. En cualquier caso me apunto lo de los numeros pues seguramente me sea últil en el futuro...  ;-)


Título: Re: Problema con el Sorted
Publicado por: Arthaios en 9 Enero 2017, 09:48 am
A ver pongo el List1.Sorted = True al principio del código, despues de definir variables y cuando doy a compilar me sale "error de compilacion no se puede asignar a propiedad de solo lectura".. pero si lo cambio a Listbox.Sorted = True no me da dicho error y si que me deja compilar, pero no sé si me funciona o no.. ¿A que se debe esto? ¿Es por que hay que definir el objeto como propiedad general o como?. Gracias de nuevo.


Título: Re: Problema con el Sorted
Publicado por: okik en 9 Enero 2017, 10:42 am
A ver pongo el List1.Sorted = True al principio del código, despues de definir variables y cuando doy a compilar me sale "error de compilacion no se puede asignar a propiedad de solo lectura".. pero si lo cambio a Listbox.Sorted = True no me da dicho error y si que me deja compilar, pero no sé si me funciona o no.. ¿A que se debe esto? ¿Es por que hay que definir el objeto como propiedad general o como?. Gracias de nuevo.

A veces me enrollo mucho en mis respuestas y no quedan claras. La razón ya te la he comentado es por usar List1.List() en lugar de AddItem para llenar el ListBox.

Si usas la propiedad LIST, cada elemento queda asignado en un determinado lugar del ListBox y éste ignora el sorted.  Si usas AddItem, aplicará el sorted.

Además te he puesto ejemplo para que veas como en un caso si ordena y en otro no.

Te vuelvo a poner donde debes corregir.
Citar
For Bucle = 0 To (PlantillasLST.ListCount - 1)
    If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
        List1.List(conto) = PlantillasLST.List(Bucle)
       List1.AddItem (PlantillasLST.List(Bucle))
        conto = conto + 1
    End If
Next Bucle

En este caso el Sorted se puede aplicar a control ListBox de nombre List1
. El otro ListBox que se llama PlantillasLST no veo en el código donde lo cargas pero si también lo quieres poder  ordenar usa AddItem cuando lo llenes, ya que no dices cual de los dos quieres ordenar.


Te pongo de nuevo varios ejemplos para que veas como en un caso se ordena y en otro no aunque tenga la propiedad Sorted activada

Código:
- Crea dos ListBox
...- Con List1.Sorted= False
...- Con List2.Sorted = True

EJEMPLO1
En este ejemplo al usar la propiedad LIST, el List2 NO queda ordenado aunque Sorted esté en True.
Código
  1. '//Debes cambiar las propiedades de...
  2. '//List1 con Sorted = False
  3. '//List2 con Sorted = True
  4.  
  5. List1.AddItem ("Patata")
  6. List1.AddItem ("Zanahoria")
  7. List1.AddItem ("Guisante")
  8. List1.AddItem ("Limón")
  9.  
  10. For Index = 0 To List1.ListCount - 1
  11. List2.List(Index) = (List1.List(Index))
  12. Next


EJEMPLO2
En este ejemplo, el List2 SÍ queda ordenado porque usas la propiedad AddItem para llenarlo
Código
  1. '//Debes cambiar las propiedades de...
  2. '//List1 con Sorted = False
  3. '//List2 con Sorted = True
  4.  
  5. List1.AddItem ("patata")
  6. List1.AddItem ("Zanahoria")
  7. List1.AddItem ("Guisante")
  8. List1.AddItem ("Limón")
  9.  
  10. For Index = 0 To List1.ListCount - 1
  11. List2.AddItem (List1.List(Index))
  12. Next










Título: Re: Problema con el Sorted
Publicado por: Arthaios en 9 Enero 2017, 11:21 am
Um.. Gracias de nuevo. Voy a probar a ver. En principio solo quiero que el List1 me muestre los resultados alfabéticamente y YA. He puesto tambien el Sorted de PlantillasLST en True tambien. Con poner lo de AddItem, ¿dices que ya valdría? ¿no haría falta definir el True en el código? ¿solo con ponerlo en la opciones como True ya vale?. Muchas gracias, me estais ayudando mucho. ;)


Título: Re: Problema con el Sorted
Publicado por: okik en 9 Enero 2017, 11:53 am
¿dices que ya valdría? ¿no haría falta definir el True en el código? ¿solo con ponerlo en la opciones como True ya vale?. Muchas gracias, me estais ayudando mucho. ;)

Hombre, en el código ya te dice que es una propiedad de solo lectura cuando lo ejecutas y no te deja. Hay que establecerlo en las propiedades del objeto.

La razón por la cual no se ordena el listbox usando la propiedad list no tengo ni idea de por qué. Parece como si al hacerlo así fijaras el lugar del elemento en el la lista y no se aplica la ordenación. Así que para que funcione la ordenación hay que usar AddItem.

 Si te digo la verdad yo tampoco lo sabía, ha sido a base de probar que he comprobado que al usar la propiedad ListBox.List no ordena y usando AddItem si lo hace, como comprobarás aplicando los ejemplos, no hay más.



Ya para rematar la faena pondré otro ejemplo más simple

Así NO ordena con la propiedad Sorted en TRUE
Código
  1. List1.List(0) = "Patata"
  2. List1.List(1) = "Zanahoria"
  3. List1.List(2) = "Guisante"
  4. List1.List(3) = "Limón"
  5.  

Resultado
Código:
Patata
Zanahoria
Guistante
Limón


Así SÍ ordena con la propiedad Sorted en TRUE
Código
  1. List1.AddItem "Patata"
  2. List1.AddItem "Zanahoria"
  3. List1.AddItem "Guisante"
  4. List1.AddItem "Limón"
  5.  

Resultado
Código:
Guistante
Limón
Patata
Zanahoria



Título: Re: Problema con el Sorted
Publicado por: Arthaios en 10 Enero 2017, 09:01 am
Vale, a ver uso, AddItem. Lo que he hecho es:

Código:
If Left(PlantillasLST.List(Bucle), tomoño) = BuscaTXT.Text Then
        'List1.List(conto) = PlantillasLST.List(Bucle)
        'conto = conto + 1
       List1.AddItem (PlantillasLST.List(Bucle))
    End If

Y poner Sorted = True en el List1 y para el PlantillasLST.List

Pero sigue sin ir!! no sé que pasa!! alguna idea?¿

Los valores que quiero que ordene el Listbox son nombres de peces alfabéticamente..

Para que os hagais una idea, os pongo una captura: el listbox va enlazado a otros campos..¿puede ser esta la razón de que no lo ordene?.. no se muy bien que hacer..

(https://s27.postimg.org/kwpbqlxwz/cap5.jpg)


Gracias por vuestras ayudas y comentarios.


Título: Re: Problema con el Sorted
Publicado por: Arthaios en 10 Enero 2017, 10:09 am
No me los ordena para nada, arriba tienes el código del formulario que trabaja con el listbox. Hay otro formulario pero no tiene relevancia para este listbox (no aparece de ninguna manera en ese formulario). Lo único que se me ocurre es que tenga que hacerse algo en el módulo de funciones que si aparece el listbox, pero no tengo muy claro lo que hace. Os pego el código y subrayo (esta casi al final) la parte del código que pueda ser relevante. La pregunta es: esta claro que por lo que sea el sorted no funciona, ¿no hay manera de intentar ordenar el listbox de alguna otra manera?. Graciñas.

Código:
Public Contador As Integer, Comproba As String, Bucle As Long, Intro As String
Public Letra As String, UltimoValor As String, Ficheiro2
Public TextoFixoAplicador As String, NLiñas As String
Public Function CargarOFs()
Dim Tamaño As Integer, ManexoSistema, ManexoFicheiros, Un
Call ReiniciarLSTs
Tamaño = Len(ConfigFRM.ConfigTXT(0).Text): Contador = 0
On Error Resume Next
Set ManexoSistema = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set ManexoFicheiros = ManexoSistema.GetFolder(ConfigFRM.ConfigTXT(0).Text)
For Each Un In ManexoFicheiros.Files
    Un = Right(Un, Len(Un) - Tamaño)
    If Right(Un, 3) = ".ok" Or Right(Un, 3) = ".OK" Or Right(Un, 3) = ".Ok" Or Right(Un, 3) = ".oK" Then
        Un = Left(Un, Len(Un) - 3)
        PrincipalFRM.FicheirosLST.List(Contador) = Un
        Contador = Contador + 1
    End If
Next
End Function

Public Function CargarFicheiro(Tipo As String, Ficheiro As String)
Contador = 0
Comproba = Dir(Ficheiro)
Select Case Comproba
    Case ""
    Case Else
        Open Ficheiro For Input Access Read As #1
            Do While Not EOF(1)
                Letra = Input(1, #1)
                Select Case Letra
                    Case Chr(13): Contador = Contador + 1
                    Case Chr(10)
                    Case Else:
                        Select Case Tipo
                            Case "Config": ConfigFRM.ConfigTXT(Contador).Text = ConfigFRM.ConfigTXT(Contador).Text & Letra
                        End Select
                End Select
            Loop
        Close #1
End Select
End Function

Public Function GardarConfig()
    Dim Configurar As String
    For Bucle = 0 To (ConfigFRM.ConfigTXT.Count - 1)
        Configurar = Configurar & ConfigFRM.ConfigTXT(Bucle).Text & Intro
    Next Bucle
    Open App.Path & "\config.cfg" For Output Access Write As #1
        Print #1, Configurar
    Close #1
End Function

Public Function LeerOFs()
For Bucle = 0 To (PrincipalFRM.FicheirosLST.ListCount - 1)
    Contador = 0
    Open ConfigFRM.ConfigTXT(0).Text & PrincipalFRM.FicheirosLST.List(Bucle) & ".ok" For Input Access Read As #1
        Do While Not EOF(1)
            Letra = Input(1, #1)
            Select Case Letra
                Case Chr(13)
                Case Chr(10)
                Case "|": Contador = Contador + 1
                Case Else
                        Select Case Contador
                            Case 0: PrincipalFRM.CodigoLST.List(Bucle) = PrincipalFRM.CodigoLST.List(Bucle) & Letra
                            Case 1: PrincipalFRM.DescripcionLST.List(Bucle) = PrincipalFRM.DescripcionLST.List(Bucle) & Letra
                            Case 2: PrincipalFRM.LoteLST.List(Bucle) = PrincipalFRM.LoteLST.List(Bucle) & Letra
                            Case 3: PrincipalFRM.PesoLST.List(Bucle) = PrincipalFRM.PesoLST.List(Bucle) & Letra
                            Case 4: PrincipalFRM.LineaLST.List(Bucle) = PrincipalFRM.LineaLST.List(Bucle) & Letra
                            Case 5: PrincipalFRM.SacoLST.List(Bucle) = PrincipalFRM.SacoLST.List(Bucle) & Letra
                            Case 6: PrincipalFRM.SeriesLST.List(Bucle) = PrincipalFRM.SeriesLST.List(Bucle) & Letra
                            Case 7: PrincipalFRM.OFsLST.List(Bucle) = PrincipalFRM.OFsLST.List(Bucle) & Letra
                            Case 8:
                                    On Error Resume Next
                                    PrincipalFRM.CantLST.List(Bucle) = PrincipalFRM.CantLST.List(Bucle) & Letra
                            Case 9:
                                    On Error Resume Next
                                    PrincipalFRM.EnvaseLST.List(Bucle) = PrincipalFRM.EnvaseLST.List(Bucle) & Letra
                            Case 10:
                                    On Error Resume Next
                                    PrincipalFRM.GranelLST.List(Bucle) = PrincipalFRM.GranelLST.List(Bucle) & Letra
                        End Select
            End Select
        Loop
    Close #1
Next Bucle
End Function

Public Function ReiniciarLSTs()
PrincipalFRM.LineaLST.Clear
PrincipalFRM.LoteLST.Clear
PrincipalFRM.CodigoLST.Clear
PrincipalFRM.OFsLST.Clear
PrincipalFRM.DescripcionLST.Clear
PrincipalFRM.FicheirosLST.Clear
PrincipalFRM.PesoLST.Clear
PrincipalFRM.SacoLST.Clear
PrincipalFRM.SeriesLST.Clear
On Error Resume Next
PrincipalFRM.GranelLST.Clear
On Error Resume Next
PrincipalFRM.EnvaseLST.Clear
On Error Resume Next
PrincipalFRM.CantLST.Clear
End Function

Public Function PasarValor(Numero As Integer)
With PrincipalFRM
    .SLineaTXT.Text = .LineaLST.List(Numero)
    .SLoteTXT.Text = .LoteLST.List(Numero)
    .ScodigoTXT.Text = .CodigoLST.List(Numero)
    .SOFsTXT.Text = .OFsLST.List(Numero)
    .SDescripcionTXT.Text = .DescripcionLST.List(Numero)
    .SPesoTXT.Text = .PesoLST.List(Numero)
    .SSacoTXT.Text = .SacoLST.List(Numero)
    .SSeriesTXT.Text = .SeriesLST.List(Numero)
    On Error Resume Next
    .SCantidadeTXT.Text = .CantLST.List(Numero)
    On Error Resume Next
    .SenvaseTXT.Text = .EnvaseLST.List(Numero)
    On Error Resume Next
    .SGranelTXT.Text = .GranelLST.List(Numero)
End With
End Function

Public Function AxustarLSTs(Numero As Integer)
With PrincipalFRM
    .FicheirosLST.Selected(Numero) = True
    .LineaLST.Selected(Numero) = True
    .LoteLST.Selected(Numero) = True
    .CodigoLST.Selected(Numero) = True
    .OFsLST.Selected(Numero) = True
    .DescripcionLST.Selected(Numero) = True
    .PesoLST.Selected(Numero) = True
    .SacoLST.Selected(Numero) = True
    .SeriesLST.Selected(Numero) = True
    On Error Resume Next
    .CantLST.Selected(Numero) = True
    On Error Resume Next
    .EnvaseLST.Selected(Numero) = True
    On Error Resume Next
    .GranelLST.Selected(Numero) = True
End With
End Function

Public Function BorrarSeleccions()
Dim Boclo As Integer
With PrincipalFRM
    For Boclo = 0 To (.FicheirosLST.ListCount - 1)
        .FicheirosLST.Selected(Boclo) = False
        .LineaLST.Selected(Boclo) = False
        .LoteLST.Selected(Boclo) = False
        .CodigoLST.Selected(Boclo) = False
        .OFsLST.Selected(Boclo) = False
        .DescripcionLST.Selected(Boclo) = False
        .PesoLST.Selected(Boclo) = False
        .SacoLST.Selected(Boclo) = False
        .SeriesLST.Selected(Boclo) = False
        On Error Resume Next
        .CantLST.Selected(Boclo) = False
        On Error Resume Next
        .EnvaseLST.Selected(Boclo) = False
        On Error Resume Next
        .GranelLST.Selected(Boclo) = False
    Next Boclo
End With
End Function
Public Function ReiniciarEnvio()
With PrincipalFRM
    .SLineaTXT.Text = ""
    .SLoteTXT.Text = ""
    .ScodigoTXT.Text = ""
    .SOFsTXT.Text = ""
    .SDescripcionTXT.Text = ""
    .SPesoTXT.Text = ""
    .SSacoTXT.Text = ""
    .SSeriesTXT.Text = ""
    On Error Resume Next
    .SCantidadeTXT.Text = ""
    On Error Resume Next
    .SenvaseTXT.Text = ""
    On Error Resume Next
    .SGranelTXT.Text = ""
End With
End Function

Public Function LeerPlantillas()
Dim Tamaño As Integer, ManexoSistema, ManexoFicheiros, Un
Tamaño = Len(ConfigFRM.ConfigTXT(2).Text): Contador = 0
Set ManexoSistema = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
Set ManexoFicheiros = ManexoSistema.GetFolder(ConfigFRM.ConfigTXT(2).Text)
If Err.Number <> 0 Then
    MsgBox ("Erro grave de configuración leendo as plantillas")
    Err.Clear
    Exit Function
End If
[b][u]For Each Un In ManexoFicheiros.Files
    Un = Right(Un, Len(Un) - Tamaño)
    If Right(Un, 4) = ".lbe" Or Right(Un, 4) = ".LBE" Or Right(Un, 4) = ".Lbe" Or Right(Un, 4) = ".lbE" Then
        Un = Left(Un, Len(Un) - 4)
        PrincipalFRM.PlantillasLST.List(Contador) = Un
        PrincipalFRM.List1.List(Contador) = Un
        Contador = Contador + 1
    End If[/u][/b]
Next
End Function

Public Function BorrarFicheiro(NomeFicheiro As String)
Ficheiro2 = ConfigFRM.ConfigTXT(0).Text & NomeFicheiro & ".ok"
Comproba = Dir(Ficheiro2)
Select Case Comproba
    Case ""
        MsgBox ("Non se puido borrar o ficheiro da orde de fabricación")
    Case Else
        Kill Ficheiro2
End Select
Call CargarOFs
Call LeerOFs
Call ReiniciarEnvio
End Function

Public Function EnviarOF(NomeOF As String, Contido As String)
Ficheiro = ConfigFRM.ConfigTXT(1).Text & NomeOF & ".ord"
Open Ficheiro For Output Access Write As #1
    Print #1, Contido
Close #1
Call BorrarFicheiro(NomeOF)
Call ReiniciarLSTs
Call CargarOFs
Call LeerOFs
End Function


Título: Re: Problema con el Sorted
Publicado por: Arthaios en 10 Enero 2017, 12:20 pm
Vale creo que he dado en un punto clave, el list1 depende directamente del campo/función SEtiquetaTxt y PlantillasLST (que tambien es un listbox que esta bajo el cuadrito de Listbox1) . Tal y como lo entiendo el texto de List1 viene de el PlantillaLST y este a su vez, de SEtiquetaTxt.. ¿puede tener algo que ver o estoy dando palos de ciego?


Título: Re: Problema con el Sorted
Publicado por: okik en 10 Enero 2017, 13:35 pm
Vale creo que he dado en un punto clave, el list1 depende directamente del campo/función SEtiquetaTxt y PlantillasLST (que tambien es un listbox que esta bajo el cuadrito de Listbox1) . Tal y como lo entiendo el texto de List1 viene de el PlantillaLST y este a su vez, de SEtiquetaTxt.. ¿puede tener algo que ver o estoy dando palos de ciego?

Para aclarar, cual es el listbox que quieres ordenar porque veo muchos y además sigues usando la propiedad list, incluso en PlantillasLST .

Es simple, como pongo en el ejemplo si usas list no ordena si usas Additem si.

Nota:
Deberías usar e código GeShi de el Hacker.net para que el código se vea más claro, Selecciona Visual Basic y entre  |Code=vb| y |/code| pones el código.



Si el tener que usar AddItem te obliga a reconfigurar todo el código, se me ocurre que hagas una cosa.

Sea cual sea el ListBox que quieras ordenar puedes meter la lista que quieras ordenar en un Array. Luego lismpias el listBox, mediante  List1.Clear y luego lo llenas usando List1.AddItem()




Título: Re: Problema con el Sorted
Publicado por: Arthaios en 11 Enero 2017, 11:15 am
Parece que ya está solucionado. Muchas gracias a todos, de verdad. Un saludo.