Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
 Аватар для SergeyKu
108 / 49 / 26
Регистрация: 24.10.2012
Сообщений: 56

Прогрессбар на основе TImage

09.01.2013, 21:47. Показов 819. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне понадобился супер-точный Прогрессбар. Решил написать его самостоятельно на основе TImage.
Может кому-нибудь пригодится Unit1.h:
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
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TImage *Image1;
        TButton *Button1;
        void __fastcall Button1Click(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
class ImageProgress
{
private:
       int Width;
       TImage *ProgressImage;
public:
       TColor BackgroundColor;
       TColor ProgressColor;
       __fastcall ImageProgress(TImage *Image);
       void __fastcall Position(__int64 Min, __int64 Max, __int64 Pos);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Unit1.cpp:
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
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
ImageProgress *ImageProgress1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  ImageProgress1 = new ImageProgress(Image1);
}
//---------------------------------------------------------------------------
__fastcall ImageProgress::ImageProgress(TImage *Image)
{
  Image->Canvas->Rectangle(0, 0, Image->Width, Image->Height);
  BackgroundColor = clWhite; //default color
  Image->Canvas->Brush->Color = BackgroundColor;
  Image->Canvas->FillRect(Rect(1, 1, Image->Width - 1, Image->Height - 1));
  Width = Image->Width - 2;
  ProgressImage = Image;
  ProgressColor = clRed; //default color
}
//---------------------------------------------------------------------------
void __fastcall ImageProgress::Position(__int64 Min, __int64 Max, __int64 Pos)
{
  if(Min < 0 || Max <= 0 || Pos < 0 || Min > Max)
    return;
  if(Pos > Max)
    Pos = Max;
  if(Pos < Min)
    Pos = Min;
  double x = (double)Width / 100;
  double begin = (long double)Min * 100 / Max * x;
  double end = (long double)Pos * 100 / Max * x;
  ProgressImage->Canvas->Brush->Color = BackgroundColor;
  ProgressImage->Canvas->FillRect(Rect(1, 1, ProgressImage->Width - 1, ProgressImage->Height - 1));
  ProgressImage->Canvas->Brush->Color = ProgressColor;
  ProgressImage->Canvas->FillRect(Rect(begin + 1, 1, end + 1, ProgressImage->Height - 1));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ImageProgress1->BackgroundColor = clCream;
  ImageProgress1->ProgressColor = clGreen;
  ImageProgress1->Position(0/*begin*/, 100/*maximum*/, 50/*end*/);
}
//---------------------------------------------------------------------------
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.01.2013, 21:47
Ответы с готовыми решениями:

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

Как по нажатию мыши менять TImage и перерисовывать на него bmp с другого TImage?
Есть два TImage. На Image1 картинка TBitmap, Image1 растянут на всю форму. При нажатии на Image1 и OnMouseMove var x1, y1: integer; ...

Мерцание компонента Timage и перемещение Timage при нажатии
Здравствуйте! Помогите убрать мерцание компонента Timage при изменении размера. Нашел в поиске, советуют так: procedure...

2
3 / 3 / 1
Регистрация: 31.01.2010
Сообщений: 10
10.01.2013, 00:24
Спасибо! Пригодится очень даже!
0
 Аватар для Pirat-SR
67 / 67 / 10
Регистрация: 20.02.2012
Сообщений: 234
10.01.2013, 01:20
TProgressBar на основе TImage:

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
//---------------------------------------------------------------------------
 
void __fastcall TForm1::TimerTimer(TObject *Sender)
{
if (Loading100->Width < 700)
{
Loading100->Width += 5;
}
else
{
Form2->Show();
Timer->Enabled = false;
Form1->Hide();
}
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Form1->DoubleBuffered = true;
Timer->Interval = 100;
Timer->Enabled = true;
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.01.2013, 01:20
Помогаю со студенческими работами здесь

Could not find a match for 'TImage::TImage()'
Решил поработать с классами. Ну и заодно разобраться с firemonkey. Сразу же нарвался на такую штуку. Вроде в firemonkey есть TImage,...

Прогрессбар
В общем, нужен прогрессбар. Он должен отображать текущий процесс выполнение другого яваскрипта. В инете нашел следующий, он мне...

ПрогрессБар
Мне нужен прогрессБар при загрузки страницы сайта. помогите сделать на примере) Добавлено через 9 часов 1 минуту народ кто знает...

Прогрессбар
Есть ли у кого подобный прогрессбар как тут на сайте - http://100original.ru/ В самом верху. Пытался утянуть, не вышло (

Прогрессбар
Здравствуйте. Имеется вот такой прогрессбар собранный по кускам из интернетов @echo off mode con cols=40 lines=4 Color 0A ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru