Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.09;
Скачать: CL | DM;

Вниз

Помогите вернуть курсор......   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.041 c
2-1143436559
Ошибка
2006-03-27 09:15
2006.04.09
Помогите, ошибка


2-1142997974
soi
2006-03-22 06:26
2006.04.09
Программное изменение размера дочернего окна


3-1139905229
Tornado
2006-02-14 11:20
2006.04.09
Сортировка в DBGridEh


15-1142434699
Alarm
2006-03-15 17:58
2006.04.09
Документация на Windows Server 2003


15-1142318554
Knight
2006-03-14 09:42
2006.04.09
FreeLibrary... Что не так?