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

Вниз

Установить курсор перед выделенным текстом   Найти похожие ветки 

 
Анатолий   (2004-10-20 13:45) [0]

Сообщением EM_SETSEL можно выделить регион и установить курсор в конец этого региона.

Из MSDN : "The caret is placed at the end of the selection indicated by the greater of the two values nEnd and nStart".

Как это обойти? Мне нужен курсор в начале выделенного региона, так чтобы стедующий символ, введенный с клавиатуры, автоматически заместил выделенные символы.

Кто-нибудь делал? Спасибо заранее.


 
KSergey ©   (2004-10-20 13:48) [1]

> Мне нужен курсор в начале выделенного региона, так чтобы
> стедующий символ, введенный с клавиатуры, автоматически
> заместил выделенные символы.

Это и так произойдет вне зависимости где стоит курсор


 
KSergey ©   (2004-10-20 13:49) [2]

См. так же http://delphimaster.net/view/4-1096610271/ и смежные к упомянутой в посл. посте ф-ции


 
Анатолий   (2004-10-20 14:07) [3]


> KSergey © (1)


Ну да. Только для пользователя должно выглядеть так: он набирает, скажем, имя, а ему автоматически подставляются имена, которые начинаются на символы, которые пользователь уже набрал, но та часть имени, которую подставила программа, должна быть выделена, и соотв. при наборе следующего символа исчезнет. Поэтому курсор не может прыгать в конец строки после каждой буквы.


> KSergey © (2)


Спасибо. Пробую заюзать SetCaretPos (Пока не выходит :) )


 
Анатолий   (2004-10-20 14:15) [4]


> KSergey ©


Итак, GetCaretPos, SetCaretPos идеально все решило. Спасибо за быстрый ответ.


 
KSergey ©   (2004-10-20 14:50) [5]

> [3] Анатолий   (20.10.04 14:07)
> Поэтому курсор не может прыгать в конец строки
> после каждой буквы.

Почему? По-моему, вполне нормальное поведение, меня оно как-то не задевало, хотя... ;)

Есил интересно - есть готовый ComboBox с "дописыванием". Есть так же в библиотеке InfoPower, DB-ориентированный


 
Анатолий   (2004-10-20 15:16) [6]


> KSergey ©



> Почему? По-моему, вполне нормальное поведение, меня оно как-то не задевало, хотя... ;)


Да меня тоже.. Но рук-ство где-то увидело, сказало сделать. Кстати, попробую переубедить.


> Есил интересно - есть готовый ComboBox с "дописыванием".
> Есть так же в библиотеке InfoPower, DB-ориентированный


Все это должно быть сделано на основе Edit"а. В проекте не поменяешь. Там разработаны свои DB-компоненты на его основе. Могу только дописать функциональность :).

Спасибо.


 
KSergey ©   (2004-10-20 15:42) [7]

> [6] Анатолий   (20.10.04 15:16)
> > Есил интересно - есть готовый ComboBox с "дописыванием".
> Все это должно быть сделано на основе Edit"а.

Да в принципе - один фиг. Там отличия только будут откуда варианты брать.
Если будет не жаль - было бы интересно глянуть на реализацию, напишите на мыло в анкете. Могу (если интересно) поделиться своей.

> Да меня тоже.. Но рук-ство где-то увидело, сказало сделать.
> Кстати, попробую переубедить.

Вообще во всех этих "фишках" для меня авторитеты - MS Word и MS Access (в последнем дописывание есть штатно). Хотя куда курсор встает там - не помню... По-моему - как раз в начало выделенного фрагмена, помнится у себя я это пока оставил, на доделки ;)


 
Анатолий   (2004-10-20 15:59) [8]


> [7] KSergey ©
> Если будет не жаль - было бы интересно глянуть на реализацию,
> напишите на мыло в анкете. Могу (если интересно) поделиться
> своей.


О чем речь, скину. Когда все сделаю. Основная трудность то не в выделении текста :). Надо сделать быстрый поиск вариантов в базе в трехзвенной системе.. Попробую выбрать самое существенное.


 
KSergey ©   (2004-10-20 16:13) [9]

Основной трудностью для меня было не дать вставить из клипборда то, чего нет в списке ;) Подсмотрел частично реализацию в EhLib (DBGridEh). Оказывается, уложилось в несколько строк.


 
Анатолий   (2004-10-20 17:08) [10]


> KSergey ©
> Основной трудностью для меня было не дать вставить из клипборда то, чего нет в списке

Мдя.. Только-что закончили гарячую дискуссию по поводу ввода несуществующего в споске значения. Решили позволить вводить что угодно, даже из клипборда. Но при потере едитом фокуса предупреждать и предлагать: отменить ввод, добавить новое значение в базу, открыть список существующих значений. Т.е. проблема с клипбордом отменяется :).


 
KSergey ©   (2004-10-20 17:17) [11]

Не всегда этот фокус теряется, зараза... Типа Enter при имеющейся дефолтной кнопке - и привет.. И нету потери фокуса....

По-моему, лучше уж и вовсе не дать вставить ерунду, если уж по задаче это недопустимо....


 
KSergey ©   (2004-10-20 17:18) [12]

Можно конечно и на закрытие формы тот же код прикрутить - но хорошо ли это? Особенно, есил в виде компонента решаем задачу?


 
Анатолий   (2004-10-20 17:45) [13]

Не, компонент так компонент, с формой нельзя.

А если запретить ввод несуществующих - представь себе ситуацию: телефонистка быстренько набивает заказы, вводит фамилию, встретилась новая фамилия - она ее не сможет набрать. А так она получит запрос: очистить поле, или добавить в справочник физ.лиц, к примеру.

А насчет потери фокуса ты прав.. Надо помозговать. Неужто не найдется какое-нибудь подходящее сообщение? Я ушел в исходники..:)


 
KSergey ©   (2004-10-20 22:47) [14]

> Анатолий   (20.10.04 17:45) [13]
> А так она получит запрос: очистить поле, или добавить в справочник
> физ.лиц, к примеру.

Я же везде добавлял "если уж по задаче это недопустимо...." ;)

> Я ушел в исходники..:)

Если что подвернется - буду признателен за сообщение.



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
14-1098275104
Gorlum
2004-10-20 16:25
2004.11.07
Просмотреть dll и drv


11-1082491608
Gunter
2004-04-21 00:06
2004.11.07
Сортировка в TKOLListView


3-1096953251
Павел
2004-10-05 09:14
2004.11.07
Запрос MSSQL про наработанное время в поле DATETIME


3-1097172933
beer_lvr
2004-10-07 22:15
2004.11.07
организация галереи из BLOB-поля


1-1098696258
Arkady
2004-10-25 13:24
2004.11.07
Каталог запуска программы