(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Delphi: Клеим обои на Рабочий стол (исходники, документация)

Источник: codingclub

Как подобрать обои на Рабочий стол? Предлагаю использовать все по очереди! Попробуем создать программу для смены обоев на Рабочем столе через заданный интервал времени. Отличие программы от всех подобных в том, что в ней не будет лишних никому не нужных функций, а значит, она будет меньше загружать оперативную память компьютера и мысли пользователя.

Пример выполнен на Delphi 7 и ориентирован на неопытного кодера, поэтому постараюсь описать все очень подробно и доступно. Тем не менее, пример будет отлично работать и в предыдущих версиях.

Визуализация

С чего начнем? Конечно же, с формы приложения. Итак, создаем VCL Forms Application. Посмотрим, какие компоненты нам необходимы. Вкладка палитры компонентов Standart - берем Label, для отображения пути к выбранному файлу; Panel - чисто декоративно, как использовать и сколько надо, не буду комментировать, можно вообще не использовать. Вкладка Additional - Bitbtn - берем две кнопки (старт/стоп); Image - для предварительного просмотра выбранного файла. Вкладка System - здесь нам нужен только Timer, для периодичности смены картинки. Для того, чтобы задавать интервал смены картинки для нашего таймера, возьмем с вкладки Samples компонент SpinEdit. Для полного удобства выбора пути к файлу с вкладки Win 3.11 берем DriveComboBox, DirectoryListBox, FileListBox. Назначение этих компонентов понятно из их названия.

Я не могу ограничить вас в оформлении приложения, поэтому перенесите все необходимые компоненты на форму и разместите их так, как сами считаете нужным. Я сделал это так, как показано на рисунке.

 

 

Маленькое отступление

Это отступление только для юных кодеров, чтобы скрасить понимание. Компонентом можно манипулировать в инспекторе объектов (он находится снизу слева), который имеет две вкладки: properties и events. В properties мы можем изменить параметры, которые касаются оформления компонента, в events хранятся процедуры действия компонента. Поэтому если я говорю про значения свойств компонента, я имею в виду вкладку properties, а если про действия - ищите их на вкладке events. Для перехода от дизайнера формы к коду формы и наоборот используется клавиша F12. Названия всех компонентов я оставляю стандартными, чтобы потом ни у кого не возникло недоразумений с названиями.

Надстройки формы

У нас есть уже заготовка, теперь посмотрим, что с этим всем делать. Для формы Form1 в инспекторе объектов меняем такие параметры: caption - пишем название приложения, borderIcons->biMaximize - false, borderStyle - bsSingle, position - poScreenCenter. Теперь форма нашего приложения будет всегда располагаться по центру экрана и не будет иметь возможности максимизироваться, так как это сможет привести к некорректному отображению элементов в нашей программе. Иными словами, делаем так называемую «защиту от дураков» (fool protection).

DriveComboBox - в свойствах меняем параметр DirList (там только одно значение, ошибиться невозможно), соответственно связываем этот объект с DirectoryListBox. Теперь при смене диска в DriveComboBox меняется содержимое DirectoryListBox.

Идем дальше и для DirectoryListBox меняем свойства FileList и DirLabel - тут все и так понятно, если посмотреть на результат.

FileListBox - свойство MASK пишем *.jpg - это чтобы мы смогли смотреть только на картинки jpg и не видеть остальное.

Для того, чтобы наша картинка красиво отображалась пропорционально и по центру, у компоненты Image1 меняем свойства Center, Proportional в TRUE.

В принципе, все необходимое вроде сделано. Другими настройками не буду увлекаться, я думаю, каждый сможет раскрасить свое приложение по собственному усмотрению. Если что-то не получилось, возвращатесь в начало, а если все нормально, то следуте за мной дальше.

Кодинг

Жмем клавишу F12 и в листинге формы в разделе Uses добавляем модули ComObj, ShlObj. Jpeg. Для FileListBox в инспекторе объектов на вкладке events для события OnClick пишем две строчки:

Label1.Caption:=FileListBox1.Filename;
Image1.Picture.LoadFromFile(Label1.Caption);

Первая строка хранит имя и путь к выбранному файлу-картинке. Вторая строка будет отображать картинку на элементе Image1. Теперь мы располагаем готовым приложением для просмотра картинок! Но у нас есть еще другая цель, поэтому идем дальше и в коде программы после слов implementation {$R *.dfm} пишем следующую процедуру:

Procedure Change;
const
 Desktop: TGuid='{75048700-EF1F-11D0-9888-006097DEACF9}'; //для получения доступа к рабочему столу
var
 ActiveDeskTop:IActiveDesktop; // вроде понятно, зачем
begin
 ActiveDesktop:=CreateComObject(Desktop) as IActiveDesktop; //создаем объект и получаем разрешение доступа к рабочему столу
 ActiveDesktop.SetWallpaper(StringToOleStr(form1.Label1.Caption), 0); // определились с выбором картинки
 ActiveDesktop.ApplyChanges(AD_APPLY_ALL); // применяем картинку на рабочем столе
end;

Есть, конечно, и другие способы менять обои, но преимущество нашей процедуры в том, что она работает под WindowsXP. Я думаю, комментарии написаны понятно. Во всяком случае, для начала хватит с головой. А хитрость в том, что мы работаем с реестром Windows и {75048700-EF1F-11D0-9888-006097DEACF9} - это реальный адрес в реестре, в котором есть параметр ActiveDesktop. Если не верите, можете проверить.

Что бы наша программа могла работать с картинками, логично будет сначала посмотреть, есть ли картинки в выбранной папке, и определить их количество. Поэтому нам надо создать числовую переменную i, которая будет выступать у нас в качестве счетчика картинок. В разделе var нашего приложения дописываем:

i:integer;
 
Для формы form1 в events -> OnCreate пишем i:=0; - при запуске программе обнуляем счетчик.

Переходим к таймеру - свойство enabled ставим в false, interval - 1000 и в действии OnTimer пишем:

 i:=i+1; //переходим к следующей картинке
 if i=form1.FileListBox1.Items.Capacity // если наш счетчик дошел до конца списка, идем в начало
 then i:=0;
 label1.caption:=form1.FileListBox1.Items[i]; //все понятно
 change; //меняем обои
 
Дважды щелкните по кнопке BitBtn1 и впишите следующую строку:

timer1.enabled:=true;
 
В свойстве Caption назовем ее Start, другую назовем Stop и для нее напишем

timer1.enabled:=false;
 
И еще пара доработок: у счетчика spinedit свойству increment присвоим значение 1000 (а чего мелочиться?), и на событие OnChange напишем следующее

timer1.Interval:=spinedit1.Value;
 
От греха подальше уберем поначалу кнопку Start - в свойстве кнопки enabled->false. А разрешим ее только тогда, когда выберем картинку, то есть кликнем по FileListBox1. Допишем в событие OnClick:

BitBtn1.Enabled:=true;
 
Если мы заходим перейти в другую папку, то логично будет отключить таймер и запретить кнопку Start. Для этого в DirListBox1 в событие OnClick пишем такие строки:

timer1.Enabled:=false; BitBtn1.Enabled:=false;
 
Красота… да, но еще надо поработать. Надо убрать наше приложение с панели задач, дабы оно не раздражало наш зоркий глаз и не портило нам зрение. Спрячем нашу программу в трей. Но про это мы поговорим в следующий раз. А пока смело жмем F9 и наслаждаемся проделанной работой.

 
 

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 10.01.2007 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
ABBYY Lingvo x6 Многоязычная Профессиональная версия, электронный ключ
GFI FaxMaker и 1 год поддержки (10-49 лицензий)
SmartBear QAComplete Concurrent User Subscription License - On Premise (1 Year Subscription)
Quest Software. Toad for DBA Suite for Oracle
IBM Domino Enterprise Server Processor Value Unit (PVU) Annual SW Subscription & Support Renewal
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Новости мира 3D-ускорителей
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100