![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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