Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2011, 17:33   #1
Mr_skiner
Пользователь
 
Аватар для Mr_skiner
 
Регистрация: 21.05.2010
Сообщений: 56
По умолчанию 2 действия одновременно

Мне нужно чтобы в моей программе можно было работать паралельно с тикающим таймером, а выходит так, что пока работает таймер нужно ждать.. как организовать параллельность?
Mr_skiner вне форума Ответить с цитированием
Старый 13.05.2011, 18:06   #2
mrCloud
Пользователь
 
Аватар для mrCloud
 
Регистрация: 13.05.2011
Сообщений: 42
По умолчанию

var thread:TThread;
begin
Thread:=TThread.Create(false);
{Код программы}
end;
mrCloud вне форума Ответить с цитированием
Старый 13.05.2011, 18:14   #3
Mr_skiner
Пользователь
 
Аватар для Mr_skiner
 
Регистрация: 21.05.2010
Сообщений: 56
По умолчанию

Что то не получается пока прога вычисления делает - таймер стоит
Mr_skiner вне форума Ответить с цитированием
Старый 13.05.2011, 19:17   #4
bananasus
Пользователь
 
Аватар для bananasus
 
Регистрация: 24.01.2011
Сообщений: 67
По умолчанию

Кидай исходник, мы же не экстрасенсы...
bananasus вне форума Ответить с цитированием
Старый 13.05.2011, 19:26   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Что то не получается пока прога вычисления делает - таймер стоит
с отдельной нитью (процессом) - TThread, как предложил mrCloud, таких проблем не должно быть.
вы уверены, что правильно в коде создаёте отдельный поток?!

впрочем, даже с обычной формой - если вычисления в цикле, то повставляйте в цикл вычисления команды обработки очереди сообщений - должно помочь:
Код:
for ... do begin
  ...
  Application.ProcessMessages;
end;
while ... do begin
  ...
     Application.ProcessMessages;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2011, 19:30   #6
Mr_skiner
Пользователь
 
Аватар для Mr_skiner
 
Регистрация: 21.05.2010
Сообщений: 56
По умолчанию

ну исходник тут довольно таки большой, суть такая. Вводишь- логин -пароль и пока программа их сверяет с Базой данных хочу сделать Форму где написано ждите и крутятся часики или статус бар или еще что то. А получается так что если отдельно открыть эту форму- все работает, а если так как я хочу - нефига не получается. Код довольно большой сейчас попробую отобразить .

Вот таймер

Код:
procedure TWait.Timer1Timer(Sender: TObject);
var
begin
  i:=i+1;
  if i>=7 then i:=0;
  Image1.Transparent:=true;
  Image1.Picture:=nil;
  ImageList1.GetBitmap(i,Image1.Picture.Bitmap);

end;
А вот код входа


Код:
procedure TVhod.sBitBtn2Click(Sender: TObject);
begin
 Wait.Show; отображение формы с таймером
  try
    тут сам вход и сверка с базой данных
  Except
    Showmessage('Ошибка подключения к интернету');
    end;
    Wait.hide;  Скрывание формы с таймером
end;
Mr_skiner вне форума Ответить с цитированием
Старый 13.05.2011, 19:42   #7
mrCloud
Пользователь
 
Аватар для mrCloud
 
Регистрация: 13.05.2011
Сообщений: 42
По умолчанию

Код:
var thread:TThread;
begin
Thread:=TThread.Create(false);
i:=i+1;
  if i>=7 then i:=0;
  Image1.Transparent:=true;
  Image1.Picture:=nil;
  ImageList1.GetBitmap(i,Image1.Picture.Bitmap);

end;

Последний раз редактировалось Stilet; 13.05.2011 в 19:50.
mrCloud вне форума Ответить с цитированием
Старый 13.05.2011, 20:36   #8
Mr_skiner
Пользователь
 
Аватар для Mr_skiner
 
Регистрация: 21.05.2010
Сообщений: 56
По умолчанию

не помогло =(
Mr_skiner вне форума Ответить с цитированием
Старый 13.05.2011, 20:57   #9
Mr_skiner
Пользователь
 
Аватар для Mr_skiner
 
Регистрация: 21.05.2010
Сообщений: 56
По умолчанию

Может потому что таймер находится на другой форме?
Mr_skiner вне форума Ответить с цитированием
Старый 14.05.2011, 07:50   #10
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> пока программа их сверяет с Базой данных

вот эту сверку и надо делать в отдельном потоке. таймер тут до лампочки.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запонить бд и treeview одновременно boshki Помощь студентам 0 07.05.2011 19:57
2 процеса одновременно..? на Си pufystyj Общие вопросы C/C++ 16 30.03.2011 19:17
нажатие 2 клавиш одновременно sone4chko Помощь студентам 1 19.12.2009 18:45
DirectX и OpenGL одновременно Selestis Мультимедиа в Delphi 7 28.09.2009 19:23
Одновременно делать 2 действия(showmessage и ShellEzecute) Ozerich Общие вопросы Delphi 2 29.08.2008 08:16