Autor
|
Tema: Almacenar opcion de OptionButton en archivo ini (Leído 5,228 veces)
|
rapbyone
Desconectado
Mensajes: 173
|
Amigos les cuento, tengo el siguiente código, que me permite cambiar archivos de una carpeta a otra y ademas ir mostrando diferentes imágenes al revisar las opciones: Private Sub Command1_Click() 'Si está seleccionado el Option1 se ejecuta la siguiente condición If Option1.Value = True Then Kill "C:\destino\unknow_00053.fnt" MsgBox "Fuente por defecto" End If
'Si está seleccionado el Option2 esta If Option2.Value = True Then FileCopy "C:\fnt\F2\unknow_00053.fnt", "C:\destino\unknow_00053.fnt" MsgBox "Fuente cambiada" End If
'Si está seleccionado el Option3 se ejecuta esta otra If Option3.Value = True Then FileCopy "C:\fnt\F3\unknow_00053.fnt", "C:\destino\unknow_00053.fnt" MsgBox "Fuente cambiada" End If
End Sub
Private Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)
End Sub
Private Sub Option1_Click() Image3.Visible = False Image2.Visible = False Image1.Visible = True End Sub
Private Sub Option2_Click() Image3.Visible = False Image2.Visible = True Image1.Visible = False End Sub
Private Sub Option3_Click() Image3.Visible = True Image2.Visible = False Image1.Visible = False Así se ve el programa: Lo que quiero es que al elegir una opción, se cree un archivo ini, recordando la opción escogida, por lo tanto, si elijo la fuente 2, al cerrar y abrir el programa, este muestre la opción escogida. Gracias amigos
|
|
|
En línea
|
|
|
|
Danyfirex
Desconectado
Mensajes: 493
My Dear Mizuho
|
Hola. podrias hacer algo masomenos así: '--------for INI file read/write Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long '------------------- 'reads ini string Public Function ReadIni(FileName As String, Section As String, Key As String) As String Dim RetVal As String * 255, v As Long v = GetPrivateProfileString(Section, Key, "", RetVal, 255, FileName) ReadIni = Left(RetVal, v) End Function 'writes ini Public Sub WriteIni(FileName As String, Section As String, Key As String, Value As String) WritePrivateProfileString Section, Key, Value, FileName End Sub Private Sub Form_Load() Dim valorleido As String Dim NombreArchivo As String NombreArchivo = App.Path & "\Config.ini" If Dir(NombreArchivo) <> "" Then 'verificamos si existe el archivo pa' cuando abrimos por primera vez valorleido = ReadIni(NombreArchivo, "Opcion", "Valor") Select Case valorleido 'verificamos el valor leido y asignamos Case "1" Option1.Value = True Case "2" Option2.Value = True Case "3" Option3.Value = True End Select End If End Sub Private Sub Form_Unload(Cancel As Integer) Dim Str As String Dim miOboton As Control Dim valorescribir As String Dim NombreArchivo As String NombreArchivo = App.Path & "\Config.ini" 'Verificamos cual option buttons esta seleccionado For Each miOboton In Me.Controls If TypeOf miOboton Is OptionButton And miOboton.Value = True Then Select Case miOboton.Name Case "Option1" valorescribir = "1" Case "Option2" valorescribir = "2" Case "Option3" valorescribir = "3" End Select End If Next WriteIni NombreArchivo, "Opcion", "Valor", valorescribir End Sub
Quizás lo complique un poco :S. pero funciona bien.
|
|
|
En línea
|
|
|
|
rapbyone
Desconectado
Mensajes: 173
|
Gracias por la respuesta, deje así el código completo: '--------for INI file read/write Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long '------------------- Private Sub Command1_Click() 'Si está seleccionado el Option1 se ejecuta la siguiente condición If Option1.Value = True Then Kill "C:\destino\unknow_00053.fnt" MsgBox "Fuente por defecto" End If
'Si está seleccionado el Option2 esta If Option2.Value = True Then FileCopy "C:\fnt\F2\unknow_00053.fnt", "C:\destino\unknow_00053.fnt" MsgBox "Fuente cambiada" End If
'Si está seleccionado el Option3 se ejecuta esta otra If Option3.Value = True Then FileCopy "C:\fnt\F3\unknow_00053.fnt", "C:\destino\unknow_00053.fnt" MsgBox "Fuente cambiada" End If
End Sub
Private Sub Option1_Click() Image3.Visible = False Image2.Visible = False Image1.Visible = True End Sub
Private Sub Option2_Click() Image3.Visible = False Image2.Visible = True Image1.Visible = False End Sub
Private Sub Option3_Click() Image3.Visible = True Image2.Visible = False Image1.Visible = False End Sub
'reads ini string Public Function ReadIni(FileName As String, Section As String, Key As String) As String Dim RetVal As String * 255, v As Long v = GetPrivateProfileString(Section, Key, "", RetVal, 255, FileName) ReadIni = Left(RetVal, v) End Function 'writes ini Public Sub WriteIni(FileName As String, Section As String, Key As String, Value As String) WritePrivateProfileString Section, Key, Value, FileName End Sub Private Sub Form_Load() Dim valorleido As String Dim NombreArchivo As String NombreArchivo = App.Path & "\Config.ini" If Dir(NombreArchivo) <> "" Then 'verificamos si existe el archivo pa' cuando abrimos por primera vez valorleido = ReadIni(NombreArchivo, "Opcion", "Valor") Select Case valorleido 'verificamos el valor leido y asignamos Case "1" Option1.Value = True Case "2" Option2.Value = True Case "3" Option3.Value = True End Select End If End Sub Private Sub Form_Unload(Cancel As Integer) Dim Str As String Dim miOboton As Control Dim valorescribir As String Dim NombreArchivo As String NombreArchivo = App.Path & "\Config.ini" 'Verificamos cual option buttons esta seleccionado For Each miOboton In Me.Controls If TypeOf miOboton Is OptionButton And miOboton.Value = True Then Select Case miOboton.Name Case "Option1" valorescribir = "1" Case "Option2" valorescribir = "2" Case "Option3" valorescribir = "3" End Select End If Next WriteIni NombreArchivo, "Opcion", "Valor", valorescribir End Sub
Pero al momento de cerrar el programa, me da este error: En la depuración me marca esto: Gracias por la ayuda
|
|
|
En línea
|
|
|
|
Danyfirex
Desconectado
Mensajes: 493
My Dear Mizuho
|
Ups no me di cuenta que tenias un frame. y los frames no tiene la propiedad value :S cámbialo por este código. Private Sub Form_Unload(Cancel As Integer) Dim Str As String Dim miOboton As Control Dim valorescribir As String Dim NombreArchivo As String NombreArchivo = App.Path & "\Config.ini" 'Verificamos cual option buttons esta seleccionado For Each miOboton In Me.Controls If TypeOf miOboton Is OptionButton Then If miOboton.Value = True Then Select Case miOboton.Name Case "Option1" valorescribir = "1" Case "Option2" valorescribir = "2" Case "Option3" valorescribir = "3" End Select End If End If Next WriteIni NombreArchivo, "Opcion", "Valor", valorescribir End Sub
saludos
|
|
|
En línea
|
|
|
|
rapbyone
Desconectado
Mensajes: 173
|
Muchas gracias funciono perfecto. Te quiero pedir lo ultimo por favor y es el problema que no he podido solucionar, lo que pasa es que mi programa es un launcher para un programa determinado. El problema es que la ruta de instalación de ese programa cambia según los bits del sistema operativo, por lo tanto si quiero copiar un archivo a una carpeta que esta en archivos de programa. solo funcionaria en algunos pc, por ejemplo en windows 32 bits: If Option2.Value = True Then FileCopy "C:\fnt\F2\unknow_00053.fnt", "C:\Archivos de programa\Messenger\fuentes" End If En windows 64 bits If Option2.Value = True Then FileCopy "C:\fnt\F2\unknow_00053.fnt", "Archivos de programa (x86)\Messenger\fuentes" End If Que se me ocurre ami: Poder pedirle al usuario la primera ves que abre el programa que selecciona la ruta donde tiene instalado el programa y que se almacene en un archivo ini. y guardar la ruta escogida en una variable, algo así: 'Se declaran las variable Dim RutaDatos as String
Private Sub Option1_Click() RutaDatos = "ruta almacena en ini" End Sub Después para pegar el archivo me posicionaría en la ruta seleccionada por el usuario y pegaría el archivo. If Option2.Value = True Then FileCopy RutaDatos/Font/unknow_00053.fnt" End If Se podría hacer algo así? ¿Como podría hacerlo? Prometo no molestar mas si me ayudas por favor
|
|
« Última modificación: 6 Diciembre 2013, 19:03 pm por rapbyone »
|
En línea
|
|
|
|
Danyfirex
Desconectado
Mensajes: 493
My Dear Mizuho
|
Pues para eso existe funciones. ejemplo esta simple. dim Archivosdeprograma as string 'C:\Archivos de programa\ o Archivos de programa (x86) respectivamente Archivosdeprograma=Environ$("ProgramFiles")
saludos
|
|
|
En línea
|
|
|
|
rapbyone
Desconectado
Mensajes: 173
|
Pues para eso existe funciones. ejemplo esta simple. dim Archivosdeprograma as string 'C:\Archivos de programa\ o Archivos de programa (x86) respectivamente Archivosdeprograma=Environ$("ProgramFiles")
saludos Perfecto, pero que pasaría si el programa estuviera instalado en otro unidad?? o en otra carpeta fuera de Archivos de programa? De todas maneras muchas gracias, me has ayudado un monton
|
|
|
En línea
|
|
|
|
Danyfirex
Desconectado
Mensajes: 493
My Dear Mizuho
|
pues entonces tiene que ver si ese programa crea alguna clave de registro.y guiarte por ahí.
saludos
|
|
|
En línea
|
|
|
|
rapbyone
Desconectado
Mensajes: 173
|
Pues para eso existe funciones. ejemplo esta simple. dim Archivosdeprograma as string 'C:\Archivos de programa\ o Archivos de programa (x86) respectivamente Archivosdeprograma=Environ$("ProgramFiles")
saludos Me entro una duda, quedaría algo así? : Private Sub Command1_Click() Dim Archivosdeprograma As String 'C:\Archivos de programa\ o Archivos de programa (x86) respectivamente Archivosdeprograma = Environ$("ProgramFiles")
FileCopy (Environ$("ProgramFiles") & "msn\dat\Launcher\Fonts\1\unknow_00053.fnt"), (Environ$("ProgramFiles") & "MSN\resources\unknow_00053.fnt")
End Sub
Como tendría que hacerlo?? por que me da error.
|
|
« Última modificación: 12 Diciembre 2013, 15:15 pm por rapbyone »
|
En línea
|
|
|
|
Danyfirex
Desconectado
Mensajes: 493
My Dear Mizuho
|
Verifica las rutas en un msgbox o consola. así debería funcionar. se me olvido que Environ$ retorna sin el \FileCopy (Environ$("ProgramFiles") & "\msn\dat\Launcher\Fonts\1\unknow_00053.fnt"), (Environ$("ProgramFiles") & "\MSN\resources\unknow_00053.fnt")
saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Almacenar archivo php en mysql
PHP
|
andryus
|
1
|
1,958
|
11 Enero 2007, 13:34 pm
por Ertai
|
|
|
[batch]Almacenar el contenido de un archivo .txt en una variable.
« 1 2 »
Scripting
|
MK-Ultra
|
17
|
19,895
|
8 Julio 2008, 17:48 pm
por Coegho
|
|
|
Comando/opción MS-DOS insertar linea en archivo .txt [Solucionado]
Scripting
|
Forau
|
5
|
26,824
|
7 Junio 2010, 17:22 pm
por flony
|
|
|
Todo lo que no descargarás de Facebook con la opcion “Crear mi archivo”
Noticias
|
wolfbcn
|
0
|
1,509
|
23 Abril 2018, 21:28 pm
por wolfbcn
|
|
|
WaitList.dat, el archivo secreto de Windows que podría almacenar contraseñas ...
Noticias
|
wolfbcn
|
0
|
1,209
|
19 Septiembre 2018, 15:10 pm
por wolfbcn
|
|