Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2012, 18:17   #1
Глеб1991
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 23
По умолчанию Проблема ввода в edit

Форумчани, нужна ваша помощь.

Один из моих идитов предназначен для ввода типа файла т.е. пользователь пишет три анг. символа, как только он написал третий символ программа сама должна поставить точку и пробел. После чего программа разрешит еще поставить три символа, точка, пробел и т.д.

Разумеется сразу нужно сделать удаление записи, удалятся должны три символа, точка и пробел - при этом не должно быть каши, что удаляются любые три символа после фокуса на строке.

К примеру пользователь набрал ТОЛЬКО 9 символов (exerartxt), а программа в эдите ответила (ехе. rar. txt.), а удаление мушкой или клавой поставила фокус на 2-ую r нажали дел или бекспейс и получилось в эдите (exe. txt.)

Как это реализовать не знаю, так как я ассеблерщик. Прошу помощи у ВАС. Вот две мои нарезки 1-ая добавляет символ, вторая удаляет символ
Код:
 procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char);
  const
   mask : set of char =['A'..'Z', 'a'..'z'];
  begin
   if(Key in mask) then begin
                         Edit3.Text:=AnsiLowerCase(Edit3.Text+Key);
                         Edit3.SelStart:=Length(Edit3.Text);
                        end;
                        Key:=#0;
  end;

 procedure TForm2.Edit3KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
  var n : integer;
      s : string;
  begin
   if (Key=8) or (Key=46) then begin
                                S:=Edit3.Text;
                                n:=Edit3.SelStart;
                                Edit3.Text:=copy(S, 1, n-1)+copy(S, n+1, Length(S)-n);
                                Edit3.SetFocus;
                                Edit3.SelStart:=n-1;
                               end;
  end;
Глеб1991 вне форума Ответить с цитированием
Старый 09.05.2012, 18:29   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Ну надо просто смотреть на событие PressKeyDown (или кактам у едита событие на нажатие клавишь). Проверять вводимые символы на принадлежность к A..Z,

При потери фокуса парсишь текст раставляя точки и пробелы. Илиже делать подсчёт вводимых символов и отслеживать 3 символа.

Опятьже PressKeyDown, если нажали бекспейс, то удаляем расширение из этой строки тупо дойдя до точки и удалив 4 символа.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 09.05.2012, 18:35   #3
Глеб1991
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 23
По умолчанию

На теории все просто, но я плохо знаю язык дельфи если ты сам представляешь в голове, как это делается на практике то лучше код напиши.
Глеб1991 вне форума Ответить с цитированием
Старый 09.05.2012, 19:02   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Если с теорией все хорошо, то читай книжки и смотри синтаксис Delphi по ним.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет ввода в Edit Matrix6993 Мультимедиа в Delphi 17 12.10.2013 12:04
Ограничение ввода в edit 8Observer8 Win Api 11 07.05.2012 19:35
Фильтрация ввода с Edit Lyubimov C++ Builder 1 20.04.2011 18:38
Ограничение ввода в Edit xxxsas Общие вопросы C/C++ 4 22.01.2009 12:36