|
7 Кб. |
|
| в качестве упражнения сделал себе помогалку
панель меню, перелистывающая по 100 значков с указанием FaceID
Вдруг кому пригодится при разработке
Ссылок в референсах никаких ставить не надо.
Картинко: =>
Option Compare Database
Option Explicit
Dim FID1&, FID2&
Function BrowserFaceID(q&)
' передаются параметры -1(назад 100), 1(вперед 100), 0(старт меню)
Dim NewButton As Object, oPopUp As Object, cmbs As Object
Dim bl As Boolean, i&
bl = False
On Error GoTo err211:
Set cmbs = Application.CommandBars
' - - -
For Each oPopUp In cmbs
If oPopUp.Name = "FaceIds" Then bl = True
Next
' - - -
If Not bl Then
Set oPopUp = Application.CommandBars.Add(Name:="FaceIds", Temporary:=True)
With oPopUp.Controls.Add(Type:=1)
.faceID = 41
.OnAction = "=BrowserFaceID(-1)"
.width = 115
.Caption = "Назад"
End With
With oPopUp.Controls.Add(Type:=1)
.faceID = 39
.OnAction = "=BrowserFaceID(1)"
.Caption = "Вперед"
.width = 115
End With
Else
Set oPopUp = Application.CommandBars("FaceIds")
End If
' - - -
With oPopUp
.Visible = False
Select Case q
Case -1
If FID1 = 1 Then FID1 = 2901 Else FID1 = FID1 - 100
Case 1
If FID1 = 2901 Then FID1 = 1 Else FID1 = FID1 + 100
Case 0
FID1 = 1
End Select
FID2 = FID1 + 99
'Debug.Print FID1 & " - " & FID2
For Each NewButton In .Controls
If Not (NewButton.Caption = "Назад" Or NewButton.Caption = "Вперед") Then NewButton.Delete
Next
' - - -
For i = FID1 To FID2
With .Controls.Add(Type:=1)
.faceID = i
.Caption = "FaceID = " & i
End With
Next i
' - - -
.width = 250
.Visible = True
End With
Set oPopUp = Nothing
Set cmbs = Nothing
Exit Function
' - - -
err211:
Debug.Print Err.Description
Stop
End Function
|
| |
|
| |
|
|
|
| Йожик - а как ее присобачить и куа? откуда стартует - Call BrowserFaceID (0) | |
|
| |
|
26 Кб. |
|
| В модуль
или в модуль формы разработки.
Переменные модуля FID1 и FID2
Стартует вызовом BrowserFaceID 0
А иконки листаются верхними стрелочками на самой панели меню, которые вызывают процедуру с параметром -1 или +1
У меня, например, выделен модуль BuildBar для работы с меню
Пример использования:
На форме редактирования меню базы (пользовательского меню, дерево которого читается с серверной таблицы) установлена кнопочка faceID на нее повешен вызов BrowserFaceID 0
Когда мне надо выбрать значок для пользовательского меню, я наживамю кнопочку, появляется панель меню и верхними стрелочками я листаю иконки, всплывающие тултипы на которых показывают номер FaceID
Картинко: => | |
|
| |
|
|
|
|
|
Имеет смысл добавить, что значков-то более 5000
Но я поставил ограничение в 3000 для совместимости всех Access' ов и Offic'ов
| |
|
| |
|
|
|
|
|
|
| (затуманиваясь) градус понижать не будем. | |
|
| |
|
|
|
|
| Пипе-е-е-е-ец... (падает) | |
|
| |
|
197 Кб. |
|
| Полезная штучка. а то я использовал все панели - громоздко.
ПС. i не описана
For i = FID1 To FID2 | |
|
| |
|
|
|
| Да, надо объявить :) Сейчас исправлю. Полезная штучка. а то я использовал все панели - громоздко. | Так и я тоже мучился. А потом плагин нашел для Офиса, который листает.
Но плагин дело хорошее, а самонаписанное надежнее, как сапог в бою.
Поэтому и... | |
|
| |
|
|
|
| НЕ СМЕТЬ!!!
именем Революции ВСТАТЬ!!!
т.е. ПОДНЯТЬ!!!! | |
|
| |
|
26 Кб. |
|
| К вопросу, как применять:
http://hiprog.com/forum/files/10211-20120316131948.gif
там слева внизу ма-а-ленькая кнопочка памагаит. | |
|
| |
|
|
|
| Йожик лукааавит....
На картинко формы текстбокс FaceID недоступен,
значит, по идее, руками ни,
а в листинге я не вижу,
как кнопки коммандбара
присваивают значение своего FaceID полю форму.
Што-то Йожик недоговаривает....
:) | |
|
| |
|
|
|
| Так мне што теперь, выкладывать проект с формой по созданию и редактированию меню, вкупе с таблицами меню и ролей, которым разрешен доступ к элементам??? | |
|
| |
|
|
|
| Я думаю, демке никто бы не возражал, там есть что посмотреть. :)
Но я к чему речь то завел:
Если без подключения офисной библиотеки, то, вероятно,
возврат значения в форму через функцию в общем модуле?
Или без возврата значения в поле, ручками?
Или исчо как?
Вот хотелось бы извернуться чтоб и без подключения офисной библиотеки,
и без функции в общем модуле. :)
зы. Года три-четыре назад, на лидерсофте лежал аналогичный FaceID Explorer,
я успел тогда скачать. Сейчас, правда, ссылка не доступна. | |
|
| |
|
|
|
| Да, на OnAcion можно прописать и вызов функции по присвоение полю формы значание FaceID в этой же модуле. Не вижу никаких сложностей.
Только чтобы выложить отглаженное решение - нужно время.
Форма построения меню у меня живет уже год. А панель FaceID дописал только на днях. Ведь за эти выкрутасы денег не "плотют" :)) | |
|
| |
|
|
|
| >>Только чтобы выложить отглаженное решение - нужно время.
<вздыхая> То да. | |
|
| |
|
|
|
| Да пример и не нужен. Что мы часто меняем меню? Нет.
Ручками.Ручками. | |
|
| |
|
|
|
| >>Что мы часто меняем меню?
При каждой загрузке приложения, смене пользователя, например. | |
|
| |
|
|
|
| Спорно.
- - -
Клиентская база стоит у трех десятков пользователей.
Я выгружаю обновления в текстовом формате на сервер.
Базы при старте импортируют обновления, если версии новые.
Но если вношу изменения в меню, мне надо ходить, и ручками менять меню у тридцати пользователей?
А если поменять порядок пунктов, разрешения?
Если я хочу реструктурировать меню, перенося целые ветки?
Наверно, все это лучше визуализировать. | |
|
| |