Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > C/C++ > C++ Builder
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.06.2013, 22:34
sadreek sadreek вне форума
Прохожий
 
Регистрация: 18.06.2013
Сообщения: 2
Версия Delphi: C++ Builder 6
Репутация: 10
По умолчанию ShowModal из потока

Помогите, пожалуйста:

Код:
Form2->ShowModal();
в
Код:
void __fastcall ReadThread::Printing()
{

 Form1->Memo1->Lines->Add((char*)bufrd); //выводим принятую строку в Memo
 Form1->StatusBar1->Panels->Items[2]->Text = "Всего принято " + IntToStr(counter) + " байт";	//выводим счётчик в строке состояния
 /*НЕ РАБОТАЕТ*/
 Form2->Label1->Caption = (char*)bufrd;
 if (Form2->Showing) {} else Form2->ShowModal();
 /*НЕ РАБОТАЕТ*/
 if(Form1->CheckBox3->Checked == true)  //если включен режим вывода в файл
  {
   write(handle, bufrd, strlen(bufrd)); //записать в файл данные из приёмного буфера
  }
 memset(bufrd, 0, BUFSIZE);	        //очистить буфер (чтобы данные не накладывались друг на друга)
}
стопорит поток чтения из COM порта, один раз открывает ShowModal, Label'у присваиваются считанные данные и всё, можно ли как-нибудь сделать так что бы каждый раз считанные данные отправлялись в Form2

Полный код: Unit1.7z
Ответить с цитированием
  #2  
Старый 19.06.2013, 09:10
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,381
Версия Delphi: 7, XE3, 10.2
Репутация: 49088
По умолчанию

Цитата:
Сообщение от sadreek
Помогите, пожалуйста:

...
стопорит поток чтения из COM порта, один раз открывает ShowModal, Label'у присваиваются считанные данные и всё, можно ли как-нибудь сделать так что бы каждый раз считанные данные отправлялись в Form2

Можно, но придется делать развязку через сообщения и в итоге получишь кучу открытых окошек сообщений, которые замучаешься закрывать. Если тебе это надо для отладки, то кинь куда-нить TMemo и из потока, через Synchronize, просто добавляй туда строчки.
Ответить с цитированием
  #3  
Старый 19.06.2013, 09:24
sadreek sadreek вне форума
Прохожий
 
Регистрация: 18.06.2013
Сообщения: 2
Версия Delphi: C++ Builder 6
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Можно, но придется делать развязку через сообщения и в итоге получишь кучу открытых окошек сообщений, которые замучаешься закрывать. Если тебе это надо для отладки, то кинь куда-нить TMemo и из потока, через Synchronize, просто добавляй туда строчки.

Ситуация такая:
Со сканера считывается штрих-код, должно автоматом открываться модальное окно, в котором должна быть возможность изменить какие-то данные и затем всё это дело сохраняется в БД, и один раз это срабатывает, но если ошиблись со штрих-кодом, ещё раз щёлкаем сканером и данные в модальном нужно естессно изменить.
Если модальное окно открывать, вручную, допустим из менюшки и только потом сканером клацать, то данные в него нормально передаются, т.е. в том случае, если ShowModal не инициировалось из потока.
Если из потока открывать окно не модально, то всё так же отлично работает, но тут другая ситуация, в окне должны быть обязательно сделаны корректировки, и тут уже надо делать его либо поверх всех окон (что у меня никак не получается) либо я ваще не знаю как
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter