Распечатать страницу

Использование изображений в Visual FoxPro

« Назад

Если объект имеет свойство Picture, то взамен заголовка или вместе с заголовком можно выводить изображение, хранимое в файле, имя которого содержит это свойство. (Форматы графических файлов, поддерживаемые VFP, перечислены в табл. 19.5) При этом соответствующим образом должно быть установлено свойство Style объекта.

Пример 1. Создается форма с одной кнопкой, одновременно содержащей изображение, хранимое файлом d:\Help.ico, и заголовок "Вопрос".

public oForm

oForm = NewObject("Form")

oForm.AddObject("Cmd1", "Cmd")

oForm.Show                       && Результат см. на рис. 10.30 

define class Cmd as CommandButton

Caption = "Вопрос"

Picture = "d:\Help.ico"

Style = 0

PicturePosition = 1

Height = 40

Width = 120

Left = 10

Top = 10

Visible = .T.

endDefine

168.1.-Кнопка-Вопрос

Рис. 10.30. Кнопка "Вопрос"

Замечание. Для получения имени файла рисунка можно употребить функцию GETPICT( ).

Пример 2. Создается форма с одним раскрывающимся списком, предназначенным для отображения и выбора файла (свойство RowSourceType уставлено в 7 – Files). В списке одновременно с именем файла выводится соответствующее изображение. Все рисунки, сопровождающие имена файлов, имеют размер 16´16 пикселей.

public oForm

clear resources

oForm = NewObject("Form")

oForm.AddObject("Combo1", "Comb")

oForm.Show                       && Возможный результат см. на рис. 10.31

define class Comb as ComboBox

Style = 0

PictureSelectionDisplay = 0

Height = 30

Width = 200

Left = 10

Top = 10

RowSourceType = 7

Visible = .T.

&&

&& Обработчик события DropDown

procedure DropDown

    && Имена файлов начинаются с 5-го элемента

for iItem = 5 to This.ListCount

  cExtension = Upper(Right(This.List(iItem), 3))

  do case

  case cExtension = "BMP"

      This.Picture(iItem) = "d:\Picture.bmp"

  case cExtension = "DBC"

This.Picture(iItem) = "d:\DataBase.bmp"

case cExtension = "DBF"

This.Picture(iItem) = "d:\Table.bmp"

case cExtension = "DOC"

This.Picture(iItem) = "d:\Word.bmp"

case cExtension = "PRG"

This.Picture(iItem) = "d:\Program.bmp"

case cExtension = "SCX"

.Picture(iItem) = "d:\Form.bmp"

case cExtension = "XLS"

This.Picture(iItem) = "d:\Excel.bmp"

otherwise

&& Директории отображаются без рисунков

&& Прочие файлы сопровождаются иконкой

This.Picture(iItem) = Iif("]" $ cExtension, "", "d:\File.bmp")

endcase

endfor

endProc

endDefine

168.2.-Рисунки-в-раскрывающемся-списке

Рис. 10.31. Рисунки в раскрывающемся списке

Некоторые воспроизводящие графику свойства ActiveX-элементов управления должны получать ссылку на объект рисунка. Например, ActiveX-элемент управления Outline поддерживает свойство PictureOpen, требующее подобную ссылку.

Функция

LOADPICTURE([cFileName])

создает ссылку на объект рисунка, хранящегося в файле cFileName. Типа файла – это либо BMP, либо ICO, либо WMF.

Тип результата – Object.

Функция

SAVEPICTURE(oObjectReference, cFileName)

создает BMP-файл cFileName по ссылке на объект рисунка oObjectReference. Файл, если он существует, будет перезаписан без предупреждения.

Тип возвращаемого функцией результата – Logical.

Функция употребляется с объектами, имеющими свойство, хранящее ссылку на объект рисунка и получающее некоторое значение по умолчанию (например свойство PictureOpen ActiveX-элемента управления Outline). Используя это значение, функция SAVEPICTURE( ) может создать соответствующий BMP-файл.

Пример. Создается файл d:\PictureOpen.bmp с рисунком , ссылку на который по умолчанию хранит свойство PictureOpen ActiveX-элемента управления Outline.

oForm = CreateObject("Form")

oForm.AddObject("oleOutline", "oleControl", "MSOutl.Outline")

SavePicture(oForm.oleOutline.PictureOpen, 'd:\PictureOpen.bmp')