Другие языки программирования и технологии
В Делфи7. Загвоздка с меседжбоксами!
Оба Меседжбокса в процедурах таймеров (2 таймера) сначала при движении мыши выскакивает первый меседж, после если нажимается ОК, таймер первого меседжа выкл., 2й таймер вкл. и соответсвенно выскакивает 2й меседж, но как сделать чтобы не несколько раз клацать на кнопку ОК, а с первого клика условие выполнялось привожу листинг 1го таймера: procedure TForm1.Timer1Timer(Sender: TObject); var foo: TPoint; foo1: TPoint; Xfoo: string; Yfoo: string; Xfoo1: string; Yfoo1: string; X : string; q :integer; begin GetCursorPos(foo); Xfoo := IntToStr(foo.X); Yfoo := IntToStr(foo.Y); sleep(1); GetCursorPos(foo1); While (foo.X<>foo1.X) or (foo.Y<>foo1.Y) do begin X:='Ìûøü áûëà ïåðåäâèíóòà â ïîëîæåíèå X= '+ Xfoo +';'+' Y= '+ Yfoo +';'+ ' óñòàíîâèòü äðàéâåð äëÿ íîâîé êîíôèãóðàöèè? (ïîòðåáóåòñÿ ïåðåçàïóñê)'; if Application.MessageBox(PChar(x),'Ñèñòåìíîå ñîîáùåíèå WINDOWS' ,MB_OKCANCEL+MB_ICONEXCLAMATION)= IDOK then q:=1; repeat Application.MessageBox(PChar(x),'Ñèñòåìíîå ñîîáùåíèå WINDOWS' ,MB_OKCANCEL+MB_ICONEXCLAMATION) until q=1; if q=1 then begin Timer1.Enabled:=False; Timer2.Enabled:=True; end; end; end; и еще как сделать чтобы окна меседжей были всегда сверху (просто меседж без апликэйшен не идет)?
Это че ваще? О_о
ты как минимум два раза жмешь на кнопку) ) вместо repeat используй wile тогда один будет.. . попробуй нажать на отмену и она наверно зациклится в твоем исполнении =))
условие в цикл перенеси под repeat тогда все ровно будет!)) )
MB_APPLMODAL, MB_SYSTEMMODAL, MB_TASKMODALа вот тебе флаги для "сверху"
ты как минимум два раза жмешь на кнопку) ) вместо repeat используй wile тогда один будет.. . попробуй нажать на отмену и она наверно зациклится в твоем исполнении =))
условие в цикл перенеси под repeat тогда все ровно будет!)) )
MB_APPLMODAL, MB_SYSTEMMODAL, MB_TASKMODALа вот тебе флаги для "сверху"
Таймеры не для этого. Здесь лучше пару потоков использовать. Но это немножко сложнее. Нужно понять, как работает синхронизация в винде и под дельфи в частности, что такое события, семафоры, мьютексы, критические секции.. . Непонятна цель всего этого кода. Лучше б вкратце описал, что хочешь напрограммить.
Короче, нужно, чтобы не выводилось несколько месседжэв подряд? Просто заведи булеву переменную (скажем, b), изначально в проге присвой ей true, тело обработчика первого таймера засунь в конструкцию if b then begin ...end;, непосредственно перед ShowMessage мессэджа напиши b := false, а непосредственно после того же самого ShowMessage напиши b := true;. Тогда пока показан мессэдж первым таймером, этот таймер, по сути, работать не будет (в обработчике ничего не будет выполняться, пока мессэдж не будет закрыт пользователем) .
А вообще код жутко страшный и непонятный, отслеживать передвижение мыши в таймере - не очень хорошая идея, Александр Ильин +1.
А вообще код жутко страшный и непонятный, отслеживать передвижение мыши в таймере - не очень хорошая идея, Александр Ильин +1.
Короче тебе нужно чтобы при достижении определенной точки указателя мыши выводился один MessageBox и после нажатия на кнопку ОК просто запускался второй таймер и все. Так я понял?
ЗЫ: и пожалуйста поменяй кодировку.... что ты там в Мessage выводишь за сообщение. Не могу определить
ЗЫ: и пожалуйста поменяй кодировку.... что ты там в Мessage выводишь за сообщение. Не могу определить
Похожие вопросы
- Всем спасибо за ответы, я поняла в чём была проблема, но загвоздка осталась...
- Вот только одна загвоздка, как это сделать, чтобы люди думали, что это божественное пророчество?
- покупка квартиры через агенство. есть 2 варианта .но в обоих есть по загвоздке. смущают оба. пояснение в тексте
- Церкви-то определяются моментально, да вот в чём загвоздка: где находится панно?
- В чем загвоздка?
- Говорят "каждый выбирает свою жизнь сам" Но я то такую одинокую никогда не хотела!!! В чём загвоздка, всё не так идёт?
- Ребенок изъявил желание научиться играть на гитаре, но загвоздка в том, что это девочка и ей всего 8 лет!
- Отказ от прививки, помогите с загвоздкой.
- Познакомились по интернету,общаемся,созваниваемся, говорит,что я ему дорога,но загвоздка в том,что там не моё фото....