Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Visual basic 6.0 сохранить изменения в текстовом поле (http://forum.oszone.net/showthread.php?t=336433)

artemu88 28-08-2018 12:07 2828925

Visual basic 6.0 сохранить изменения в текстовом поле
 
Вложений: 1
Добрый день! Хотел написать программу, в качестве шаблона использовал базу данных biblio.mdb. Есть 2 текстовых поля и два поля со списком бд, они связаны кнопкой "применить" так:

Private Sub Command1_Click()
Text1.Text = DBCombo1.Text
Text2.Text = DBCombo2.Text
End Sub
Также есть кнопки сохранить и выход.

Хотел спросить как сохранить изменения в текстовых полях - Text1.Text и Text2.Text (чтобы программа открылась с теми же значениями, что и были выбраны при закрытии)?

Заранее спасибо!

Iska 28-08-2018 12:32 2828930

Цитата:

Цитата artemu88
Хотел спросить как сохранить изменения в текстовых полях - Text1.Text и Text2.Text (чтобы программа открылась с теми же значениями, что и были выбраны при закрытии)? »

Сохраните их в ini-файле, например:
Скрытый текст
Код:

Option Explicit

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 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
                       
Public strPath2Ini As String

Private Sub Form_Initialize()
    strPath2Ini = App.Path & "\" & App.EXEName & ".ini"
End Sub

Private Sub Form_Load()
    Text1.Text = INIRead("Global", "TextBox1", strPath2Ini)
    Text2.Text = INIRead("Global", "TextBox2", strPath2Ini)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    INIWrite "Global", "TextBox1", Text1.Text, strPath2Ini
    INIWrite "Global", "TextBox2", Text2.Text, strPath2Ini
End Sub

Public Function INIWrite(sSection As String, sKeyName As String, sNewString As String, sINIFileName As String) As Boolean
    Call WritePrivateProfileString(sSection, sKeyName, sNewString, sINIFileName)
    INIWrite = (Err.Number = 0)
End Function

Public Function INIRead(sSection As String, sKeyName As String, sINIFileName As String) As String
    Dim sRet As String
   
    sRet = String(255, Chr(0))
    INIRead = Left(sRet, GetPrivateProfileString(sSection, ByVal sKeyName, "", sRet, Len(sRet), sINIFileName))
End Function


Вместо того, чтобы сохранять в процедуре Form_Unload, Вы можете делать это в процедуре обработки нажатия кнопки «Сохранить».

artemu88 28-08-2018 12:44 2828932

Я хотел, чтобы эти значения (в текстовых полях) подтягивались с помощью кнопки применить, а потом сохранялись по закрытии программы и загружались при новом открытии. Или это то же самое?

Iska 28-08-2018 13:23 2828937

Цитата:

Цитата artemu88
чтобы эти значения (в текстовых полях) подтягивались с помощью кнопки применить »

Э… Поясните, какой смысл Вы вкладываете в «эти значения … подтягивались»?

Цитата:

Цитата artemu88
а потом сохранялись по закрытии программы и загружались при новом открытии. »

При выгрузке формы значения текстовых полей сохраняются в ini-файл, одноимённый имени исполняемого файла приложения, расположенного рядом с с последним:
Скрытый текст

При загрузке формы значения из ini-файла загружаются и присваиваются текстовым полям.

artemu88 28-08-2018 13:48 2828939

Теперь понял
А для того, чтобы появился ini нужно скомпилировать программу при помощи Package & Deployment Wizard?
И писать все нужно код такой же как вы сказали?
Я просто хотел на кнопку сделать (кнопка сохранить).
При сохранении проекта у меня никакого файла ini нет

Iska 28-08-2018 15:18 2828952

Цитата:

Цитата artemu88
При сохранении проекта у меня никакого файла ini нет »

Естественно. Запустите проект на исполнение хотя бы один раз — ini-файл появится. Конечно, расположение его должно быть не рядом с исполняемым файлом проекта (это я только для простоты сделал, туда у пользователя тупо может не быть прав на запись), а в профиле текущего пользователя.

Цитата:

Цитата artemu88
Я просто хотел на кнопку сделать (кнопка сохранить). »

Помещаете:
Код:

    INIWrite "Global", "TextBox1", Text1.Text, strPath2Ini
    INIWrite "Global", "TextBox2", Text2.Text, strPath2Ini

не в процедуру выгрузки формы Form_Unload(), а в процедуру обработки нажатия кнопки «Сохранить», только и всего.

artemu88 29-08-2018 11:24 2829120

Спасибо большое, все заработало!
Не подскажете, какие книги по vb6 можно почитать, чтобы изучить в полном объеме?

Iska 29-08-2018 11:49 2829126

Любые. Главное — объём: желательно не менее 1200~1500 страниц, чтобы худо-бедно были рассмотрены основные вопросы и технологии.

Iska 29-08-2018 14:50 2829167

Хотя нет, одну таки посоветую: Dan Appleman's Visual Basic Programmer's Guide to the Win32 API: Dan Appleman: 9780672315909: Amazon.com: Books, (есть перевод на русский язык, ищите по: Дэн Эпплман, «Win32 API и Visual Basic»). Помогает понять внутреннюю кухню VB, что на самом деле происходит «за кадром» при исполнении приложения, написанного на VB.

artemu88 30-08-2018 13:15 2829302

Спасибо, скачал! Заказал еще одну книгу по vb6 Сайлер Б. Использование Visual Basic 6. Классическое издание, правда 800 страниц, но по описанию вроде как ничего, потому как мой самоучитель даже бд не рассматривает


Время: 09:23.

Время: 09:23.
© OSzone.net 2001-