Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 39

Листание картинок

17.05.2015, 21:00. Показов 2283. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может есть люди которые знают. Как можно запрограммировать кнопку, что бы она листала картинки?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.05.2015, 21:00
Ответы с готовыми решениями:

Слайдшоу, листание картинок по таймеру
необходимо листать картинки по таймеру. в голове крутится идея использовать VievPager, есть ли какая-то возможность вызывать переход на...

Листание списка
#include <string> #include <conio.h> #include <windows.h> #include <list> #include <iostream> using namespace std; void...

Java листание новостей
Здравствуйте формучане, перейду сразу к делу, так как не силен в js возник вопрос, как вывести alert сообщение когда div с новостями дошел...

13
Модератор
 Аватар для D1973
9916 / 6453 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
17.05.2015, 21:32
Что за картинки, откуда беруться?
Если просто из каталога какого-то надо пролистать, то тогда:
1. Создать вектор строк
2. С помощью FindFirst ... FindNext заполняем вектор путями к картинкам
3. На каждый клик кнопки вызывается очередной элемент вектора и файл, определенный путем, записанным в этом элементе вектора грузится в компонент TImage
0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 39
17.05.2015, 21:39  [ТС]
D1973, могу скинуть скриншот программы и вы поймете что я имела ввиду.
0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 39
17.05.2015, 21:44  [ТС]
вот как выглядит форма, и мне надо запрограммировать кнопку вперед так, что бы она листала картинки.
0
Модератор
 Аватар для D1973
9916 / 6453 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
17.05.2015, 23:37
Вот тут чут-чуть поподробнее...
У тебя ScrollBox и в нем просто компоненты Image набросаны, так?
А имена у этих Image по порядку идут: Image1, Image2, ...?
0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 39
17.05.2015, 23:42  [ТС]
D1973, самая большая это первоя, а в колонке там начинается со 2 по 7.
0
Модератор
 Аватар для D1973
9916 / 6453 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
18.05.2015, 00:44
Ну тогда все очень просто...
Даю наводку: используй FindComponent...
Код, если что, завтра с утра набросаю, а то у меня уже ночь глубокая, спать охота
0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 39
18.05.2015, 00:57  [ТС]
D1973, если вам не трудно, то накидайте, а то очень долго думаю над этим.
0
Модератор
 Аватар для D1973
9916 / 6453 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
18.05.2015, 07:22
Идея такая:
На форме Image1 (большая картинка), ScrollBox1, а в нем 7 (со 2-й по 8-ю) "маленьких" компонентов Image, а также панель с тремя кнопками "Назад", "Вперед", "Выход"
При старте программы грузится первая (верхняя) картинка из представленных справа, внутри ScrollBox. Изначально кнопка "Назад" недоступна (Button1->Enabled = false). При листании вперед она разблокируется. При достижении последней картинки блокируется кнопка "Вперед". Она разблокируется при листании назад. Двойной клик на любой миниатюре справа позволяет загрузить эту самую миниатюру на просмотр, причем если кликнуть на первую или последнюю миниатюру - блокируются кнопки "Назад" или "Вперед" соответственно

Заголовок
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <jpeg.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TScrollBox *ScrollBox1;
        TImage *Image1;
        TImage *Image2;
        TImage *Image3;
        TImage *Image4;
        TImage *Image5;
        TImage *Image6;
        TImage *Image7;
        TImage *Image8;
        TPanel *Panel1;
        TButton *Button1;
        TButton *Button2;
        TButton *Button3;
        void __fastcall Button3Click(TObject *Sender);
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Image2DblClick(TObject *Sender);
private:    // User declarations
public:     // User declarations
        void __fastcall LoadPict(int); //<<== Руками прописвыаем этот метод
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

