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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
2-1237444768
IIIakal
2009-03-19 09:39
2009.05.03
Как правильно создать оператор проверки?


15-1235468752
axis_of_evil
2009-02-24 12:45
2009.05.03
об интегрированных видеокартах


15-1235856601
Юрий
2009-03-01 00:30
2009.05.03
С днем рождения ! 1 марта 2009 воскресенье


2-1237739173
dron9999
2009-03-22 19:26
2009.05.03
Как в мемо удалять текст по 1-й букве с концa


15-1235882735
KilkennyCat
2009-03-01 07:45
2009.05.03
Чтой-то было тут, пока я спал ? О_0