Графический интерфейс

Источник: leadersoft

Итак, с самого начала.

При запуске базы данных появляется заставка Access. Между тем, достаточно в каталог с базой поместить собственный рисунок с именем ИмяБазыДанных.bmp. и тогда при старте будет сначала появляться Ваш рисунок. Или больше - поместить "нулевой" рисунок. Создать такой рисунок очень просто:

 

Public Sub NullBMP(AppFullName As String)
Dim strName As String
Dim bytPic(65) As Byte
Dim i As Long
    strName = Left(AppFullName, Len(AppFullName) - 3)
    strName = strName & "bmp"
    If Len(Dir(strName)) = 0 Then
        bytPic(0) = &H42: bytPic(1) = &H4D: bytPic(14) = &H28
        i = FreeFile()
        Open strName For Binary As #i
        Put #i, , bytPic()
        Close #i
    End If
End Sub
'пример не требует комментариев

 
Следующая претензия - серое окно.

Между тем это серое окно - обычное окно windows, и также как и другие окна принимает и обрабатывает системные сообщения, в том числе и WM_PAINT, по получении которого окно подновляет свой вид. Если перехватить сообщение WM_PAINT, посланное "серому" окну, что в это время можно нарисовать свою картинку - и она будет "как родная". Самый большой подводный камень при реализации  - то, что VBA работает медленнее, чем программа *.exe, а поток сообщений к окну весьма велик. Если попытаться запустить приведенный пример в "пошаговом" режиме, то дождаться каких либо изменений будет очень проблематично. Более того, если перед запуском Вы работали в редакторе VBA, то работа примера очень сильно замедляется (очень сильно) Поэтому данный метод лучше всего использовать, когда код перерисовки окна расположен в файле *.mde. Кроме того замечено, что в среде Win98 - Access2000 программа не всегда работает устойчиво (связано с проблемами Win98)

Перейдем к кнопкам меню и панелей инструментов.

Хотя кнопки и позволяют использовать рисунки, но только встроенные, посредством указания номера рисунка (FaceId). Учитывая, что в Office существует НЕ ОДНА ТЫСЯЧА рисунков, конечно можно подобрать нужный, но при таком количестве это весьма затруднительно (да и далеко не все отображаются самим Access) . Для этого можно использовать проводник по рисункам: 
Создаем временную панель инструментов и располагаем на ней 100 кнопок + 2 для навигации. Каждой кнопке присваиваем FaceId=1...100, 101...200, и т.д. Теперь выбрать нужный рисунок гораздо легче. Но если все же хочется именно свои рисунки, то здесь можно использовать возможность вставки рисунка на кнопку из буфера обмена. Задача - поместить в буфер обмена собственный рисунок. Рисунки можно хранить в таблице базы в двоичном виде, либо использовать прямо с диска. В примере рисунки через временный файл загружаются в ImageList, откуда и используются по необходимости.

Формы- у всех форм одинаковые иконки.

Ну, после всего, что уже сделали, это особого труда не составит. Возьмем иконку (ImageList или файл) и, используя средства системы, присвоим эту иконку нужному окну.


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=9690