Menú en VB

Estoy preparando mi proyecto final de carrera y me ha surgido la siguiente duda!
Quiero que a medida que se ejecuta mi programa de VB, me aparezca en un menú los archivos ( la ruta de estos archivos) a los que he ido accediendo anteriormente, para poder acceder a ellos de forma más rápida!
¿Cómo lo puedo hacer?
Respuesta
1
He aquí una manera de hacerlo:
La idea es crear una opción del Menú de Archivo (imagino) y las propiedades:
Caption: "Hist_Arch" (En realidad no importa)
Name: "histarch"
Index: 0
El historial de Archivos abiertos va en el Archivo de Texto "listarch.txt" en el Directorio de la Aplicación.
El Evento Load del Form:
Private Sub Form_Load()
Dim i As Byte, archivo As String
'Si existe el historial lo carga en el Menú
If Dir(App.Path & "\listarch.txt") <> "" Then
i = 0
Open App.Path & "\listarch.txt" For Input As #1
While Not EOF(1)
Input #1, archivo
If i = 0 Then 'Primero de la Lista
histarch(0).Caption = archivo
Else
Load histarch(i) 'Crea nuevo ítem del Menú
histarch(i).Caption = archivo
End If
i = i + 1
Wend
Close 1
Else
'De lo contrario cambia el Caption y bloquea la opción
histarch(0). Caption = "Sin Archivos"
histarch(0).Enabled = False
End If
End Sub
El Evento Click del Menú histarch:
Private Sub histarch_Click(Index As Integer)
If Dir(App.Path & "\" & histarch(Index).Caption) = "" Then
MsgBox "El archivo no existe", , "Error"
Else
'Aquí el Código para abrir el archivo
verif_menu(histarch(Index).Caption))
End If
End Sub
Cuando se abra el archivo, si existe, llama la función verif_menu y pasa como parámetro el nombre del Archivo abierto. La función:
Sub verif_menu(a As String)
Dim i As Byte, max_hist As Byte
max_hist = 5 'Número máximo de archivos en el Historial
'Ningún Archivo. Agrega el Nuevo Archivo
If histarch.Count = 1 And histarch(0).Enabled = False Then
histarch(0).Caption = a
histarch(0).Enabled = True
Open App.Path & "\listarch.txt" For Append As #1
Write #1, a
Close 1
Exit Sub
End If
'Ya existen archivos. Menos de max_hist. Agrega Archivo
If histarch.Count < max_hist Then
'Verifica si ya existe
For i = 0 To histarch.Count - 1
If histarch(i).Caption = a Then Exit Sub
Next i
Load histarch(histarch.Count)
histarch(histarch.Count - 1).Caption = a
Open App.Path & "\listarch.txt" For Append As #1
Write #1, a
Close 1
Exit Sub
End If
'Más de max_hist archivos. Actualiza la Lista. Agrega Archivo
Kill App.Path & "\listarch.txt"
Open App.Path & "\listarch.txt" For Append As #1
For i = 1 To max_hist - 1
histarch(i - 1).Caption = histarch(i).Caption
Write #1, histarch(i - 1).Caption
Next i
histarch(i - 1).Caption = a
Write #1, histarch(i - 1).Caption
Close 1
End Sub
Para el ejemplo asumo que los archivos que se abren están el Directorio de la Aplicación, pero puede cambiarse, claro ...
Es todo.
Suerte !
Rogers R.

3 respuestas más de otros expertos

Respuesta
1
Eso es relativamente sencillo.
Lo que tienes que hacer es al abrir un archivo o cerrarlo (eso depende del gusto tuyo) generes en el registro de windows claves con las rutas de esos archivos a las que iras accediendo cuando inicies tu programa. Para eso existen 2 funciones: "SaveSetting" y "GetSetting". Y se usan así:
GetSetting(nombre-aplicacion, seccion, clave)
SaveSetting nombre-aplicacion, seccion, clave, valor-clave
Con eso ya podes grabar y recuperar los datos, el tema de la estética y como va a funcionar queda a tu gusto.
Cualquier duda o aclaración consúltame.
Me gustaría que me aclararas dos cosas:
1.Yo solo quiero tener memoria de los archivos que abro durante la ejecución de mi programa, ¿entonces esto me sirve?
2.No entiendo bien el uso de parámetros sección, clave y valor clave
Me podrías explicar con un ejemplito, muchísimas gracias de verdad!
Antes de explicar me gustaría que me aclares algo: ¿Vos quieres memorizar los archivos que abrís solo durante la ejecución o también quieres que queden guardados para próximas aperturas del programa?. Cuando me digas te envío directamente un ejemplo.
Gracias por tus respuestas!
Yo solo quiero memorizar archivos durante le ejecución!
Muchísimas gracias de verdad
Bueno eso es más simple. Lo que tienes que hacer es declarar 5 variables (5 o la cantidad de archivos que quieras memorizar, si es infinita cambia un poco el código, si me lo pedís luego te lo paso también). Y cada vez que abrís exitosamente un archivos guardas en la 1ra la dirección del archivo, si esta sin dirección, sino la guardas en la 2da y así hasta guardarla en el 5to, así seria un ejemplo:
dim d1,d2,3,4,5 as string '(esto en la parte de publico o para que sea disponible en todo el formulario)
'Cada vez que abris un archivo pones:
if len(d1)=0 then
d1='aca pones la direccion'
elseif len(d2)=0 then
d2='aca pones la direccion'
elseif len(d3)=0 then
d3='aca pones la direccion'
elseif len(d4)=0 then
d4='aca pones la direccion'
else
d5='aca pones la direccion'
Endif
Eso es en forma general, luego vos lo adaptas a tu programa.
Respuesta
1
Según vayas abriendo archivos, por código tendrás que ir añadiendo elementos de menu al menu que tengas en pantalla.
Respuesta
1
La única forma que se me ocurre es que diseñes una base de datos de access con una tabla en la que le indiques los datos del archivo que se vaya abriendo al momento de seleccionarlo y ahí llevar la historia, los campos pueden ser la fecha, las veces que lo han abierto, etcétera, esto pues, se deja a las necesidades de cada persona.
Con esta base, puedes presentar la consulta en una forma y con ello presentarla en tu sistema.
Gracias por contestar a ver me explico un poco más.
MI aplicación abre cierto tipo de archivos y trabaja con ellos, me gustaría tener en un menu acceso a estos últimos archivos abiertos durante la ejecución de mi aplicación
Espero que esto clarifique
UN saludo
No entendí que archivos y como quieres ver la historia.
Me puedes explicar un poco más

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas