Ukládání a obnovování pozic oken

Postup:
Do modulu se nejprve musí nadeklarovat následující API funkce pro práci s privátním INI souborem a je vhodné i nadeklarovat proměnnou, která bude udržovat jméno INI souboru přístupné pro celou aplikaci:

Public IniName As String

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

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
* každá deklarace musí být napsána na jedné, samostatné řádce.

Procedura pro ukládání pozice formuláře při jeho uzavření (předpokládá se formulář s hranicemi FIXED DIALOG):

Public Sub SaveFormPosition(F As Form)

   Dim X As Integer
   X = WritePrivateProfileString(F.Tag, "Top", CStr(F.Top), IniName)
   X = WritePrivateProfileString(F.Tag, "Left", CStr(F.Left), IniName)

End Sub

Procedura pro načtení pozice okna:

Public Sub GetFormPosition(F As Form)

   Dim X As Integer
   Dim Extr As String
   Extr = String(10, 0)
   X = GetPrivateProfileString(F.Tag, "Top", "0", Extr, 10, IniName)
   F.Top = Val(Extr)
   X = GetPrivateProfileString(F.Tag, "Left", "0", Extr, 10, IniName)
   F.Left = Val(Extr)

End Sub

Aktivace proměnné IniName v události LOAD spouštěcího formuláře:

IniName = App.Path +”\muj.ini”

Příklad volání procedur:

Při volání formuláře:
GetFormPosition jméno_formuláře
jméno_formuláře.Show

Při uzavírání formuláře:
SaveFormPosition Me
Unload Me

Zpět

Autor: The Bozena