Código
Option Explicit Const APPLICATION As String = "MiPrograma" Dim m_Left As Single Dim m_Top As Single Dim m_Width As Single Dim m_Height As Single Dim Path_Archivo_Ini As String 'Función api que recupera un valor-dato de un archivo Ini Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String) As Long 'Función api que Escribe un valor - dato en un archivo Ini Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal lpString As String, _ ByVal lpFileName As String) As Long 'Lee un dato _ ----------------------------- 'Recibe la ruta del archivo, la clave a leer y _ el valor por defecto en caso de que la Key no exista Private Function Leer_Ini(Path_INI As String, Key As String, Default As Variant) As String Dim bufer As String * 256 Dim Len_Value As Long Len_Value = GetPrivateProfileString(APPLICATION, _ Key, _ Default, _ bufer, _ Len(bufer), _ Path_INI) Leer_Ini = Left$(bufer, Len_Value) End Function 'Escribe un dato en el INI _ ----------------------------- 'Recibe la ruta del archivo, La clave a escribir y el valor a añadir en dicha clave Private Function Grabar_Ini(Path_INI As String, Key As String, Valor As Variant) As String WritePrivateProfileString APPLICATION, _ Key, _ Valor, _ Path_INI End Function Private Sub Form_Load() 'Path del fichero Ini Path_Archivo_Ini = App.Path & "\config.ini" ' Lee las Key y Les envia el valor por defecto por si no existe m_Left = Leer_Ini(Path_Archivo_Ini, "Left", 0) m_Top = Leer_Ini(Path_Archivo_Ini, "Top", 0) m_Width = Leer_Ini(Path_Archivo_Ini, "Width", 5000) m_Height = Leer_Ini(Path_Archivo_Ini, "Height", 5000) 'Posiciona el formulario con los valores del archivo Ini Move m_Left, m_Top, m_Width, m_Height End Sub Private Sub Form_Unload(Cancel As Integer) 'Escribe en el archivo Ini 'Posición del Form Call Grabar_Ini(Path_Archivo_Ini, "Left", Me.Left) Call Grabar_Ini(Path_Archivo_Ini, "Top", Me.Top) 'Tamaño del formulario Call Grabar_Ini(Path_Archivo_Ini, "Width", Me.Width) Call Grabar_Ini(Path_Archivo_Ini, "Height", Me.Height) End Sub
porque en el evento load del form no se llama a la funcion Leer_Ini, mientras que en el evento Unload del form si se lo hace?
gracias