| 
| 
 | Вопрос # 1 216/ вопрос решён / | 
 |  Здравствуйте уважаемые эксперты!У меня к вам такой вопрос? У меня на форме
 Image1 размером 250Х200, в папке с программой
 есть семь рисунков Jpeg, как мне сделать так
 чтобы они загружались по очереди с интервалом
 30 секунд (желательно бесконечно), и если можно
 то ещё, на форме Image1 размером 250Х30, а рисунок
 1500Х30, естественно он весь не входит в Image1,
 нужно сделать так чтобы он перемещался  бесконечно
 (как бегущая строка, только там буквы двигаются,
 а мне нужно чтобы двигался мой рисунок).
 Заранее благодарен.
 
|  |   Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)Вопрос отправлен: 20 декабря 2007, 23:12
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Косолапов Дмитрий Юрьевич Здравствуйте, Толков Геннадий Викторович!По первой части - необходимо использовать обработчик срабатывания таймера. Глобально объявить переменную, которая будет отвечать за номер картинки; если имена файлов стандартизированы и отличаются только номером, то все очень просто: при срабатывании таймера увеличивать счетчик (или сбрасывать, если он достиг максимума), и загружать соответствующую картинку - условно, Image1.LoadFromFile('Image'+IntToStr(N)+'.jpg'). Если же имена произвольны, то при запуске программы сформировать StringList этих файлов (используя FindFirst/FindNext), а в таймере делать практически то же самое, только загрузка будет происходить условно так: Image1.LoadFromFile(StringList1[N])
 
 По второй части - опять-таки таймер, опять-таки счетчик (на сей раз соответствующий X-координате), а искомую картинку загрузить в промежуточный рисунок; по таймеру копировать очередной участок.
 Ответ #2. Отвечает эксперт: Вадим К Здравствуйте, Толков Геннадий Викторович!Решение в лоб просто.
 в список uses добавим юнит jpeg.
 На форму положим таймер и Image
 Заведём глобальную переменную ci:integer - текущий элемент для отображения, fl:TStringList - список файлов.
 в FormCreate вначале впишем код fl:=TStringList.create;. ci := 0;
 Потом нужно составить список файлов для загрузки. так как файлы будут лежать в одном каталоге, то подойдёт простой вариант, который вы найдёте по адресу http://delphibasics.ru/FindFirst.php
 Только имя файла будем добавлять в TStringList где то такой строкой
 fl.add(searchResult.Name); (эту строку надо вместо тех двух ShowMessage).
 
 теперь напишем FormDestroy - здесь у нас две строки
 
 Timer1.enabled := false;//на всяк случай
fl.free; Теперь осталось таймер настроить. в свойство Interval впишите нужное время (в вашем случае - 30000)  и кликнув дважды, создайте такой обработчик.
 
 //загрузим картинку
Image1.Picture.loadfromfile(fl[ci]);
//перейдём к следующей.
ci := ci + 1;
if ci> fl.count then ci := 0;Этот код имеет небольшую особенность - он требует, что бы картинки лежали в той же папке, что и программа (если быть точным - в текущем каталоге). 
 По поводу второго вопроса - тут лучше изображение загрузить в память, и по таймеру прорисовывать по кусочкам на форме.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 21 декабря 2007, 15:54
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 0. 31 января 2011, 19:30: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |