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

Вниз

Удаление из TEdit   Найти похожие ветки 

 
yaric   (2004-09-23 17:46) [0]

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


 
Fay ©   (2004-09-23 17:47) [1]

TMaskEdit ?


 
yaric   (2004-09-23 17:48) [2]

Нет добавлять пользователь может а вот удалять нет


 
Fay ©   (2004-09-23 17:50) [3]

Блин! Даже не могу представить - нафинг это надо? 8)


 
yaric   (2004-09-23 17:52) [4]

Да надо в TEdit.Text прога заносит некоторые символы, а некоторые заносит пользователь так вот нужно чтобы пользователь не стер то чего прога занесла


 
Amoeba ©   (2004-09-23 17:54) [5]

А как собираешься отличать занесенное прогой от занесенного пользователем?


 
Sandman25 ©   (2004-09-23 17:55) [6]

Разбить на label и edit. Возможно на несколько.


 
yaric   (2004-09-23 17:55) [7]

Разные диапазоны кодов символов


 
yaric   (2004-09-23 17:57) [8]

Ну это в смысле как различать буду,
а про label и edit я не понял текст ведь сплошной


 
Amoeba ©   (2004-09-23 17:59) [9]

Невозможно запертить удаление символов только для определенного диапазона. Действует принцип "всё или ничего".


 
yaric   (2004-09-23 18:01) [10]

Может как то событие какое-то виндозное ловить и взависимости от того какой код символа лупить его или нет


 
Amoeba ©   (2004-09-23 18:07) [11]

Запретить/разрешить ввод определенных символов - задача элементарная, причем никаких сообщений ловить не надо (все делается на уровне обработчиков событий компонента). А выборочный запрет удаления - это уже совсем другое.


 
Anatoly Podgoretsky ©   (2004-09-23 18:34) [12]

Бедные, бедные пользователи, как только программисты над ними не издеваются.


 
МЯУ   (2004-09-23 18:34) [13]

а че, onkeydown не пойдёт?
сморим символ перед курсором если backspace и за курсором, если delete. проверяем диапазон, или чё там ещё. если низя - запрещаем. можно - разрешаем.


 
begin...end ©   (2004-09-23 19:07) [14]

Э-э... Я, может, чего-то не понял, к тому же Delphi у меня сейчас под рукой нет, но, ИМХО, вот так можно попробовать:

var
 OldText: String;

procedure TFormName.EditNameChange(Sender: TObject);
var
 Index: Integer;
begin
 with EditName do
 begin
   if Length(Text) = Length(OldText) - 1 then
   // Т.е. если произошло удаление символа
   begin
     Index := 1;
     while (Index <= Length(Text)) and (OldText[Index] = Text[Index]) do
       Inc(Index);
     // Сейчас Index содержит номер удалённого символа
     if OldText[Index] in [множество запрещённых для удаления символов] then
       Text := OldText;
   end
 end
end;


Это, наверное, не будет работать, когда удалены были сразу несколько символов, но, думаю, можно это как-то доработать.


 
Fay ©   (2004-09-23 19:11) [15]

2  [14] begin...end ©   (23.09.04 19:07)
Ага. А теперь выдели одну буковку и нажми какую-нибудь (к примеру, "Ы") кнопочку.


 
yaric   (2004-09-23 19:28) [16]

Вот я на onkeydown попробовал только что зделать чтобы "запретить", если определил что символ удалять нельзя


 
begin...end ©   (2004-09-23 20:22) [17]


> [15] Fay ©   (23.09.04 19:11)


> А теперь выдели одну буковку и нажми какую-нибудь (к примеру, "Ы") кнопочку.

Я ж говорю: Delphi сейчас нету у меня.
А что же будет, если не секрет?


 
Defunct ©   (2004-09-23 20:39) [18]

> А что же будет, если не секрет?

Кол-во символов не изменится, но символ поменяется, в народе это называют ЖУЛЬНИЧЕСТВО!! ;)
Неудивительно, что именно Fay преложил такую проверку, он в этих делах Гуру ;)


 
Fay ©   (2004-09-23 20:44) [19]

2  [18] Defunct ©   (23.09.04 20:39)
Читая в плохом настроении, можно предположить, что Вы обвиняете меня в склонности к жульничеству. А Вы знаете, что бывает за такие слова, к тому же, высказаные публично?!
8)

P.S
Не откажусь от объяснений.


 
begin...end ©   (2004-09-23 20:46) [20]


> [18] Defunct ©   (23.09.04 20:39)

А это уже замена, а не удаление :-)))


 
Fay ©   (2004-09-23 20:46) [21]

Нет. Это "copy-paste" 8)


 
Defunct ©   (2004-09-23 21:02) [22]

Fay ©   (23.09.04 20:44) [19]
О да..

Но, прошу заметить, конечно же слово ЖУЛЬНИЧЕСТВО не имеет никакого отношения к ВАМ, на ваш счет можно отнести лишь только предложенную оригинальную проверку ;)

PS: LOL, писалось в хорошем настроении, так что советую перечитать тот пост тоже с юмором. и совместить с другой веткой там где SHARE_DELETE


 
Fay ©   (2004-09-23 21:08) [23]

Так. Пора домой. Что-то я слишком угрюм - даже смайлики не действуют...
8)


 
KSergey ©   (2004-09-24 07:52) [24]

а) как и говорилось ппробоваьт прикрутить MaskEdit

б) в наследнике TEdit перекрыть обработчик CN_COMMAND. В нем отлавливать Msg.NotifyCode=CBN_EDITUPDATE (текст изменен (не важно как), но еще не отрисован чтобы морганий не было). Соответсвенно всегда сохранять весь старый текст во внутренней переменной (см. замечание [15]) и после изменения (в указанном обработчике) проверять: если изменения допустимы - ничего не делать (текст  измененный сохранить), не допустимы - ту же и восстановить. За одно не плохо бы кнопки забоя/удаления обработать, возможно флажки какие понадобятся.

PS
Сейчас на этом принципе сделал наследника TComboBox с дописыванием текста из имеющихся Items. Дошлифую - и возможно выложу, если кому интересно.


 
yaric   (2004-09-24 13:52) [25]

Что это за событие такое CN_COMMAND что-то я никак инфы по нему
найти не могу в WindowsSDK.


 
[lamer]Barmaglot ©   (2004-09-24 13:57) [26]

Насколько мне склероз не изменяет - это дельфовая оболочка для сообщения WM_Command...



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

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

Наверх




Память: 0.53 MB
Время: 0.04 c
4-1094432292
js
2004-09-06 04:58
2004.10.10
Вызов диалога "Выбор: Пользователь, Группа или Компьютер"


14-1095453117
GanibalLector
2004-09-18 00:31
2004.10.10
Проверка существования почты на HOTMAIL


4-1094036756
sesh
2004-09-01 15:05
2004.10.10
Процессы в системе


4-1094650844
Новишок
2004-09-08 17:40
2004.10.10
Закрыть программку, нажав на кнопу в сыоей проге


11-1081262281
m5
2004-04-06 18:38
2004.10.10
Как сделать в КОЛ всплывающее окошко с подсказками?