Форум: "Основная";
Текущий архив: 2004.10.10;
Скачать: [xml.tar.bz2];
ВнизУдаление из 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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.046 c