Советы по Delphi

         

Вставка текста в TMemo II


Используйте сообщение Windows API EM_REPLACESEL: (из справки по Windows API) EM_REPLACESEL wParam = 0; /* не используется, должен быть ноль */ lParam = (LPARAM) (LPCSTR) lpszReplace; /* адрес новой строки */ Для замены текущего выбранного текста в поле редактирования, приложение должно послать сообщение EM_REPLACESEL, где параметр lpszReplace содержит новый текст. Параметр Описание lpszReplace Значение lParam. Указатель на терминированную нулем строку, содержащую замещающий текст. { Указатель на строку } Возвращаемое значение Данное сообщение значение не возвращает. Комментарии Используйте сообщение EM_REPLACESEL, если вы хотите изменять только часть текста поля редактирования. Если вам нужно заменить весь текст, используйте сообщение WM_SETTEXT. В случае отсутствие выбранного текста, замещающий текст вставляется в текущую позицию курсора. Сделайте список с вашими стандартными фразами, и используйте события "OnClick" или "OnMouseDown" в комбинации с "Alt", "Shift" или "Ctrl". Пример: Когда пользователь нажимает клавишу "Alt" в комбинации с правой кнопкой мыши, выводится список заранее подготовленных фраз и выбранная вставляется в ваш TMemo-компонент.

Для вставки строки в Memo:

    procedure TForm1.Button1Click(Sender: TObject);
begin


with
Memo1 do begin SelStart:=10; SelLength:=0; SelText:='Эта строка включается в Memo, начиная с 10-й позиции '; end; end;

Для вставки строки И замены некоторого существующего текста:

    procedure TForm1.Button1Click(Sender: TObject);
begin
with
Memo1 do begin SelStart:=10; SelLength:=20; SelText:='Эта строка включается в Мемо, начиная с 10-й позиции и замещает собой 20 символов '; end; end;

Поместите текст, который вы хотите вставить, в переменную PChar, затем вставьте текст в Memo, используя команду SetSelTextBuf, где SelStart устанавливается в позицию курсора TMemo. Это классно работает ..

Другая полезность: вы можете обхойти предел TMemo в 32K в случае, если вы загружаете в него текст, пользуясь методом/командой Lines.LoadfromFile. Компонент имеет внутренний предел в 32K. Если вы загружаете нужный файл в указатель, и используете команду/метод SetTexBuf, то в этом случае в TMemo можно загрузить текста вплоть до 64K. [001544]



Содержание раздела