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

Вниз

запретить два пробела подряд   Найти похожие ветки 

 
chubb   (2009-03-17 17:06) [0]

Приветствую!

Как при вводе в Edit запретить вводить два пробела подряд?


 
Ega23 ©   (2009-03-17 17:10) [1]

TEdit.OnChange

З.Ы. Строку могут и из буфера вставить, не забывай.


 
chubb   (2009-03-17 17:14) [2]


> Ega23 ©   (17.03.09 17:10) [1]
>
> TEdit.OnChange


и далее trim? и результат присвоить edit.text?
но тогда каретка переместится в начало...


 
немо2   (2009-03-17 17:28) [3]

запрететь реакцию OnChange
replacнуть 2 пробела на 1
отпрететь реакцию OnChange


 
Ega23 ©   (2009-03-17 17:42) [4]


> и далее trim? и результат присвоить edit.text?
> но тогда каретка переместится в начало...


procedure OnChange()
var
 ev : TNotifyEvent
begin
 ev := Edit1.OnChange;
 Edit1.OnChange := nil;
 try
   Проверяем, что там в Edit1.Text, если надо - меняем.
 finally
   Edit1.OnChange := ev;
 end;
end;


 
Медвежонок Пятачок ©   (2009-03-17 18:00) [5]

какая разница сколько пробелов подряд ввели в какой-то там едит.
кого это может по настоящему напрячь?
никого.


 
chubb   (2009-03-17 18:03) [6]

все равно каретка в начало перемещается при присвоении измененной строки..


 
Медвежонок Пятачок ©   (2009-03-17 18:04) [7]

а ты как программист волен управлять ее положением


 
chubb   (2009-03-17 18:06) [8]

подскажи как  :), и спасибо заранее!


 
Медвежонок Пятачок ©   (2009-03-17 18:07) [9]

через свойства и методы.


 
Jeer ©   (2009-03-17 18:18) [10]

Ничего не "запрещать" в TEdit
Пробелы заменять на один по факту использования введенного.
P.S.
Еще бы озвучить, как используется введенное.


 
немо2   (2009-03-17 18:34) [11]

TCustomEdit(edit1).SelStart:=length(edit1.Text);


 
chubb   (2009-03-17 19:02) [12]


> через свойства и методы.


> TCustomEdit(edit1).SelStart:=length(edit1.Text);


спасибо, уже разобрался.


> Еще бы озвучить, как используется введенное.


лишний пробел - это (в моей задаче) символ, иногда не сразу заметный, дающий фразе дополнительную (иногда невидимую) уникальность..

можно, конечно, обрабатывать и после, но хочется сделать кое-какую наглядность, более того крайние (если такие будут) будут таки удаляться после...

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


 
chubb   (2009-03-17 19:05) [13]

грубо говоря - это легкая защита от невнимательности, забывчивости...


 
Anatoly Podgoretsky ©   (2009-03-17 19:16) [14]

> chubb  (17.03.2009 19:02:12)  [12]

Ну так и удаляй при сохранение.


 
Amoeba ©   (2009-03-18 00:21) [15]


> можно, конечно, обрабатывать и после

Не только можно, но и нужно.
Готовые ф-ии есть в RxLib и QStrings.


 
MsGuns ©   (2009-03-18 09:26) [16]

>Amoeba ©   (18.03.09 00:21) [15]
>Готовые ф-ии есть в RxLib и QStrings.

А еще в Тегусегальпе можно отведать русских пельменей


 
Cobalt ©   (2009-03-19 11:10) [17]

По моему, проще на этапе нажатия кнопок сделать

Use the OnKeyPress event handler to make something happen as a result of a single character key press.  

The Key parameter in the OnKeyPress event handler is of type Char; therefore, the OnKeyPress event registers the ASCII character of the key pressed. Keys that don"t correspond to an ASCII Char value (Shift or F1, for example) don"t generate an OnKeyPress event. Key combinations (such as Shift+A), generate only one OnKeyPress event (for this example, Shift+A results in a Key value of "A" if Caps Lock is off). To respond to non-ASCII keys or key combinations, use the OnKeyDown or OnKeyUp event handlers.

An application gets Windows WM_KEYDOWN messages for all keys when the user presses a key. These messages indirectly fire the OnKeyDown event. If you set the Key to 0 there you prevent only any further processing of this message. But for keys that generate characters Windows also produces WM_CHAR. At the time your OnKeyDown event fires, the WM_CHAR message for the key will already be in the message queue. Setting Key to 0 does not stop it from being delivered, so it fires the OnKeyPress event. You must set the Key to #0 to prevent the control from intercepting the WM_CHAR message.  

This method of organizing key processing has advantages. Code that only deals with characters, including control characters like #13 for carriage return, #3 for Ctrl-C and so on, should go into the OnKeyPress event. Code that deals with keys that do not generate characters should be put into the OnKeyDown event.

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if Key = " " then
   Key := #0
end;


 
Медвежонок Пятачок ©   (2009-03-19 11:12) [18]

И ни одного пробела? Конечно проще.



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

Форум: "Начинающим";
Текущий архив: 2009.05.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
2-1237466390
Matveih1
2009-03-19 15:39
2009.05.03
Отправка писем


15-1234362401
Vemer
2009-02-11 17:26
2009.05.03
Кто знает хороший логгер Интернета?


15-1235971946
TELOvek
2009-03-02 08:32
2009.05.03
Получить картинку из Word


3-1220351355
Konrads
2008-09-02 14:29
2009.05.03
Самый быстрый запрос


2-1237890783
alexander-rsh
2009-03-24 13:33
2009.05.03
Системное время





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский