|
6 Кб. |
|
| Уважаемые коллеги!
Помогите решить задачу. Существует некая простая ленточная форма с подвалом внизу. В этом подвале строго друг под другом размещено три поля типа "Гиперссылка" в которые копируются относительные сетевые пути на .pdf файлы в некой расшаренной папке.
Вполне очевидно, что файлы беспроблемно открываются, в случае, если на это поле единожды нажать.
Но как, кроме как путем простого копирования выбирать и записывать в соответствующие поля эти самые пути ну, например, с помощью кнопочки Browse?
Необходимо на выходе получить только путь к некому файлу в сети - не более того. Разместить рядом три маленькие кнопочки место позволяет.
Большое всем заранее спасибо! | |
|
| |
|
|
|
| Классическое решение - API функция GetOpenFileName. Примеров в инете не счесть.
Другой способ - использовать WizHook (скрытый дочерний объект Access):
WizHook.Key = 51488399
wzhwndOwner = 0&
wzAppName = ""
wzDlgTitle = "Выберите хоть что нибудь..."
wzOpenTitle = "Выбрать"
wzInitialDir = "c:\"
wzfOpen = True
wzflags = 0
wzView = 0
wzFile = String(255, Chr(0))
wzFilter = "Файлы Excel (*.xls;*.xla;*.mxl)|Все файлы (*.*)"
wzFilterIndex = 0 'Для "Файлы Excel"
ret = WizHook.GetFileName(wzhwndOwner, _
wzAppName, wzDlgTitle, wzOpenTitle, wzFile, _
wzInitialDir, wzFilter, wzFilterIndex, _
wzView, wzflags, wzfOpen)
|
При других значениях wzfOpen и wzflags можно получить выбор нескольких файлов, выбор папки или сохранение файла. | |
|
| |
|
|
|
| Спасибо за ответ, Анатолий.
Но я, мягко говоря, небольшой в VB специалист. Каким образом прикрепить это, например, к кнопке с именем "Knopka1" и как к полю типа "гиперссылка", например, с именем "File1", которое и будет хранить собственно само значение (сетевой путь).
Ну или, например (что лучше), чтобы окошко для выбора файла (Browse) открывалось по двойному щелчку по самому полю, дабы не плодить лишние элементы управления в виде кнопок.
Спасибо. | |
|
| |
|
|
|
| Вот пример использования FileDialogOpen
Этот код можно повесить на кнопку Browse
' Определение пути таблицы Excell
Dim FName As String
Dim result As Integer
With Application.FileDialog(1)
.Title = "Поиск таблицы Excell"
.ButtonName = "Добавить"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "All", "*.*", 1
result = .Show
' Закоментированный фрагмент не дает возможности выйти пока не загрузится файл
'******************************************************************************
'If result = 0 Then
'Do Until (result <> 0)
'MsgBox ("Необходимо внести файл в базу")
'result = .Show
'Loop
'End If
'*********************************************************************************
FName = Trim(.SelectedItems.Item(1))
End With | |
|
| |
|
|
|
| Спасибо, FORMAT, но мне необходимо универсальное решение. почему именно Excel?
Ну или, в принципе, если была бы конкретная заточка под файлы формата .pdf - это было бы вообще идеальным решением.
Спасибо.
P.S. Насколько я понимаю, вешать необходимо было именно на событие "Нажатие кнопки"?
Как выглядел бы полный листинг, если бы, например, кнопка называлась бы, ну, например, "Knopka1"? Просто я не вижу и не совсем понимаю, где участвует сама привязка процедуры к имени кнопки. Реально ли реализовать сию схему именно с помощью события "двойное нажатие кнопки" на поле типа "гиперссылка"? | |
|
| |
|
|
|
| Эксель - это из моего примера. Замените Эксель на ПДФ и все.
Этот код полностью копируется в процедуру knopka1_Click
Обычно обрабатывается одинарное нажатие кнопки. Если уж так хочется то обрабатывайте событие
Knopka1__DblClick
В переменную FName - возвращается путь к файлу. Присваивайте полю гиперссылка значение FName. | |
|
| |
|
|
|
| Как именно изменить формат на PDF? Кстати, окошко Browse теперь безошибочно открывается, но при выборе файла, в поле FName типа "Гиперссылка" его значение почему-то не вставляется, а ведь должна вставляться ссылка, насколько я понимаю и ожидаю. В чем может быть дело?
И как понять "Присваивайте полю гиперссылка значение FName" - как это сделать - просто переименовать поле на "FName"? Этого достаточно? Все рано не работает. Ссылка в поле в результате не вставляется.
Большое спасибо! | |
|
| |
|
14 Кб. |
|
| так? | |
|
| |
|
|
|
| Да, Osmor, именно так! Спасибо тебе огромное! Ты действительно очень выручил! Там, правда, нужно было удалить дублирующую часть (" & "#" & strFile"), - в таком случае ссылка дублировалась дважды. А так, все именно так, как было нужно!
Также спасибо Format'у и Анатолию! | |
|
| |
|
|
|
| Кстати исходя из всего этого у меня появился еще один маленький вопрос: каким образом сделать, чтобы открывающееся окно у всех пользователей открывалось по умолчанию, например, в сетевой папке \\Server\Folder\?
Помогите пожалуйста с реализацией данной возможности! | |
|
| |