|
|
|||||||||||||||||||||||||||||
|
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. Теперь мы располагаем готовым приложением для просмотра картинок! Но у нас есть еще другая цель, поэтому идем дальше и в коде программы после слов implementation {$R *.dfm} пишем следующую процедуру: Procedure Change; Есть, конечно, и другие способы менять обои, но преимущество нашей процедуры в том, что она работает под WindowsXP. Я думаю, комментарии написаны понятно. Во всяком случае, для начала хватит с головой. А хитрость в том, что мы работаем с реестром Windows и {75048700-EF1F-11D0-9888-006097DEACF9} - это реальный адрес в реестре, в котором есть параметр ActiveDesktop. Если не верите, можете проверить. Что бы наша программа могла работать с картинками, логично будет сначала посмотреть, есть ли картинки в выбранной папке, и определить их количество. Поэтому нам надо создать числовую переменную i, которая будет выступать у нас в качестве счетчика картинок. В разделе var нашего приложения дописываем: i:integer; Переходим к таймеру - свойство enabled ставим в false, interval - 1000 и в действии OnTimer пишем: i:=i+1; //переходим к следующей картинке timer1.enabled:=true; timer1.enabled:=false; timer1.Interval:=spinedit1.Value; BitBtn1.Enabled:=true; timer1.Enabled:=false; BitBtn1.Enabled:=false; Ссылки по теме
|
|