| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как определить, сколько времени юзер читал текст |
| Автор: belkeandrey 2.4.2013, 20:42 |
| Коллеги, проблема такая. Уже как говорится, голова вскипела. Есть форма, есть кнопки с названием разделов, есть ричэдит. При нажатии на кнопку подгружаем файл в ричэтид. Юзер его читает, потом выбирает другой раздел, при этом меняется только путь к файлу и он видит другой текст. Как определить, сколько времени читал текст юзер до перехода в другой раздел. Если бы каждый раздел был в новой форме, проблем бы не было, просто событие onclose или подобное. А тут как подойти не соображу... |
| Автор: Poseidon 2.4.2013, 20:48 |
| Засекаешь время при открытии раздела, затем засекаешь при открытии другого и отнимаешь. В чем проблема возникла? Вот прямо тут и засекай. |
| Автор: belkeandrey 2.4.2013, 21:38 |
| У меня считается время таймером по 1 секунде увеличивая переменную на 1. От этого и отталкиваюсь, но никак не получается. Разделов много, а как вы имеете в виду засечь? |
| Автор: Данкинг 2.4.2013, 23:06 | ||
Ну, по клику на кнопках считывать/обнулять значение глобальной переменной, которая увеличивается по таймеру. |
| Автор: Akella 2.4.2013, 23:58 |
| ты не можешь определить сколько пользователь реально читал текст, можешь только определить время между некоторыми событиями в программе, а читал он или нет - как узнать? |
| Автор: belkeandrey 3.4.2013, 00:06 | ||||||
Да это не критично Кнопок много, ричэдит один. Нужно чтобы после нажатия на любую из кнопок сначала посчиталось время показа одного текста, а потом начался новый отсчет и так циклично на все кнопки... Добавлено через 1 минуту и 36 секунд
Да это и нужно, а читал он или нет, это уже его проблемы |
| Автор: Beltar 3.4.2013, 00:14 |
| Создай массив TDateTime, размерность задать по числу разделов, засекай момент загрузки раздела, засекай момент перехода к следующему, или иного события прекращения чтения, разницу суммируй с уже накопленным в массиве. Будет работать даже если юзер бегает туда-сюда. А лучше не DateTime, а Cardinal, и снимай замеры в миллисекундах с помощью GetTickCount (Сия функция первый помощник программиста, когда надо быстренько померить время), тогда не выйдет обмануть с помощью перевода часов, если это критично. |
| Автор: belkeandrey 3.4.2013, 00:15 | ||||||
допустим глобально считаются секунды. кликнул на 1й раздел - считали переменную, обнулили кликнул на 2й раздел - запустили таймер, а как же одним кликом и считать то? При кажущейся простоте, я что-то совсем запутался.... Завтра утром надо свежим взглядом смотреть Добавлено через 5 минут и 23 секунды
Вот это уже ближе к моей ситуации |
| Автор: Данкинг 3.4.2013, 00:29 |
| А что в итоге надо получить? Время по каждому разделу? |
| Автор: belkeandrey 3.4.2013, 00:34 | ||
В итоге мне надо название просмотренного текста и время его "просмотра" поместить в БД с помощью ADOQuery, причем желательно одновременно. Помещать эту инфу надопосле каждой смены раздела или ухода в другую часть проги... |
| Автор: Данкинг 3.4.2013, 01:09 |
| Ну, тогда достаточно одной переменной, значение которой будет заноситься в таблицу при смене раздела. |
| Автор: northener 3.4.2013, 01:10 | ||
Код показывай. Как "отталкиваешься", и что никак не получается. P.S. Имхо в итоге всё сведётся к незанию работы с БД. |
| Автор: Poseidon 3.4.2013, 08:31 |
У RichEdit есть событие OnChange, которое происходит при каждом изменении текста. Не нужно пихать на все кнопки, можно запихнуть сюда. При выполнении:
|
| Автор: belkeandrey 3.4.2013, 12:25 | ||
Спасибо, добрый человек Добавлено через 4 минуты и 41 секунду Только как теперь сделать, чтобы при подгрузке нового текста, скролл перемещался на начало? |
| Автор: Poseidon 3.4.2013, 14:48 | ||||
А вообще, один топик - один вопрос. Модераторы ругаются |
| Автор: belkeandrey 3.4.2013, 15:40 |
| Принял к сведению |