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

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

TEdit [D6, Win95/98]


mba ©   (2002-11-06 06:19:00) 

Родскажите пожалуйста как мне получить управление TEdit-ом (или его потомком - ввести событие?) при попытки изменить его Text до самого изменения, т.е. до onChange.


McSimm   (2002-11-06 10:38:00) [1]

насколько я знаю, нет такого события(сообщения windows) для edit.

можно попробовать такую схему - запоминать текст в глобальной переменной, анализировать OnChange и, при необходимости, возвращать предыдущее состояние.
Этот набросок не позволит пользователю добиться в Edit1 двух знаков равенства подряд:
var
Flag: Boolean;
EditText: String;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
EditText := Edit1.Text;
Flag := False;
end;
...
procedure TForm1.Edit1Change(Sender: TObject);
var
S: String;
begin
if Flag then Exit;
with (Sender as TEdit) do
begin
Flag := True;
S := Text;
if Pos("==", S) > 0 then
Text := EditText
else
EditText := S;
end;
Flag := False
end;

При таком подходе возможна проблема с позицией курсора.


gek   (2002-11-06 09:53:00) [2]

тогда см WM_PASTE


mba   (2002-11-06 09:32:00) [3]

А если Text меняется Insertом?


Обсолютный ноль   (2002-11-06 06:39:00) [4]

Событие OnKeyPress,OnKeyUp,OnKeyDown, тока не забудь свойство формы KeyPrewiev поставить в True


Наверх

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