TEdit, TSpinEdit
Code: |
procedure TForm1.Edit1Change(Sender: TObject); var OldChange: TNotifyEvent; OldStart: Integer; begin with (Sender as TEdit) do begin OldChange := OnChange; OnChange := nil; OldStart := SelStart; if ((SelStart > 0) and (Text[SelStart - 1] = ' ')) or (SelStart = 1) then begin SelStart := SelStart - 1; SelLength := 1; SelText := AnsiUpperCase(SelText); end;
OnChange := OldChange; SelStart := OldStart; end; end; |
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
To Reproduce the Problem:
1. Drop two TEdits onto a form.
2. In the OnExit Event of Edit1 add the following code:
Code: |
Application.MessageBox( 'Title','...', mb_ok ); |
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Как-то раз встала такая проблема: если пользователь какое-то время ничего не вводит в элемент управления Edit, то предупредить его об этом.
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Предположим, вы регулярно пользуетесь компонентами TEdit (в отличие от компонентов TDBEdit), и если так, то наилучшим местом для осуществления проверки на соответствие является обработчик события OnExit компонента TEdit. Данное событие наступает при каждом покидании фокуса компонента.
Обычно, при вводе неправильного текста в поле редактирования, у вас возникает желание послать предупреждение пользователю и вернуть фокус обратно. Тем не менее, в данном решении трудность подстерегает при попытке установить фокус в обработчике события OnExit. Поскольку Windows остается "посередине" при передаче фокуса от одного элемента управления другому в обработчике события OnExit, вы можете получить состояние нестабильного поведения компонентов, если попытаетесь в это время изменить фокус.
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Страница 3 из 3