Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> приостановить программу, и подождать действий пользователя 
:(
    Опции темы
neweraser
Дата 17.10.2008, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



только без модальных форм, наверно это глупо, но уж так захотелось...
Код

for i:= 0 to Memo1.Lines.Count - 1 do
begin
  label1.caption:= Memo1.Lines(i);
  // тут ждем пока не нажмется одна из 3-х кнопок
  // потом присваиваем какой-нибудь переменной значение, соответствующее опр. кнопке
  // и продолжаем цикл
end;


смысл в том, что программа будет задавать вопросы, а потом на основе ответов делать вывод....
возможно тупо придумал - в голову ничего не приходит, помогите  smile 


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Frees
Дата 17.10.2008, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



типо вопросы в Memo1 написаны да?
Код

var 
Flag: Boolean;
for i:= 0 to Memo1.Lines.Count - 1 do
begin
  label1.caption:= Memo1.Lines(i);
    Flag := true;
    while Flag do
    begin
      Application.ProcessMessages;
      sleep(100);
    end;
end;



потом в событиях которые говорят о отм что пользователь чето нажал в OnKeyUp напимер
пишеш Flag := false;

Это сообщение отредактировал(а) Frees - 17.10.2008, 09:31


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
neweraser
Дата 17.10.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



можно поподробнее? пробую - ничего не получается, может я просто не понимаю что делаю
вместо 
Цитата(Frees @  17.10.2008,  09:30 Найти цитируемый пост)
Application.ProcessMessages;      sleep(100);

нужно ставить свой код, так? 
и еще создать процедуру button1.OnKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState)
и в ней прописать Flag:= false?



--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Данкинг
Дата 17.10.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(neweraser @  17.10.2008,  11:58 Найти цитируемый пост)
можно поподробнее? п

В процедуре, например, по нажатию клавиши на форме пишем Flag:= false, чтобы выйти из бесконечного цикла, который написан в примере.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Frees
Дата 17.10.2008, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



Цитата(neweraser @  17.10.2008,  12:58 Найти цитируемый пост)
нужно ставить свой код, так? 

про какой код ты говориш?

Application.ProcessMessages; убирать нельзя




--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
neweraser
Дата 20.10.2008, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



Цитата(Frees @  17.10.2008,  13:22 Найти цитируемый пост)
Application.ProcessMessages

это я сразу понял, после того как убрал, потом дошло  smile 
все, разобрался, спасибо всем


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Poseidon
Дата 20.10.2008, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Ну раз уж начали извращаться, то почему бы не загонять задание вопросов в отдельный поток и не останавливать поток когда надо?


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
neweraser
Дата 20.10.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



зачем?


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Poseidon
Дата 20.10.2008, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



neweraser, это ты у меня спрашиваешь? Я бы вообще спросил бы у тебя, зачем извращаться, если ShowModal справится с задачей на ура.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
neweraser
Дата 21.10.2008, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



просто не хочу эти формы модальные, надоели, это получается, что на каждый вопрос в программе будет окошко выскакивать, но если showmodal можно еще как-нибудь применить - я только за  smile 

Это сообщение отредактировал(а) neweraser - 21.10.2008, 08:47


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Poseidon
Дата 21.10.2008, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Давай тогда разберемся...

Цитата(neweraser @  17.10.2008,  09:07 Найти цитируемый пост)
смысл в том, что программа будет задавать вопросы, а потом на основе ответов делать вывод....
Каким образом будут задаваться вопросы и каким образом на них будут получаться ответы? Может можно поцепить кнопку "Принять ответ" и по ней уже идти дальше?



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
neweraser
Дата 22.10.2008, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



Цитата(Poseidon @  21.10.2008,  09:35 Найти цитируемый пост)
Может можно поцепить кнопку "Принять ответ" 

тут не совсем понятно, у меня исп. 3 кнопки-ответа - "Да", "Нет", "Незнаю", в каждой кнопке забиты if-ы, напр. 
Код

  if label1.Caption = 'какой-нибудь вопрос' then
  ... // действие

и в конце flag:= false;


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
Frees
Дата 22.10.2008, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 9
Всего: 54



Код

Var QuestIndex: Integer;// перед тем как задовать вопросы присвой ей 0


....
procedure GetNextQuest;
begin
  if  QuestIndex >=  Memo1.Lines.count then
    label1.caption:= 'Вопросы кончелись';
  else 
  begin
    label1.caption:= Memo1.Lines(QuestIndex);
    QuestIndex := QuestIndex + 1;
  end;

end;

Цитата(neweraser @  22.10.2008,  10:32 Найти цитируемый пост)
3 кнопки-ответа - "Да", "Нет", "Незнаю", 


Цитата(neweraser @  22.10.2008,  10:32 Найти цитируемый пост)
и в конце flag:= false;

 
и в конце напиши не flag:= false а GetNextQuest;


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Poseidon
Дата 22.10.2008, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(neweraser @  22.10.2008,  08:32 Найти цитируемый пост)
тут не совсем понятно, у меня исп. 3 кнопки-ответа - "Да", "Нет", "Незнаю"
И зачем тебе приостанавливать программу, если она у тебя сама приостановится и будет ждать пока ты нажмешь на одну из этих кнопок? Придумали тот, цикл крутить в холостую. Зачем? Задал вопрос и жди пока пользователь нажмет на кнопку. Нажал - принял ответ и задал другой вопрос. Извращенцы  smile 



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
neweraser
Дата 22.10.2008, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 17.2.2008

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



Это намного лучше, спасибо, разобрался как все сделать
главный недостаток того бесконечного цикла - это полное "торможение" программы, т.е. нажатия др. кнопок игнорировались (но на самом деле нет, они выполнялись после завершения этого цикла), но, согласитесь, не приятно, когда нажимаешь на крестик, а программа не закрывается, пришлось до того извратиться, что вместо flag: boolean ставить byte или integer, потом нов. кнопку, а в ней 
Код

procedure TForm1.CloseBtn.Click(Sender: TObject);
begin
  close;
  flag:= 2;
end;

и вначале того цикла забивать 
if flag:= 2 then
break // или exit (не помню)
и это все только для того, чтобы выйти из программы...
вот так вот
еще раз спасибо за ответы  smile 


--------------------
Кто ищет, тот всегда найдет.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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