Форум: "Начинающим";
Текущий архив: 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