C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
выделение строк в ListBox с измен. скоростью, обработка таймера
gorod
Отправлено: 10.11.2006, 12:09


Ученик-кочегар

Группа: Участник
Сообщений: 21



есть: листбокс в который вводятся строки
обработка всех кнопок(3 штуки)
нужно: обработка таймера т.е.
записать кодом следующее:
беру одну из строк,выделяю её и в цикле продолжаю выделять каждую почередно,продолжать это дело пока работает таймер
на мой цикл билдер упорно матерится
CODE
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{

 while(Form1->Timer1->Enabled!=false)
   { int i=Form1->ListBox1->Count
     for (int  j=0,j<=i,j++)
       {
         Form1->ListBox1->Items->Strings[ListBox1->ItemIndex]=j;
       }
    }
}

помогите плиз кто чем может
AVC
Отправлено: 10.11.2006, 13:49


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE (gorod @ 10.11.2006, 11:09)
помогите плиз кто чем может

Событие таймера возникает после истечения интервала времени. Следовательно нужно иметь цикл снаружи, котрый выполняется или нет в зависимости от некого флага, а вот установкой/сбросом флага должен заниматься таймер.
gorod
Отправлено: 10.11.2006, 15:44


Ученик-кочегар

Группа: Участник
Сообщений: 21



чёт я туплю
как это тггда оформить?
olegenty
Отправлено: 10.11.2006, 16:28


Ветеран

Группа: Модератор
Сообщений: 2412



ну можно розочки по краям пустить smile.gif
AVC
Отправлено: 10.11.2006, 16:31


Ветеран

Группа: Модератор
Сообщений: 1583



где то в недрах формы
while (условие выхода)
{ if (флаг) мигаем_строками;
Application->ProcessMessages();
}

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ флаг = !флаг;
...
}

gorod
Отправлено: 10.11.2006, 17:16


Ученик-кочегар

Группа: Участник
Сообщений: 21



лан попробую ща.
вопрос в другом правильно-ли я построил "мигание"
см.цикл фор выше
билдер матерится именно на эту строку
[C++ Error] Unit1.cpp(48): E2238 Multiple declaration for 'j'
[C++ Error] Unit1.cpp(48): E2344 Earlier declaration of 'j'
[C++ Error] Unit1.cpp(48): E2141 Declaration syntax error
я в визуале стал пргать совсем недавно
ничерта не понимаю
как малый щенок(((
AVC
Отправлено: 10.11.2006, 18:03


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE (gorod @ 10.11.2006, 16:16)
см.цикл фор выше


Оставив в стороне логику
while(Form1->Timer1->Enabled!=false)
{ int i=Form1->ListBox1->Count;
for (int j=0; j<=i; j++)
{
Form1->ListBox1->Items->Strings[ListBox1->ItemIndex] = j;
}
}

QUOTE
я в визуале стал пргать совсем недавно

Начните с чтения учебника по языку.

CODE

bool flag = false; // Так делать нельзя. flag должен быть приватным членом класса формы

void __fastcall TForm1::Button11Click(TObject *Sender)
{
flag = true;
Timer1->Enabled = true;
while (true)
{  Application->ProcessMessages();
   if(!flag) break;
   int i = ListBox1->ItemIndex + 1;
   if (i >= ListBox1->Items->Count) i = 0;
   ListBox1->ItemIndex = i;
}
Timer1->Enabled = false;
}

//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
flag = false;
}
gorod
Отправлено: 10.11.2006, 18:37


Ученик-кочегар

Группа: Участник
Сообщений: 21



yahoo.gif
спасибо!
работает!

а по поводу книги
копался в страуструпе- ничего по билдеру
а Пахомов- не понятно нифига (я и писал по его книге до этого)

Вернуться в Вопросы программирования в C++Builder