Форум: "Основная";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
ВнизПомогите вернуть курсор...... Найти похожие ветки
← →
aleshap (2006-03-07 16:06) [0]Всем добрый день! И с праздником женскую половину (если такая имеется)
Есть проблема.
Форма на которой расположены около 10-ти полей TEdit. В действии OnExit одного из них (пусть Edit1) написан следующий код:
procedure TForm1.Edit1Exit(Sender: TObject);
begin
WAIT.Show;
sleep(400); // ... неважно...
WAIT.Hide;
end;
WAIT - форма типа "Ждите" (без элементов управления - да это и не важно)
И как только я перехожу с данного поля на любое другое, то теряется курсор (не мыши), и не обрабатывается событие OnEnter поля на которое перехожу, хотя при вводе с клавиатуры буковки появляются.
Помогите вернуть курсор.
Заранее благодарен!
← →
Джо © (2006-03-07 16:17) [1]> , то теряется курсор (не мыши),
Так какой "курсор" теряется? Откуда он "теряется"?
← →
aleshap (2006-03-07 16:27) [2]курсор - который определяет место ввода (для полной внятности - вертикальная мигающая "палочка")
предлагая наиграть....
создаете 2 формы....
на Form1 располагаете 2 поля. В OnExit поля Edit1 включаете след код:
Form2.Show;
Form2.Hide;
запускаете и пробуете перейти с одного поля на другое
← →
Джо © (2006-03-07 16:41) [3]> запускаете и пробуете перейти с одного поля на другое
И пробовать не буду. Зачем? Я и так знаю, что фокус ввода будет на каком-то из контроллов формы2. Ты ведь ее показываешь и активируешь.
← →
aleshap (2006-03-07 16:53) [4]Да показываю, но еще форму2 я и закрываю - фокуса там оставаться не должно и не остается
По всей видимости вы не понимаете, поэтому я вам и предложил наиграть ситуацию...
← →
Джо © (2006-03-07 17:16) [5]> [4] aleshap (07.03.06 16:53)
Да, действительно, пропадает и Caret и выделение, хотя фокус ввода второй Edit получает, странно. Извините, сразу не понял.
← →
aleshap (2006-03-07 18:42) [6]Да по всей видимости проблема на много серьезнее чем я предполагал....
← →
ArtemESC © (2006-03-07 22:54) [7]
Application.ProcessMessages
- наверное...
← →
Германн © (2006-03-08 02:27) [8]
> ArtemESC © (07.03.06 22:54) [7]
>
> Application.ProcessMessages - наверное...
Мимо.
← →
aleshap (2006-03-09 10:59) [9]Господа знатоки, еще раз обращаю ваше внимание к проблеме....
← →
Плохиш © (2006-03-09 11:15) [10]
> aleshap (07.03.06 16:53) [4]
> Да показываю, но еще форму2 я и закрываю - фокуса там оставаться
> не должно
Ты её не закрываешь, а прячешь. Вставь после WAIT.Hide; SetFocus;
← →
aleshap (2006-03-09 12:29) [11]>Ты её не закрываешь, а прячешь. Вставь после WAIT.Hide; SetFocus;
Дело вовсе не в этом...Можно ставить хоть Hide, хоть Close, хоть Free - результат один и тот же. И никакой SetFocus в этом не поможет... читайте [4] и [5].
← →
Leonid Troyanovsky © (2006-03-09 12:48) [12]
> aleshap (09.03.06 12:29) [11]
> Дело вовсе не в этом...
Sleep здесь абсолютно не по делу (как, собс-но, и Hide).
--
Regards, LVT.
← →
aleshap (2006-03-09 13:22) [13]>Sleep здесь абсолютно не по делу (как, собс-но, и Hide).
Господа - вы о чем...
Не утруждайте себя глупыми замечания совершенно не относяшиеся к делу!
← →
Leonid Troyanovsky © (2006-03-09 13:29) [14]
> aleshap (09.03.06 13:22) [13]
> Не утруждайте себя глупыми замечания совершенно не относяшиеся
> к делу!
Потрудись обосновать свои слова, как насчет глупости,
так и насчет отношения к делу.
--
Regards, LVT.
← →
REA (2006-03-09 13:32) [15]видимо нарушается логика обработки перехода контролов.
думаю можно послать самому себе в обработчике OnExit какое нибудь свое сообщение вроде WM_WAITWINDOW и в нем уже проделать все что нужно.
← →
aleshap (2006-03-09 13:39) [16]Да конечно!
По поводу sleep - данная команда к проблеме не имеет совершенно НИКАКОГО отношения, и была включена в код (кстати с комментарием - я в принципе предполагал, что читающий обратит на него внимание) для пояснения, что между открытием и закрытием формы - содержится некий код опять-таки не имеющий НИКАКОГО отношения к проблеме.
По поводу Hide - потрудитесь прочесть [4], [5], [10] и [11].
Теперь потрудитесь обосновать ваше сообщение [12] и какое отношение оно имеет к проблеме?
← →
aleshap (2006-03-09 13:45) [17]> [15] видимо нарушается логика обработки перехода контролов...
Да спасибо, это конечно поможет, но мне не нужно "обходное" решение (в виду поставленной задачи).
К сожалению, необходимо решение данной проблемы.
P.S. Хотя я чувствую, что другого выхода по всей видимости нет.
← →
Leonid Troyanovsky © (2006-03-09 13:56) [18]
> aleshap (09.03.06 13:39) [16]
> По поводу sleep - данная команда к проблеме не имеет совершенно
> НИКАКОГО отношения, и была включена в код (кстати с комментарием
> - я в принципе предполагал, что читающий обратит на него
> внимание) для пояснения, что между открытием и закрытием
> формы - содержится некий код опять-таки не имеющий НИКАКОГО
> отношения к проблеме.
А почему ты полагаешь, что я всего этого не читал?
И что такого глубокого содержится в комментарии // ... неважно...
Теперь, с самого начала. Убираем
sleep(400); // ... неважно...
WAIT.Hide;
И фокус виден всегда, вне зависимости от способа закрытия формы
(вручную или таймером). Хотя, скорее всего, этой форме больше
пристало быть модальной.
Т.е., пока я не видел никакого внятного описания проблемы
(кроме симптомов сомнительного происхождения).
--
Regards, LVT.
← →
aleshap (2006-03-09 14:18) [19]
> А почему ты полагаешь, что я всего этого не читал?
> И что такого глубокого содержится в комментарии // ... неважно.
> ..
Кто как читает так и может!
Хорошо если это вам так мешает - то убирает,
sleep(400); // ... неважно...
Но форму все же надо закрыть... путь и не Hide ([11] выбирайте все что вам угодно) и Что?
Модальность давайте затрагивать не будем! Т.к. это уже другая историй. Вы же не меняли условия задач по математике(физике) в школе, чтобы ее решить - [17]
> Т.е., пока я не видел никакого внятного описания проблемы
Вы можете найти в самом вопросе, после его внимательного прочтения.
← →
aleshap (2006-03-09 14:22) [20]Мне кажется, что обсуждения уходят уже не в то русло, которое могло бы привести к решению проблемы!
А фантазии на тему "Давайте переделаем мир" - я считаю неприемлемо
Всем спасибо!
← →
Leonid Troyanovsky © (2006-03-09 14:40) [21]
> shap (09.03.06 14:18) [19]
> Но форму все же надо закрыть... путь и не Hide ([11] выбирайте
> все что вам угодно) и Что?
Кому нужно?
Обычно формы показывают юзеру. Прочитал он адресованное ему,
и закрыл. Если нужно ограничить по времени ставят таймер.
> Модальность давайте затрагивать не будем! Т.к. это уже другая
> историй. Вы же не меняли условия задач по математике(физике)
> в школе, чтобы ее решить - [17]
Почему, собс-но, модальность оказалась вне обсуждений.
И какие еще условия установлены (или не обсуждаются).
По-моему, ты чего-то недоговариваешь по существу.
Что за задача решается (и зачем).
--
Regards, LVT.
← →
ALS © (2006-03-09 15:21) [22]Проблема решается заменой
WAIT.Hide;
наPostMessage(WAIT.Handle, WM_CLOSE, 0, 0);
← →
aleshap (2006-03-09 17:02) [23][22] Спасибо Большое!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.015 c