Войти

Показать полную графическую версию : [решено] Visual basic 6.0 сохранить изменения в текстовом поле


artemu88
28-08-2018, 12:07
Добрый день! Хотел написать программу, в качестве шаблона использовал базу данных 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
Хотел спросить как сохранить изменения в текстовых полях - 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
Я хотел, чтобы эти значения (в текстовых полях) подтягивались с помощью кнопки применить, а потом сохранялись по закрытии программы и загружались при новом открытии. Или это то же самое?

Iska
28-08-2018, 13:23
чтобы эти значения (в текстовых полях) подтягивались с помощью кнопки применить »
Э… Поясните, какой смысл Вы вкладываете в «эти значения … подтягивались»?

а потом сохранялись по закрытии программы и загружались при новом открытии. »
При выгрузке формы значения текстовых полей сохраняются в ini-файл, одноимённый имени исполняемого файла приложения, расположенного рядом с с последним:
https://i.imgur.com/TinbxuB.png
При загрузке формы значения из ini-файла загружаются и присваиваются текстовым полям.

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

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

Я просто хотел на кнопку сделать (кнопка сохранить). »
Помещаете:
INIWrite "Global", "TextBox1", Text1.Text, strPath2Ini
INIWrite "Global", "TextBox2", Text2.Text, strPath2Ini

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

artemu88
29-08-2018, 11:24
Спасибо большое, все заработало!
Не подскажете, какие книги по vb6 можно почитать, чтобы изучить в полном объеме?

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

Iska
29-08-2018, 14:50
Хотя нет, одну таки посоветую: Dan Appleman's Visual Basic Programmer's Guide to the Win32 API: Dan Appleman: 9780672315909: Amazon.com: Books (https://www.amazon.com/Applemans-Visual-Basic-Programmers-Guide/dp/0672315904), (есть перевод на русский язык, ищите по: Дэн Эпплман, «Win32 API и Visual Basic»). Помогает понять внутреннюю кухню VB, что на самом деле происходит «за кадром» при исполнении приложения, написанного на VB.

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




© OSzone.net 2001-2012