Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Задействование клавиши бэкспэйс в данном случае [D7, XP]


Magos ©   (2008-05-20 21:44:00) 

Проблема в следующем, нужно, чтобы в поле Edit3 возможно было вносить только символы содержащиеся в поле Edit1.
Реализовал так:

procedure TIndex.Edit3KeyPress(Sender: TObject; var Key: Char);
var
i,j:integer;
begin

for i:=0 to Index.Edit1.GetTextLen do
  begin
    if Edit1.Text='' then  
       begin
        key :=  Chr(0);
        exit;
       end;

 if Key=Edit1.Text[i]  then   exit;


  end;
 
 if   Key<>Index.Edit1.Text[i] then
       begin
        key :=  Chr(0);
        exit;
       end  ;

end;

Работает, НО теперь не действует клавиша бэкспэйс и возникают сами понимаете какие проблемы....
Как можно её задействовать в данном случае?
Спасибо!


Сергей М.   (2008-05-21 19:34:00) [1]


> не объясните, почему?
>


Потому что эти переменные созданы Борландом для формошлепов


Reindeer Moss Eater   (2008-05-21 18:47:00) [2]

Потому что это :
- лишнее как минимум.
- вредное как максимум. (экземпляров класса формы может быть не один, а автоматом сгенерированная переменная может быть проинициализирована не тем чем тебе надо или вообще не проинициализирована)


Palladin   (2008-05-21 18:45:00) [3]

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


Denis__   (2008-05-21 18:37:00) [4]


> Не надо пользовать переменные формы, т.е. Index,
> лучше забыть про них вовсе.

Уже несколько раз про это слышал, не объясните, почему?


MsGuns   (2008-05-21 17:31:00) [5]

>Ega23 ©   (21.05.08 16:14) [4]

В сабже однако ни слова о цифрах - купил новый телепатор ?
;)


Ega23   (2008-05-21 16:14:00) [6]

procedure TIndex.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in ['0'..'9', #8]) then Key:=#0;
end;


Leonid Troyanovsky   (2008-05-21 16:08:00) [7]


> Magos   (20.05.08 21:44)  

> for i:=0 to Index.Edit1.GetTextLen do

Не надо пользовать переменные формы, т.е. Index,
лучше забыть про них вовсе.

Да, и символы строки начинаются с 1, а не 0.

--
Regards, LVT.


Magos   (2008-05-20 21:55:00) [8]

Работает!
Большое спасибо!


Германн   (2008-05-20 21:50:00) [9]

В начале прцедуры:
if Key = #8 then Exit;


Наверх

Титульная страница Поиск, карта сайта Написать письмо