Access 2002

Вычисляемое поле


Если же вы заглянете в запрос qryAccessPictures в нашем демонстрационном проекте, то увидите, что на основе поля PictureName он создает вычисляемое поле, содержащее настоящие имена рисунков из таблицы bw_TblPictures.

Кроме того, у функции VBA SysCmd есть одно недокументированное применение. Эта функция позволяет получить рисунок командной кнопки или любого другого объекта Access в виде значения специального типа данных: IPictureOisp (из библиотеки stdole, которая всегда доступна в Access). Получив рисунок в формате IPictureOisp, можно вызвать метод SavePicture для его сохранения на диске в виде отдельного BMP-файла. Таким образом можно вырезать рисунки из растрового блока, сохранять их в файлах и потом использовать где угодно. Именно так поступают мастера Access, когда по вашей просьбе конвертируют формы в Web-страницы. На  15.21 окно Object Browser с информацией о методе SavePicture.

Чтобы посмотреть, как все это работает, выберите в форме frmButtonPix любой рисунок и щелкните на кнопке Save Image. В ответ следующий код из процедуры cmdSaveImage_Click сохранит изображение на элементе управления imgSample в дисковом файле:

В этом примере сначала объявляется переменная типа IPictureOisp, в которой будет содержаться изображение, а затем вызывается метод SysCmd для его получения. Ему передается значение 712 и элемент управления Image, из которого и берется рисунок. Напоследок вызывается метод SavePicture, который сохраняет рисунок в файле с расширением BMP.

Если вы сохраняете рисунок со страницы нашей формы Access Pictures, в качестве имени файла используется текст из списка. Если же вы находитесь на странице Office Pictures, в качестве имени файла используется номер рисунка.

Для загрузки рисунка в свойство Picture элемента управления или формы можно использовать и метод LoadPicture объекта stdole, но это не обязательно.

Комментарии закрыты