Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];




Вниз

Вставка/замена в TEdit 


ZEE   (2001-09-16 03:33) [0]

Возможно ли осуществлять смену режимов вставки и замены в компонентах TEdit, если да - то как?



Никто   (2001-09-16 03:51) [1]

Клавиша "Insert". Один раз нажмешь - вставка, другой раз - замена.
Шутка.



Юрий Зотов   (2001-09-16 08:23) [2]

За абсолютную правильность не ручаюсь (писал "с ходу"), но должно работать.

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 09:09) [3]

Сразу не сообразил. Есть более простой вариант. Он лучше еще и тем, что здесь не возникает неувязка с 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;

Остальное то же самое.



Olgerd   (2001-09-17 01:50) [4]

Вопрос может быть немного не по теме, но как в TRichEdit программно нажать Insert, что переключать режим вставки/замены?



Лариса   (2001-11-19 18:18) [5]

Используйте библиотеку dx.
TdxEdit без проблем поддерживает смену режимов.



LLL   (2001-11-23 20:01) [6]

А, что это за библиотека dx?
И где её можна глянуть?




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.019 c
4-75716           pank                  2001-11-25 01:03  2002.01.24  
Как сделать программно ярлык (*.lnk)


14-75660          VID                   2001-11-25 19:32  2002.01.24  
И мне денег содрать нужно :)


7-75698           VS                    2001-10-08 13:23  2002.01.24  
Конвентирование String в PChar


14-75682          J_S                   2001-11-23 22:36  2002.01.24  
MОДЕРАТОРУ и ВСЕМ ОСТАЛЬНЫМ


4-75712           maxi                  2001-11-24 12:04  2002.01.24  
как узнать список дочерних окон процесса ?