Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: FaceID - на завтрак
 
 автор: Йожык   (16.03.2012 в 09:38)   личное сообщение
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

  Ответить  
 
 автор: kot_k_k   (16.03.2012 в 10:49)   личное сообщение
 
 

Йожик - а как ее присобачить и куа? откуда стартует - Call BrowserFaceID (0)

  Ответить  
 
 автор: Йожык   (16.03.2012 в 11:15)   личное сообщение
26 Кб.
 
 

В модуль
или в модуль формы разработки.
Переменные модуля FID1 и FID2
Стартует вызовом BrowserFaceID 0
А иконки листаются верхними стрелочками на самой панели меню, которые вызывают процедуру с параметром -1 или +1
У меня, например, выделен модуль BuildBar для работы с меню

Пример использования:
На форме редактирования меню базы (пользовательского меню, дерево которого читается с серверной таблицы) установлена кнопочка faceID на нее повешен вызов BrowserFaceID 0
Когда мне надо выбрать значок для пользовательского меню, я наживамю кнопочку, появляется панель меню и верхними стрелочками я листаю иконки, всплывающие тултипы на которых показывают номер FaceID
Картинко: =>

  Ответить  
 
 автор: kot_k_k   (16.03.2012 в 11:19)   личное сообщение
 
 

шаман однако

  Ответить  
 
 автор: Йожык   (16.03.2012 в 11:26)   личное сообщение
 
 


Имеет смысл добавить, что значков-то более 5000
Но я поставил ограничение в 3000 для совместимости всех Access' ов и Offic'ов

  Ответить  
 
 автор: silich   (16.03.2012 в 11:31)   личное сообщение
 
 

  Ответить  
 
 автор: Йожык   (16.03.2012 в 11:32)   личное сообщение
 
 

  Ответить  
 
 автор: час   (16.03.2012 в 11:35)   личное сообщение
 
 

  Ответить  
 
 автор: Йожык   (16.03.2012 в 11:37)   личное сообщение
 
 

(затуманиваясь) градус понижать не будем.

  Ответить  
 
 автор: kot_k_k   (16.03.2012 в 11:48)   личное сообщение
 
 

как не будем - - тяпница ведь

  Ответить  
 
 автор: Йожык   (16.03.2012 в 11:53)   личное сообщение
 
 

Пипе-е-е-е-ец... (падает)

  Ответить  
 
 автор: Дядя Федор   (16.03.2012 в 11:55)   личное сообщение
197 Кб.
 
 

Полезная штучка. а то я использовал все панели - громоздко.
ПС. i не описана
For i = FID1 To FID2

  Ответить  
 
 автор: Йожык   (16.03.2012 в 12:12)   личное сообщение
 
 

Да, надо объявить :) Сейчас исправлю.

Полезная штучка. а то я использовал все панели - громоздко.

Так и я тоже мучился. А потом плагин нашел для Офиса, который листает.
Но плагин дело хорошее, а самонаписанное надежнее, как сапог в бою.
Поэтому и...

  Ответить  
 
 автор: kot_k_k   (16.03.2012 в 12:08)   личное сообщение
 
 

НЕ СМЕТЬ!!!
именем Революции ВСТАТЬ!!!
т.е. ПОДНЯТЬ!!!!

  Ответить  
 
 автор: Йожык   (16.03.2012 в 13:24)   личное сообщение
26 Кб.
 
 

К вопросу, как применять:
http://hiprog.com/forum/files/10211-20120316131948.gif

там слева внизу ма-а-ленькая кнопочка памагаит.

  Ответить  
 
 автор: Lukas   (16.03.2012 в 23:32)   личное сообщение
 
 

Йожик лукааавит....
На картинко формы текстбокс FaceID недоступен,
значит, по идее, руками ни,
а в листинге я не вижу,
как кнопки коммандбара
присваивают значение своего FaceID полю форму.
Што-то Йожик недоговаривает....
:)

  Ответить  
 
 автор: Йожык   (17.03.2012 в 23:38)   личное сообщение
 
 

Так мне што теперь, выкладывать проект с формой по созданию и редактированию меню, вкупе с таблицами меню и ролей, которым разрешен доступ к элементам???

  Ответить  
 
 автор: Lukas   (18.03.2012 в 00:06)   личное сообщение
 
 

Я думаю, демке никто бы не возражал, там есть что посмотреть. :)

Но я к чему речь то завел:
Если без подключения офисной библиотеки, то, вероятно,
возврат значения в форму через функцию в общем модуле?
Или без возврата значения в поле, ручками?
Или исчо как?

Вот хотелось бы извернуться чтоб и без подключения офисной библиотеки,
и без функции в общем модуле. :)

зы. Года три-четыре назад, на лидерсофте лежал аналогичный FaceID Explorer,
я успел тогда скачать. Сейчас, правда, ссылка не доступна.

  Ответить  
 
 автор: Йожык   (19.03.2012 в 09:06)   личное сообщение
 
 

Да, на OnAcion можно прописать и вызов функции по присвоение полю формы значание FaceID в этой же модуле. Не вижу никаких сложностей.
Только чтобы выложить отглаженное решение - нужно время.
Форма построения меню у меня живет уже год. А панель FaceID дописал только на днях. Ведь за эти выкрутасы денег не "плотют" :))

  Ответить  
 
 автор: Lukas   (19.03.2012 в 20:09)   личное сообщение
 
 

>>Только чтобы выложить отглаженное решение - нужно время.
<вздыхая> То да.

  Ответить  
 
 автор: Дядя Федор   (20.03.2012 в 08:17)   личное сообщение
 
 

Да пример и не нужен. Что мы часто меняем меню? Нет.
Ручками.Ручками.

  Ответить  
 
 автор: Lukas   (20.03.2012 в 19:40)   личное сообщение
 
 

>>Что мы часто меняем меню?
При каждой загрузке приложения, смене пользователя, например.

  Ответить  
 
 автор: Йожык   (21.03.2012 в 10:32)   личное сообщение
 
 

Спорно.
- - -
Клиентская база стоит у трех десятков пользователей.
Я выгружаю обновления в текстовом формате на сервер.
Базы при старте импортируют обновления, если версии новые.

Но если вношу изменения в меню, мне надо ходить, и ручками менять меню у тридцати пользователей?
А если поменять порядок пунктов, разрешения?
Если я хочу реструктурировать меню, перенося целые ветки?

Наверно, все это лучше визуализировать.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList