Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
Анатолий   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.034 c
4-1096476106
xman
2004-09-29 20:41
2004.11.07
Какой процесс запущен?


6-1093870110
DsA
2004-08-30 16:48
2004.11.07
Как в Delphi узнать скорость соединения (Dial-Up, LAN)?


14-1097956533
GuAV
2004-10-16 23:55
2004.11.07
винт FUJITSU MPG3204AT E и DMA


8-1091816507
parovoZZ
2004-08-06 22:21
2004.11.07
DirectInput and DirectX9


3-1097164914
GanibalLector
2004-10-07 20:01
2004.11.07
BLOB в UDF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский