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

Как сделать прогресс бар туда-сюда в С++ Builder 6?

09.07.2015, 18:37. Показов 5880. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В .NET можно менять bricks или marquee,а в билдере как?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.07.2015, 18:37
Ответы с готовыми решениями:

TIdHTTP в отдельном потоке и прогресс бар на основной форме
У меня есть TIdHTTP (upd) в отдельном потоке и надо отобразить хот загрузки файла на основной форме. Все бы хорошо, но значение...

Как сделать прогресс-бар при загрузке данных ADOTable?
Как сделать прогресс-бар при загрузке данных ADOTable в C++ Builder?

Как сделать прогресс-бар?
Есть батник, который копирует архив командою xcopy xcopy \\192.168.0.11\555\BackUp_HOME\1 \\192.168.0.11\555\BackUp_HOME\2 /s /e ...

21
place status here
 Аватар для gunslinger
3186 / 2220 / 640
Регистрация: 20.07.2013
Сообщений: 6,013
10.07.2015, 00:07
Если есть (в чем сильно сомневаюсь), посмотри свойства Style (pbstNormal или pbstMarquee) и MarqueeInterval.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
10.07.2015, 10:20
SuperProgramer, а можете пояснить что подразумевается под "туда-сюда"?
0
1408 / 572 / 127
Регистрация: 31.10.2011
Сообщений: 1,960
10.07.2015, 10:46
SatanaXIII, видимо вот это
Название: progressbar.gif
Просмотров: 195

Размер: 31.4 Кб
но я не припомню, чтоб в builder 6 такое было
0
Модератор
 Аватар для D1973
9910 / 6447 / 2455
Регистрация: 21.01.2014
Сообщений: 27,371
Записей в блоге: 3
10.07.2015, 10:47
Свойство Smooth компонента ProgressBar, если ты имеешь в виду то, что на скрине.

Не по теме:

А правда, что такое "туда-сюда"?

Изображения
 
0
10.07.2015, 10:50

Не по теме:

_Dimon_, а оно едет только "туда", а "сюда" не едет - не то :D

0
10.07.2015, 10:53

Не по теме:

D1973, но потом опять сначала едет, значит едет и "сюда", просто мы этого не видим :D

0
10.07.2015, 10:56

Не по теме:

_Dimon_, примем этот постулат как еще одно доказательство шарообразности Земли :umnik:

0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
10.07.2015, 11:04
А при чем тут версия Билдер-а? Это вообще-то ОС решает, умеет она такое или нет, а не Билдер...
C++
1
2
3
4
5
6
#include <commctrl.h>
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ::SetWindowLong(ProgressBar1->Handle, GWL_STYLE, PBS_MARQUEE + WS_CHILD + WS_VISIBLE);
    ::SendMessage(ProgressBar1->Handle,PBM_SETMARQUEE, 1, 50);
}
, а если в commctrl нет описаний этих констант - то добавить их вручную:
C++
1
2
    const int PBS_MARQUEE = 8;
    const int PBM_SETMARQUEE = WM_USER + 10;
1
-30 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 104
10.07.2015, 11:41  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
А при чем тут версия Билдер-а? Это вообще-то ОС решает, умеет она такое или нет, а не Билдер...
C++
1
2
3
4
5
6
#include <commctrl.h>
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ::SetWindowLong(ProgressBar1->Handle, GWL_STYLE, PBS_MARQUEE + WS_CHILD + WS_VISIBLE);
    ::SendMessage(ProgressBar1->Handle,PBM_SETMARQUEE, 1, 50);
}
, а если в commctrl нет описаний этих констант - то добавить их вручную:
C++
1
2
    const int PBS_MARQUEE = 8;
    const int PBM_SETMARQUEE = WM_USER + 10;
Добавил,не работает.Как запустить то её?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
10.07.2015, 11:59
SuperProgramer, еще раз переспрошу. Объясните пожалуйста своими словами что такое туда-сюда? Как он должен себя вести?
0
-30 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 104
10.07.2015, 12:13  [ТС]
Это вот так :
0
-30 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 104
10.07.2015, 13:12  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
SuperProgramer, еще раз переспрошу. Объясните пожалуйста своими словами что такое туда-сюда? Как он должен себя вести?
И чтобы туда сюда ездило

