![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| AriX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 16.6.2003 Репутация: 5 Всего: 19 |
Проблема такая. Есть ListView, есть кнопка, при нажатии на которую добавляется Item в ListView с пустым Caption, чтобы юзер ввел туда что-то. Если после ввода Caption пустой, то его надо удалить.
Я добавил в событие OnEdited проверку на пустой Caption. В принципе, работает, но! только когда юзер что-то написал и стер. Оно не срабатывает, если после добавления Item'а юзер ничего не пишет, а сразу нажимает Enter. Как можно это исправить? |
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
Обрабатывай OnKeyPress.
-------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| AriX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 16.6.2003 Репутация: 5 Всего: 19 |
Dynamic
Спасибо, попробую! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Если редактирование закончится мышей, то не сработает.
Я бы послал сообщение на нажатие кнопошки, а потом на бэкспэйс. Хотя, если посмотреть исходняки, то может быть получится просто установить флаг редактирования... |
|||
|
||||
| s-mike |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 16.1.2005 Где: Киев Репутация: 9 Всего: 16 |
А про стандартные события OnEditing/OnEdited забыли?
|
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
s-mike Читай первый пост:
ЗЫ. Куда-то мое предыдущее сообщение подевалось ... -------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| Quadr0 |
|
|||
|
Unregistered |
...
Это сообщение отредактировал(а) Quadr0 - 14.7.2011, 20:46 |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Вот работающий пример:
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| AriX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 16.6.2003 Репутация: 5 Всего: 19 |
<Spawn>
А OnMouseUp разве сработает, если например нажать на другой контрол, т.е. ListView фокус потеряет. Наверное, надо еще и в OnExit проверку ставить. Я вот думал, может сделать обработчик какого-то сообщения системного, что-нить типа CM_AFTEREDIT. Пытался найти в MSDN - ничего не выцепил, но толи у меня MSDN кривой какой, толи руки. Там по-моему было что-то про AfterLabelEdit - но по какому сообщению оно происходит - не ясно. Просто столько проверок, может как проще можно сделать? Но все равно думаю так тоже будет работать. Всем Спасибо! Дома проверим. Это сообщение отредактировал(а) AriX - 24.5.2005, 09:41 |
|||
|
||||
| Dynamic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 372 Регистрация: 5.7.2004 Где: Салехард Репутация: 12 Всего: 15 |
Мое сообщение куда-то делось, поэтому повторю: может проще запрашивать текст при помощи inputquery() и создавать итем только при непустом вводе?? Столько проблем снимается...
-------------------- Было бы о чем молчать, а уж что сказать – всегда найдется... |
|||
|
||||
| Quadr0 |
|
|||
|
Unregistered |
...
Это сообщение отредактировал(а) Quadr0 - 14.7.2011, 20:48 |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Quadr0 Он имелл ввиду ситуацию завершения редактирования Caption-а, к которой OnExit тоже отностится, а так же и те события которые я описал.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| AriX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 16.6.2003 Репутация: 5 Всего: 19 |
Попробовал. Вроде OnMouseUp не работает. Т.е. создаю итем, ничего туда не пишу, щелкаю мышой на другой элемент - пустой не удаляется.
А остальное вроде работает. Всем спасибо!! Dynamic
Я думаю, что так и придется делать. Не хочется правда - дико как-то неудобно чтоли Может все-таки есть еще способы? |
|||
|
||||
| AriX |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 16.6.2003 Репутация: 5 Всего: 19 |
Посидел-помучился, но наконец разобрался с этой проблемой.
Способ вставлять проверку в OnExit, OnMouseUp, OnKeyUp, OnSelectItem работает, но не всегда. Во-первых, вместо OnMouseUp надо использовать OnMouseDown, не помню зачем, но так работает лучше. Но тоже плохо - если, например, нажать на другой итем при вводе пустого, то событие не срабатывает. Короче, чем вставлять кучу проверок, проще создать потомка от TListView и немного его переделать. Разбирался долго, но врубился, что куда и откуда. MSDN не стоит, поэтому до всего пришлось додумываться методом тыка. Вообщем, если это кому надо, вот код. Может и не лучший, но работающий
ЗЫ: Писал ночью, хотел спать, так что комментарии немного идиотские |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |