![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вставка/замена в TEdit
ZEE © (2001-09-16 03:33:00)Возможно ли осуществлять смену режимов вставки и замены в компонентах TEdit, если да - то как?
LLL (2001-11-23 20:01:00) [1]А, что это за библиотека dx?
И где её можна глянуть?
Лариса (2001-11-19 18:18:00) [2]Используйте библиотеку dx.
TdxEdit без проблем поддерживает смену режимов.
Olgerd (2001-09-17 01:50:00) [3]Вопрос может быть немного не по теме, но как в TRichEdit программно нажать Insert, что переключать режим вставки/замены?
Юрий Зотов (2001-09-16 09:09:00) [4]Сразу не сообразил. Есть более простой вариант. Он лучше еще и тем, что здесь не возникает неувязка с OnChange, которая есть в предыдущем варианте (там при OnChange нарушено SelStart, что неправильно).
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
with Edit1 do
if FOwerwrite and (Ord(Key) > 31) and (SelStart < Length(Text)) and (SelLength = 0) then SelLength := 1
end;
Остальное то же самое.
Юрий Зотов (2001-09-16 08:23:00) [5]За абсолютную правильность не ручаюсь (писал "с ходу"), но должно работать.
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
FOwerwrite: boolean;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Shift = []) and (Key = VK_INSERT) then FOwerwrite := not FOwerwrite
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
S: string;
OldPos: integer;
begin
with Edit1 do
if FOwerwrite and (Ord(Key) > 31) and (SelStart < Length(Text)) and (SelLength = 0) then
begin
S := Text;
OldPos := SelStart;
S[SelStart + 1] := Key;
Key := #0;
Text := S;
SelStart := OldPos + 1
end
end;
Никто (2001-09-16 03:51:00) [6]Клавиша "Insert". Один раз нажмешь - вставка, другой раз - замена.
Шутка.