Добавлено через 42 минуты
Цитата Сообщение от SatanaXIII Посмотреть сообщение
SuperProgramer, еще раз переспрошу. Объясните пожалуйста своими словами что такое туда-сюда? Как он должен себя вести?
Получилось Ура!:
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
//---------------------------------------------------------------------------
#define NO_WIN32_LEAN_AND_MEAN
#include <vcl.h>
#include <commctrl.h>
#pragma hdrstop
#define PBS_MARQUEE 8
#define PBM_SETMARQUEE (WM_USER+10)
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma resource "WindowsXP.res"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
InitCommonControls();
long cs = GetWindowLong(ProgressBar1->Handle, GWL_STYLE);
SetWindowLong(ProgressBar1->Handle, GWL_STYLE, cs | PBS_MARQUEE);
SendMessage(ProgressBar1->Handle, PBM_SETMARQUEE, (WPARAM) true, (LPARAM)100);
ProgressBar1->Position-100;
}
Добавлено через 15 минут
Цитата Сообщение от volvo Посмотреть сообщение
А при чем тут версия Билдер-а? Это вообще-то ОС решает, умеет она такое или нет, а не Билдер...
C++
1
2
3
4
5
6
#include <commctrl.h>
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ::SetWindowLong(ProgressBar1->Handle, GWL_STYLE, PBS_MARQUEE + WS_CHILD + WS_VISIBLE);
    ::SendMessage(ProgressBar1->Handle,PBM_SETMARQUEE, 1, 50);
}
, а если в commctrl нет описаний этих констант - то добавить их вручную:
C++
1
2
    const int PBS_MARQUEE = 8;
    const int PBM_SETMARQUEE = WM_USER + 10;
А как обратно вернуть?Чтобы стала обычной по нажатию кнопки
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
10.07.2015, 16:26
Лучший ответ Сообщение было отмечено SuperProgramer как решение

Решение

C++
1
2
    long cs = GetWindowLong(ProgressBar1->Handle, GWL_STYLE);
    SetWindowLong(ProgressBar1->Handle, GWL_STYLE, cs &~PBS_MARQUEE);
1
-30 / 0 / 0
Регистрация: 05.07.2015
Сообщений: 104
10.07.2015, 17:39  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
C++
1
2
    long cs = GetWindowLong(ProgressBar1->Handle, GWL_STYLE);
    SetWindowLong(ProgressBar1->Handle, GWL_STYLE, cs &~PBS_MARQUEE);
Спасибо большое.Чтоб не заморачиваться я сделал функцию
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Marquee (bool mar,HANDLE pbar)
{
long cs;
cs = GetWindowLong(pbar, GWL_STYLE);
if(mar==false)
{
SetWindowLong(pbar, GWL_STYLE, cs &~PBS_MARQUEE);
}
else
{
SetWindowLong(pbar, GWL_STYLE, cs | PBS_MARQUEE );
SendMessage(pbar, PBM_SETMARQUEE, (WPARAM) true, (LPARAM)100);
}
}
0
UeArtemis
18 / 18 / 3
Регистрация: 23.09.2011
Сообщений: 205
24.10.2016, 09:57
Я так понимаю, что на XP необходимы дополнительные манипуляции.
Библиотека есть, но что-то не работает эта штука.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
24.10.2016, 11:43
Цитата Сообщение от TheDarkMax2 Посмотреть сообщение
на XP необходимы дополнительные манипуляции
Это вообще не работает на XP, потому как PBM_SETMARQUEE message говорит, что
Minimum supported client
Windows Vista [desktop apps only]
0
UeArtemis
18 / 18 / 3
Регистрация: 23.09.2011
Сообщений: 205
24.10.2016, 11:44
Спасибо. Я думал, что работает, т.к. ComCtl32.dll version 6.00, вроде, есть уже на ХР.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
24.10.2016, 11:52
Хотя... Если рядом с Project1.exe положить текстовый файл Project1.exe.manifest вот с таким содержимым:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="Company.Product.Name"
    type="win32"
/>
<description></description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="X86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>
, то Marquee заведется и на WinXP
2
UeArtemis
18 / 18 / 3
Регистрация: 23.09.2011
Сообщений: 205
24.10.2016, 12:01
Что-то не выходит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.10.2016, 12:01
Помогаю со студенческими работами здесь

Как сделать круглый прогресс бар?
Здравствуйте, мне на экран загрузки нужен круглый прогресс бар, а как его сделать не шарю. Пожалуйста помогите

Как сделать прогресс-бар для цикла операций?
Добрый день сталкнулся с проблемой. Сделал батник который запускает софтину с определенной командой на полтора часа и закрывает ее таких...

Как сделать прогресс бар для скачиваемых файлов?
Как сделать тут прогресс бар? private void button2_Click_1(object sender, EventArgs e) { var hashes =...

Как сделать прогресс бар к вот такой процедуре?
procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text&lt;&gt;'' then Memo1.Text:=idhttp1.Get(edit1.Text); end; как видно...

Ajax, jQuery, как сделать прогресс бар обработки серверной функции
Всем привет! Разрабатываю веб-приложение. Js, Jquery, Ajax, серверная часть на Python. С помощью ajax отправляю файл docx на сервер,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru