Есть ли лучший способ добавить несколько символов в TMemo?
Я использую TMemo для хранения полученных символов от последовательного порта для просмотра. Когда они прибывают, я делаю:
Memo1.Text := Memo1.Text + sReceivedChars;
Это прекрасно работает, но я полагаю, что это довольно неэффективно, нужно получить существующий текст, прежде чем объединить мои несколько символов, а затем записать его обратно. Мне бы очень хотелось, чтобы функция SendChars() или что-то подобное. Есть ли лучший способ просто добавить несколько символов в конце существующего текста?
2 ответа
Я не знаю, считаете ли вы, что это стоит того, но вы можете сделать что-то вроде этого:
procedure TForm1.Button1Click(Sender: TObject);
var
index: Integer;
NewText: string;
begin
NewText := 'Append This';
index := GetWindowTextLength (Memo1.Handle);
SendMessage(Memo1.Handle, EM_SETSEL, index, index);
SendMessage (Memo1.Handle, EM_REPLACESEL, 0, Integer(@NewText[1]));
end;
Если ваш текст состоит из более чем одной строки (строки TStrings
Коллекция, которая является фактическим типом Lines
свойство TMemo), то вы можете сделать это:
Memo1.Lines[Memo1.Lines.Count - 1] := Memo1.Lines[Memo1.Lines.Count - 1] + sReceivedChars;
Таким образом, вы добавляете несколько символов в последнюю строку (последнюю строку в коллекции строк) заметки, не переводя весь текст в одну строку.