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

Соединение ProgressBar с функцией

13.12.2011, 01:05. Показов 3078. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
у меня есть программа которая выводит числа в StringGrid от 1 до 64 по определенной функции и вся проблема заключается в том что что мне требуется закрасить ячейки в StringGrid в завасимости от данных в них по порядку с определенно периодичностью но я не могу связать свое n с ProgressBar вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
  for (int n=1; n<=64; n++)
    if(StringGrid1->Cells[ARow][ACol]==n)
    {
      StringGrid1->Canvas->Brush->Color=clBlack;
      StringGrid1->Canvas->FillRect(Rect);
      StringGrid1->Canvas->Font->Size=12;
      StringGrid1->Canvas->Font->Color=clWhite;
      StringGrid1->Canvas->TextOutA (Rect.left,Rect.top,StringGrid1->Cells[ARow][ACol]);
    }
}
 
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if (ProgressBar1->Position<=65)
    ProgressBar1->Position=ProgressBar1->Position+1;
  else Timer1->Enabled=false;
}
P.S. у меня ProgressBar с 1 до 65

 Комментарий модератора 
artcher, используйте тег вставки кода :
[CPP ]без пробелов[ /CPP] или кнопка C++ на панели окна редактирования сообщения
Правила
2.8. Используйте тэги форматирования текста для удобства восприятия ваших сообщений другими пользователями.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2011, 01:05
Ответы с готовыми решениями:

Консольный progressbar или progressbar в TMemo
Здравствуйте. Хочу спросить ради интереса как создать вот такой ProgressBar но с указанием...

Глючит соединение с интернетом. Не открываются сайты, не удается установить DNS соединение
Добрый день! Помогите разобраться с проблемой!!! Есть сеть из 30 ПК, последнее 7 дней стал глючить...

Соединение с БД (соединение через сеть)
Доброго времени суток. Помогите пожалуйста новичку. Создал в Visual Studio Net 2010 C++ проект с...

Базовое соединение закрыто: Соединение было неожиданно закрыто
Доброго времени суток, пытаюсь подключиться к сайту таким образом. Uri uri = new...

6
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,064
13.12.2011, 01:12 2
Так гламурнее,и читать полегче твой вопрос...

у меня есть программа которая выводит числа в StringGrid от 1 до 64 по определенной функции и вся проблема заключается в том что мне требуется закрасить ячейки в StringGrid в завасимости от данных в них по порядку с определенно периодичностью но я не могу связать свое
n с ProgressBar вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
 int ARow, TRect &Rect, TGridDrawState State)
 {
 for (int n=1; n<=64; n++)
 if(StringGrid1->Cells[ARow][ACol]==n)
 {
 StringGrid1->Canvas->Brush->Color=clBlack;
 StringGrid1->Canvas->FillRect(Rect);
 StringGrid1->Canvas->Font->Size=12;
 StringGrid1->Canvas->Font->Color=clWhite;
 StringGrid1->Canvas->TextOutA (Rect.left,Rect.top,StringGrid1->Cells[ARow][ACol]);
 }
 }
 
 
 void __fastcall TForm1::Timer1Timer(TObject *Sender)
 {
 if (ProgressBar1->Position<=65)
 ProgressBar1->Position=ProgressBar1->Position+1;
 else Timer1->Enabled=false;
 }
P.S. у меня ProgressBar с 1 до 65
0
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 18
13.12.2011, 04:14  [ТС] 3
конечно спасибо что исправили, но толку мне из этого 0, мне курсач на завтра нужен, а именно в этом загвоздка вот сужу колупаюсь, матерюсь

Добавлено через 1 минуту
как вариант я делал такое(ниже), но мне нужна адресация на повтор функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
for (int n=1; n<=ProgressBar1->Position; n++)
if(StringGrid1->Cells[ARow][ACol]==n)
{
StringGrid1->Canvas->Brush->Color=clBlack;
StringGrid1->Canvas->FillRect(Rect);
StringGrid1->Canvas->Font->Size=12;
StringGrid1->Canvas->Font->Color=clWhite;
StringGrid1->Canvas->TextOutA (Rect.left,Rect.top,StringGrid1->Cells[ARow][ACol]);
}
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (ProgressBar1->Position<=65)
ProgressBar1->Position=ProgressBar1->Position+1;
else Timer1->Enabled=false;
}
Добавлено через 1 минуту
может как-то меткой можно?

Добавлено через 2 часа 51 минуту
решил пойти по тупому подскажите где ошибка:
C++
1
2
3
4
5
6
7
8
9
10
11
{
int n=ProgressBar1->Position;
if(StringGrid1->Cells[ARow][ACol]==n) & (ProgressBar1->Position==1)
{
StringGrid1->Canvas->Brush->Color=clBlack;
StringGrid1->Canvas->FillRect(Rect);
StringGrid1->Canvas->Font->Size=12;
StringGrid1->Canvas->Font->Color=clWhite;
StringGrid1->Canvas->TextOutA (Rect.left,Rect.top,StringGrid1->Cells[ARow][ACol]);
}
}
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
13.12.2011, 12:00 4
ты можешь вызвать обработчик отрисовки так
C++
1
StringGrid1DrawCell(this,my_coll,my_row,SG1->CellRect(my_coll,my_row),TGridDrawState() << gdFixed);
или косвенно вызвать посредством Repaint(); Refresh(); или Update();
0
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 18
14.12.2011, 21:52  [ТС] 5
мне предложили одну идею: типо сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
 int ARow, TRect &Rect, TGridDrawState State)
 {
 for (int n=1; n<=64; n++)
 if(StringGrid1->Cells[ARow][ACol]==n)
 {
 StringGrid1->Canvas->Brush->Color=clBlack;
 StringGrid1->Canvas->FillRect(Rect);
 StringGrid1->Canvas->Font->Size=12;
 StringGrid1->Canvas->Font->Color=clWhite;
 StringGrid1->Canvas->TextOutA (Rect.left,Rect.top,StringGrid1->Cells[ARow][ACol]);
 }
 }
через Delay но я не знаю как можете подсказать?
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
15.12.2011, 05:41 6
вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
  for (int n=1; n<=ProgressBar1->Position; n++)
    if(StringGrid1->Cells[ARow][ACol]==n)
    {
      StringGrid1->Canvas->Brush->Color=clBlack;
      StringGrid1->Canvas->FillRect(Rect);
      StringGrid1->Canvas->Font->Size=12;
      StringGrid1->Canvas->Font->Color=clWhite;
      StringGrid1->Canvas->TextOutA (Rect.left,Rect.top,StringGrid1->Cells[ARow][ACol]);
    }
}
 
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  if (ProgressBar1->Position<65)ProgressBar1->Position++;
  else Timer1->Enabled=false;
  StringGrid1->Repaint();
}
1
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 18
15.12.2011, 12:07  [ТС] 7
огромнейшее спасибо работает, вы спасли меня от армии)
0
15.12.2011, 12:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2011, 12:07
Помогаю со студенческими работами здесь

Базовое соединение закрыто: Соединение было неожиданно закрыто
Здравствуйте. У меня возникла такая проблема, что при вызове метода soap веб-сервиса соединение...

Базовое соединение закрыто: Соединение было неожиданно закрыто
Недавно написал лаунчер для своего сервера, сделал там и регистрацию. Для этого зарегистрировал...

progressBar
проблема в том что пока загружается метод всякие visible...очень не красиво смотрится (учитывая что...

progressbar
как в прогрессбаре показать позицию песни progressbar1.Position:=mediaplayer1.Length; не...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru