Visual Basic - Indice en menus

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Indice en menus

Publicado por Sahid Ra Gutiérrez Cruz (191 intervenciones) el 08/03/2021 21:23:56
Saludos nuevamente, espero me puedan llevar a la luz de la solución.

Aqui el problema
https://ibb.co/rdVVYhz
Menus

La solución es hacer un mPrograma0 y mCiclo0 por separado y una vez terminado copiar y pegar el código tantas veces sea necesario, en el ejemplo que subí, serian 3 veces mas para cubrir a mPrograma1, mPrograma2 y mPrograma3

y bueno lo que busco es hacerlo solo una vez y solo cambiarle por así decir el índice de mPrograma*Numero* y/o Ciclo*Numero*(índice).

Gracias por toda la información que puedan proporcionar para hacerme a ideas para llegar a la solución.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Indice en menus

Publicado por Sahid Ra Gutiérrez Cruz (191 intervenciones) el 12/03/2021 21:25:50
Problema resuelto con mas líneas de lo que hubiera querido, a continuación la solución.

Considerando la estructura de menus previos https://i.ibb.co/2ZTTxrC/Menus.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Public Function ChecaCiclos()
 Dim ccTexto As String
 Dim ccTempo As Integer
 Dim ccIndex As Integer
 Dim Ruta As String: Ruta = "C:\Intel\"
 For ccTempo = 0 To 3 'Este 3 varia dependiendo las necesidades de menus
  ccTexto = "pr" + CStr(ccTempo) 'Aqui puse un valor estatico a proposito
  Select Case ccTempo
   Case 0: mPrograma0.Enabled = False
   Case 1: mPrograma1.Enabled = False
   Case 2: mPrograma2.Enabled = False
   Case 3: mPrograma3.Enabled = False
  End Select
  If ccTempo = 3 Then Exit For 'Puesto a proposito para brincar el ultimo menu
  Select Case ccTempo
   Case 0: mPrograma0.Enabled = True: mPrograma0.Caption = "pr" + CStr(ccTempo)
           For ccIndex = mCiclo0.Count - 1 To 1 Step -1
            Unload mCiclo0(ccIndex) 'Elimina los ciclos anteriorees
           Next ccIndex
           ccTexto = Dir(Ruta + "pr" + CStr(ccTempo) + "\", vbDirectory)
           Do While ccTexto <> ""
            If ccTexto <> ".." And ccTexto <> "." Then
             ccIndex = GetAttr(Ruta + "pr" + CStr(ccTempo) + "\" + ccTexto)
             If ccIndex = vbDirectory Then
              Load mCiclo0(mCiclo0.Count)
              mCiclo0(mCiclo0.Count - 2).Caption = ccTexto
             End If
            End If
            ccTexto = Dir
           Loop: Unload mCiclo0(mCiclo0.Count - 1)
   Case 1: mPrograma1.Enabled = True: mPrograma1.Caption = "pr" + CStr(ccTempo)
           For ccIndex = mCiclo1.Count - 1 To 1 Step -1
            Unload mCiclo1(ccIndex) 'Elimina los ciclos anteriorees
           Next ccIndex
           ccTexto = Dir(Ruta + "pr" + CStr(ccTempo) + "\", vbDirectory)
           Do While ccTexto <> ""
            If ccTexto <> ".." And ccTexto <> "." Then
             ccIndex = GetAttr(Ruta + "pr" + CStr(ccTempo) + "\" + ccTexto)
             If ccIndex = vbDirectory Then
              Load mCiclo1(mCiclo1.Count)
              mCiclo1(mCiclo1.Count - 2).Caption = ccTexto
             End If
            End If
            ccTexto = Dir
           Loop: Unload mCiclo1(mCiclo1.Count - 1)
   Case 2: mPrograma2.Enabled = True: mPrograma2.Caption = "pr" + CStr(ccTempo)
           For ccIndex = mCiclo2.Count - 1 To 1 Step -1
            Unload mCiclo2(ccIndex) 'Elimina los ciclos anteriorees
           Next ccIndex
           ccTexto = Dir(Ruta + "pr" + CStr(ccTempo) + "\", vbDirectory)
           Do While ccTexto <> ""
            If ccTexto <> ".." And ccTexto <> "." Then
             ccIndex = GetAttr(Ruta + "pr" + CStr(ccTempo) + "\" + ccTexto)
             If ccIndex = vbDirectory Then
              Load mCiclo2(mCiclo2.Count)
              mCiclo2(mCiclo2.Count - 2).Caption = ccTexto
             End If
            End If
            ccTexto = Dir
           Loop: Unload mCiclo2(mCiclo2.Count - 1)
   Case 3: mPrograma3.Enabled = True: mPrograma3.Caption = "pr" + CStr(ccTempo)
           For ccIndex = mCiclo3.Count - 1 To 1 Step -1
            Unload mCiclo3(ccIndex) 'Elimina los ciclos anteriorees
           Next ccIndex
           ccTexto = Dir(Ruta + "pr" + CStr(ccTempo) + "\", vbDirectory)
           Do While ccTexto <> ""
            If ccTexto <> ".." And ccTexto <> "." Then
             ccIndex = GetAttr(Ruta + "pr" + CStr(ccTempo) + "\" + ccTexto)
             If ccIndex = vbDirectory Then
              Load mCiclo3(mCiclo3.Count)
              mCiclo3(mCiclo3.Count - 2).Caption = ccTexto
             End If
            End If
            ccTexto = Dir
           Loop: Unload mCiclo3(mCiclo3.Count - 1)
  End Select
 Next ccTempo
End Function
 
Private Sub Form_Load()
 ChecaCiclos
End Sub

Saludos y felices líneas de programación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 145
Ha aumentado 1 puesto en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Indice en menus

Publicado por Sahid Ra Gutierrez Cruz (191 intervenciones) el 13/03/2021 11:24:12
Por cierto aca les dejo otra duda respecto a lo mismo para simplificar con la respuesta que también solucione

Esto es lo que complementa porque no quería escribir tanto, una función fue la solución.

https://www.lawebdelprogramador.com/foros/Visual-Basic/1778346-Ayuda-con-funcion-e-indice-de-menus-incluye-codigo-fuente.html

Salu2 y Felices líneas de programación
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar