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

Ответ:

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

Пример:
type
	TForm1 = class(TForm)
		Memo1: TMemo;
		procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
		procedure Memo1KeyPress(Sender: TObject; var Key: Char);
private
	{Private declarations}
		InsertOn : bool;
public
	{Public declarations}
end;

var
	Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
	if (Key = VK_INSERT) and (Shift = []) then
		InsertOn := not InsertOn;
end;

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
	if ((Memo1.SelLength = 0) and (not InsertOn)) then
		Memo1.SelLength := 1;
end;

Комментариев Нет.

Написать Ответ

Вы должны войти чтобы оставить комментарий.