4.4.6. Смена картинки главного окна

 

Экран компьютера целый день перед глазами работника предприятия. Унылая картина. Не правда ли? Чтобы хоть как-то разнообразить ее, дайте пользователю возможность выбора фона главного окна программного комплекса. Лучше, если картинок будет побольше. На рис. 4.34 показан рабочий вид формы ChangPic.

 

 

Рис. 4.34. Смена картинки главного окна программного комплекса

 

Код события Activate формы ChangePic:

* Для преемственности в работе во время

* одного сеанса имя картинки - глобальное

Public NamePicture

NamePicture=[Въезд в город    800 на 600 точек]

* Определение полного пути к папке с картинками

IF ALLTRIM(SYS(2003))=[\]

   RealDirectory=[]

ELSE

   RealDirectory=[\]

ENDIF

THISFORM.IMAGE1.PICTURE=DISK+RealDirectory+[\DECKTOP\khab.jpg]

* Описание массива Title

* Он используется в RowSourceType (5-Array) Combo1

* Число элементов - по числу картинок

DIMENSION Title(28)

Title(1) =[Въезд в город     800 на 600 точек]

Title(2) =[Физкультура       800 на 600 точек]

Title(3) =[ХабИИЖТ           800 на 600 точек]

Title(4) =[Манеж            1024 на 768 точек]

* Два десятка строк в целях экономии места пропущено

Title(26)=[Мост            1280 на 1024 точек]

Title(27)=[Сказочный город 1280 на 1024 точек]

Title(28)=[Без картинки]

THISFORM.COMBO1.Refresh

 

Код события InteractiveChange объекта Combo1:

 

* Определение полного пути к папке с картинками

* Переменная Shot содержит полный путь к папке

IF ALLTRIM(SYS(2003))=[\]

   RealDirectory=[]

ELSE

   RealDirectory=[\]

ENDIF     

Shot=DISK+RealDirectory+[\DECKTOP\]

SET EXACT OFF

* Неполное соответствие для того, чтобы

* не писать далее название картинок целиком

* Например

* CASE THIS.VALUE=[Физкультура]

* Вместо

* CASE THIS.VALUE=[Физкультура       800 на 600 точек]

 

DO CASE

   CASE THIS.VALUE=[Физкультура]

        THISFORM.IMAGE1.PICTURE=Shot+[SPORTS.JPG]

   CASE THIS.VALUE=[Въезд в город]

        THISFORM.IMAGE1.PICTURE=Shot+[KHAB.JPG]  

   CASE THIS.VALUE=[ХабИИЖТ]

        THISFORM.IMAGE1.PICTURE=Shot+[RailWay.JPG]  

   CASE THIS.VALUE=[Манеж]

        THISFORM.IMAGE1.PICTURE=Shot+[Area.JPG]  

   * Два десятка строк пропущено

   CASE THIS.VALUE=[Железная дорога]

        THISFORM.IMAGE1.PICTURE=Shot+[RAILROAD.JPG]  

   CASE THIS.VALUE=[Без картинки]

        THISFORM.IMAGE1.PICTURE=Shot+[NO.JPG]  

ENDCASE  

 

Код события Click кнопки Записать:

 

* Если картинка для главного окна комплекса назначена

* удалить ее

IF FILE('C:\WINNT\TEMP\Picture.jpg')

   DELETE FILE('C:\WINNT\TEMP\Picture.jpg')

ENDIF

 

IF NamePicture=[Без картинки]

   * Вывод только на экран

   _SCREEN.PICTURE=[]

ELSE

   * Картинку на экран и в файл C:\WINNT\TEMP\Picture.jpg

   _SCREEN.PICTURE=THISFORM.IMAGE1.PICTURE

   FilePicture=THISFORM.IMAGE1.PICTURE

   COPY FILE &FilePicture TO C:\WINNT\TEMP\Picture.jpg

ENDIF

* Форму перерисовать

THISFORM.Release