Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Dark side of Programming
DF2 :: ФОРУМЫ > Основные форумы > Софт и железо > Программирование / Coding
Страницы: 1, 2
DracoLich
Как можно сделать окно "Открыть" в VB??
Т.е. при нажатии на кнопку открывается стандартный диалог Win "Открыть" - как это реализовать?
Bourn
2 DracoLich
находим в компонентах CommonDialog и добавляем его на форму, после этого вызывая различные диалоги можно сохранять, открывать, просматривать цвет, шрифт и т.п.
есть так же способ без библиотеки - напрямую ф-я
Irh
Код
       Dim dlg As FileDialog = New OpenFileDialog
       dlg.ShowDialog()
       MsgBox(dlg.FileName)
DracoLich
Bourn, спасибо.
Irh, не понял, что с этим делать smile.gif)
Еще вопрос - как можно вживить опцию "отмена"? Т.е. чтоб возвращалось предыдущее состояние текст. окна до последнего изменения, т.е. стандартная "отмена"?
Guevara-chan
Цитата
echo set FSO=createobject("scripting.filesystemobject")>>%temp%\temp.vbs

А это-то нафига ? От жадности ?
Bourn
Цитата(DracoLich @ 08 Feb 2008, 19:56)
Еще вопрос - как можно вживить опцию "отмена"? Т.е. чтоб возвращалось предыдущее состояние текст. окна до последнего изменения, т.е. стандартная "отмена"?

не совсем понял,"отмена" в каком именно окне, и к какому первоначальному состоянию?
DracoLich
То бишь "отмена" в Блокноте - отменяет последнее действие с текстом. Вот точно то же и нуно...
Bourn
2 DracoLich
ты можешь еще точнее выражаться что и где тебе надо, я потому что просто пока догадываюсь то что ты хотел сказать...
Ctrl+Z не пашет?
DracoLich
В текст окне - нет. Там изменяешь текст, и никак не вернуть обратно прежнее... Мне же нужно реализовать "возврат"
Guevara-chan
Цитата(DracoLich @ 08 Feb 2008, 22:15)
В текст окне - нет. Там изменяешь текст, и никак не вернуть обратно прежнее... Мне же нужно реализовать "возврат"

TextBox ? Ну, в общем, варианты тут какие есть:

1) Запоминай каждое сделанное изменение текста в список или массив. По щелчку кнопки - восстанавливаешь пердыдущий вариант текста на основе запомненной информации.
2) Аналогично запоминай после каждого редактирования значение текстового поля. В таком случае просто копируешь обратно старый текст при нажатии кнопки.

Как из этих двух способов использовать - решать тебе. Отмечу, что первый предпочтительнее для больших текстов (ну, собственно, как в упомянутом тобой Блокноте), второй же - для одиночных строк (путь к файлу, например).
Bourn
примерно так
Код
Dim back() As String
Dim bint As Integer

Private Sub Command1_Click()
If bint >= 0 Then
   ReDim Preserve back(bint)
   Text1.Text = back(bint)
   bint = bint - 1
End If
End Sub

Private Sub Form_Load()
bint = -1
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
bint = bint + 1
ReDim Preserve back(bint)
back(bint) = Text1.Text
End Sub

P.S. у меня Ctrl+Z пашет...
Guevara-chan
Это реализация второго способа, если кто не понял).
DracoLich
Спасибо, работает. Еще - как можно "прочитать" определенную (по номеру) строку из txt-файла?
Bourn
всмысле? что значит по номеру? если считать строкой последовательность символов разделенных vbCrLf, тогда попробуй считать командой:
Line Input #файл,строка
Guevara-chan
Цитата
Еще - как можно "прочитать" определенную (по номеру) строку из txt-файла?

Размер строк заранее известен ?
DracoLich
Нет, но "читать" надо лишь до Entera, т.е. новой строки.
Guevara-chan
Цитата(DracoLich @ 11 Feb 2008, 11:52)
Нет, но "читать" надо лишь до Entera, т.е. новой строки.

Ну, значит придется последоватеильно считать до нужной.
Bourn
2 DracoLich
Кстати, в блокноте новая строка начинается после последовательности в 1024 символа, на самом деле строка продолжается до Enter'a, но режется при просмотре на блоки длинной 1024 символа.
Есть конечно еще другой метод, и я тебе могу предложить кучу этих методов, но тот что я предложил выше - удобнее всего, и проще для твоего понимания smile.gif.
sergroj
Цитата(DracoLich @ 09 Feb 2008, 19:53)
Спасибо, работает.

Не, криво. Все "левые" нажатия клавишь будет добавлять как отмену. У контрола, ведь, должно быть событие типа "OnChange". Хотя, TextBox и сам должен делать отмену, но только 1 действия.
Bourn
Цитата(sergroj @ 13 Feb 2008, 01:53)
Не, криво. Все "левые" нажатия клавишь будет добавлять как отмену. У контрола, ведь, должно быть событие типа "OnChange". Хотя, TextBox и сам должен делать отмену, но только 1 действия.

можно повесить на ф-ю
Код
Private Sub Text1_Change()
End Sub

вот только надо определиться что событие вызывается после изменения текста
gamecreator
можно запоминать текст при потере фокуса или по таймеру.
Bourn
можно и так. только если по таймеру надо сравнивать не один и тот же текст все время запоминаем...
gamecreator
Цитата(Bourn @ 13 Feb 2008, 20:46)
надо сравнивать не один и тот же текст все время запоминаем...

это имеет значение только в случае с многократной отменой
Bourn
да и с однократной тоже бы, особенно если текст большой, хотя в VB всеравно производительность низкая...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.