Реализация
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
int PictNum; //Глобальная переменная, указывающая номер миниатюры
const int PictStart = 2, PictCount = 8; //Номера первой и последней миниатюры
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender) //Кнопка Выход
{
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::LoadPict(int PN) 
//Собственный метод, объявленый в заголовочном файле
//Находит компонент Image по имени и грузит картинку из него в Image1
{
  TImage *Img = dynamic_cast<TImage*>(FindComponent("Image" + IntToStr(PN)));
  Image1->Picture->Assign(Img->Picture);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
//Стартовые параметры
  ScrollBox1->VertScrollBar->Position = 0; //Позиция бегунка в ScrollBox1 наверху
  PictNum = PictStart; //Начальный номер картинки
  LoadPict(PictNum); //Загрузка картинки
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//Кнопка Вперед
  PictNum++; //Увеличиваем номер картинки
  if(PictNum > PictStart) Button1->Enabled = true; //Разблокируем кнопку Назад
  if(PictNum >= PictCount) Button2->Enabled = false; //Если картинка последняя в списке - блокируем кнопку Вперед
  LoadPict(PictNum); //Грузим картинку с заданным номером
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//Кнопка назад
  PictNum--; //Уменьшаем номер картинки
  if(PictNum <= PictStart) Button1->Enabled = false;  //Если картинка первая в списке - блокируем кнопку Назад
  if(PictNum < PictCount) Button2->Enabled = true; //Разблокируем кнопку Вперед
  LoadPict(PictNum);  //Грузим картинку с заданным номером
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image2DblClick(TObject *Sender)
{
//Обработчик двойного клика на миниатюре справа
//Создать событие OnDblClick для компонента Image2
//Назначить его для всех остальных миниатюр справа
  Image1->Picture->Assign(((TImage*)Sender)->Picture); //Грузим выбраную картинку
  if(((TImage*)Sender)->Name == "Image8") //Если миниатюра последняя...
   {
     Button2->Enabled = false; //Блокируем кнопку Вперед
     Button1->Enabled = true; //Разблокируем кнопку Назад
     PictNum = PictCount; //Номер картинки == Начальному номеру
   }
  else
   if(((TImage*)Sender)->Name == "Image2") //Если миниатюра первая...
    {
      Button1->Enabled = false; //Блокируем кнопку Назад
      Button2->Enabled = true; //Разблокируем кнопку Вперед
      PictNum = PictStart; //Номер картинки == Конечному номеру
    }
   else //Если миатюра посередине...
    {
      Button1->Enabled = true; //Разблокированы обе кнопки
      Button2->Enabled = true;
//Номер картинки == номеру компонента Image миниатюры
      PictNum = StrToInt(((TImage*)Sender)->Name.SubString(((TImage*)Sender)->Name.Length(), 1));
    }
}
//---------------------------------------------------------------------------
Миниатюры
Листание картинок  
1
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 39
18.05.2015, 08:24  [ТС]
D1973, а как найти этот кусок кода: void __fastcall TForm1::LoadPict(int PN)
0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 39
18.05.2015, 08:38  [ТС]

вот какие ошибки выдает...
0
 Аватар для Access12
19 / 19 / 4
Регистрация: 28.04.2013
Сообщений: 139
18.05.2015, 08:59
Цитата Сообщение от sashka1995 Посмотреть сообщение
вот какие ошибки выдает...
Вы добавили в .h файл? (Первый спойлер с кодом, пост от D1973)
C++
1
void __fastcall LoadPict(int); //<<== Руками прописвыаем этот метод
0
0 / 0 / 0
Регистрация: 22.04.2015
Сообщений: 39
18.05.2015, 19:02  [ТС]
Access12, да, уже все работает. спасибо огромное, что есть умные люди.

Добавлено через 7 часов 57 минут
D1973, а возможно сделать, что бі покругу біло перелистівание?
0
Модератор
 Аватар для D1973
9916 / 6453 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
19.05.2015, 05:37
Лучший ответ Сообщение было отмечено BRcr как решение

Решение

Цитата Сообщение от sashka1995 Посмотреть сообщение
а возможно сделать, что бі покругу біло перелистівание?
Да запросто, так код компактнее получается, лишних действий по блокировке кнопок нет:
1. Свойство Enabled кнопки "Назад" выставляем в true
2. Обработчик события клика по кнопке "Назад" переписываем вот так
C++
1
2
3
4
5
6
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  PictNum--;
  if(PictNum < PictStart) PictNum = PictCount;
  LoadPict(PictNum);
}
3. Обработчик события клика по кнопке "Вперед" переписываем вот так
C++
1
2
3
4
5
6
void __fastcall TForm1::Button2Click(TObject *Sender)
{
  PictNum++;
  if(PictNum > PictCount) PictNum = PictStart;
  LoadPict(PictNum);
}
4. Обработчик события двойного клика по миниатюре переписываем вот так
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Image2DblClick(TObject *Sender)
{
  Image1->Picture->Assign(((TImage*)Sender)->Picture);
  if(((TImage*)Sender)->Name == "Image8")
     PictNum = PictCount;
  else
   if(((TImage*)Sender)->Name == "Image2")
      PictNum = PictStart;
   else
      PictNum = StrToInt(((TImage*)Sender)->Name.SubString(((TImage*)Sender)->Name.Length(), 1));
}
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.05.2015, 05:37
Помогаю со студенческими работами здесь

Листание текста на экране
На экран выводится файл, который можно листать вперед или назад. По выведенному на экран тексту можно перемещать курсор, который при...

Построничное листание в Гриде
Здравствуйте, есть Грид + DataPager. В Хедере Грида есть выпадающий список, который я заполняю в Page_Load. Когда начинаю листать Грид,...

Delphi листание Images
Добрый день. Интересную штуку нашел на сайте Embarcadero, слайдер для touch, помогите сделать такую для мыши, не для touch, хотя можно и...

Запретить листание за пределы списка
Можо ли? Хочу как в Win! Что-бы было нельзя схватить список и тянуть пока тянется, показывая фон под списком (фишка всех списков андроида)....

Листание изображений из определенной папки
Нужно такая штука : Нажимаю на кнопку( например button1) и в image1 открывалось изображение с названием '1' из папки (допустим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru