Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите начинающему программисту 
:(
    Опции темы
Гость_Александр
Дата 20.6.2005, 09:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Здравствуйте!

Подскажите пожалуйста, как в Билдере 5 перейти на процесс параллельного выполнения команд.

Например, при отображении на графическом интерфейсе текущего времени (в течение установленных 15 секунд), в процессе работы программы не работают остальные кнопки (функции), в частности, на преждевременное закрытие программы.

даю Unit1.cpp:

#include<iostream>
#include <vcl.h>
#pragma hdrstop
#include <dos.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{

Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int i = 0;

while (i<15)
{
Label1->Caption = Time();
_sleep (1);
Label1->Refresh();
i++;
}
}

Заранее спасибо,
Александр.
  Вверх
azesmcar
Дата 20.6.2005, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Код

#include<iostream> 
#include <vcl.h> 
#pragma hdrstop 
#include <dos.h> 
#include "Unit1.h" 
//--------------------------------------------------------------------------- 
#pragma package(smart_init) 
#pragma resource "*.dfm" 
TForm1 *Form1; 
//--------------------------------------------------------------------------- 
__fastcall TForm1::TForm1(TComponent* Owner) 
: TForm(Owner) 
{ 
} 
//--------------------------------------------------------------------------- 

void __fastcall TForm1::Button2Click(TObject *Sender) 
{ 

Close(); 
} 
//--------------------------------------------------------------------------- 
void __fastcall TForm1::Button1Click(TObject *Sender) 
{ 
int i = 0; 

while (i<15) 
{ 
Label1->Caption = Time();
_sleep (1); 
//Label1->Refresh();  //Это лишнее
Application->ProcessMessages(); //Добавь эту строку
i++; 
} 
} 


П.С. Пользуйся таймером...(component TTimer)
Добавлено @ 10:45
Sleep задерживает на 1-у миллисекунду а не секунду..так что вместо _sleep(1) поставь _sleep(1000)
PM   Вверх
Гость_Александр
Дата 20.6.2005, 11:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered












Попробовал, как посоветовали (убрал 31, добавил строку 32) - все равно кнопка Button2 не активизируется пока не пройдет 15 секунд !!!
  Вверх
Бегемот
Дата 20.6.2005, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

Репутация: 1
Всего: 3



Александр,
Цитата
Пользуйся таймером...(component TTimer)

Код

//-----------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Timer1->Enabled=true; 
}
//-----------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 Close();
}
//-----------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
static i=0;
if (i<15)
{
 Label1->Caption = Time();
 i++;
}
else
{
 Timer1->Enabled=false;
 i=0;
}
}
//-----------------------------------------------------

Да и ещё, не забудь сперва установить свойство Enabled таймера в false, дабы он не побежал сразу после запуска приложения. Свойством Interval устанавливаешь нужный интервал времени(мс), через который будет выполняться код написаный в onTimer. По умолчанию, как видишь, стоит одна секунда. smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0429 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.