(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
erwin Data Modeler Workgroup Edition r9.7 - Product plus 1 Year Enterprise Maintenance Commercial
VCL Subscription
IBM Domino Messaging Server Processor Value Unit (PVU) License + SW Subscription & Support 12 Months
Quest Software. SQL Navigator for Oracle
Stimulsoft Reports.Ultimate Single License Includes one year subscription
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Один день системного администратора
Краткие описания программ и ссылки на них
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100