Мой DELPHI – Программирование

Всё для программера

Как ограничить длинну текста, вводимого в TEdit

Вопрос:
Как ограничить длинну текста, вводимого в TEdit, так чтобы ширина текста не превышала
ширину TEdit'а?

Ответ:

В примере приведено два
способа ограничить длинну текста в TEdit так чтобы она не превышала ширину клиентской
области окна TEdit’а и не появлялась прокрутка текста. Первый способ устанавливает
свойство TEdit’а MaxLength равным числу букв “W”, которые поместятся в TEdit.
“W” выбрана потому, что является, наверное, самой широкой буквой в любом шрифте.
Этот метод сносно работает для шрифтов с фиксированной шириной букв, но для
шрифтов с переменной шириной букв вряд ли сгодится. Второй способ перхватывает
событие KeyPress TEdit’а и измеряет ширину уже введенного текста и ширину нового
символа. Если ширина больше чем клиентская область TEdit’а новый символ отбрасывается
и вызывается MessageBeep. Прочитать остальную часть записи »

Вопрос:
Как добится того чтобы TMemo и TEdit имели работали не только в режиме вставки символов,
но и в режиме замены?

Ответ:

Элементы управления Windows
TEdit и TMemo не имеют режима замены. Однако этот режим можно эмулировать установив
свойство SelLength edit’а или memo в 1 при обработке события KeyPress. Это заставит
его перезаписывать символ в текущей позиции курсора. В примере этот способ используется
для TMemo. Режим вставка/замена переключается клавишей “Insert”. Прочитать остальную часть записи »

Как заставить TEdit не ‘пикать’ при нажатии недопустимых клавиш?

Вопрос:
Как заставить TEdit не 'пикать' при нажатии недопустимых клавиш?
Ответ:
Перехватите событие KeyPress и установите key = #0 для недопустимых клавиш.

Пример:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
	if ((UpCase(Key) < 'A') or (UpCase(Key) > 'Z')) then
		Key := #0;
end;

Можно ли изменить вид текстового курсора (каретки) edit’а или другого элемента

Вопрос:

Можно ли изменить вид текстового курсора (каретки) edit'а или другого элемента
управления Windows?

Ответ:

Можно! В примере показано
как создать два цветных “bitmap’а”: “улыбчивый” и “хмурый” и присвоить их курсору
edit’а. Для этого нужно перехватить оконную процедуру edit’а. Чтобы сделать
это заменим адрес оконной процедуры Edit’а нашим собственным, а старую оконную
процедуру будем вызывать по необходимости. Пример показывает “улыбчивый” курсор
при наборе текста и “хмурый” при забое клавишей backspace. Прочитать остальную часть записи »