Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
ВнизВыделить текст до конца строки в memo Найти похожие ветки
← →
Johnnnn (2007-08-02 02:19) [0]Memo1.SetFocus;
Memo1.SelStart:=pos("IP:", memo1.Text)+3;
вот ставлю каретку после найденого слова как выделить текст до конца строки и скопировать его в буфер?
спасибо!
← →
Джо © (2007-08-02 04:39) [1]> как выделить текст до конца строки
Очевидно, нужно найти следующие символы CR (#13) и LF (#10), начиная с текущей позиции (SelStart) и, узнав таким убразом длину требуемого выделения, присвоить его свойству SelLength.
Функция может выглядеть таким образом:
function FindNextCrLf (const S: string; CurrentPos: Integer): Integer;
const
Cr = #13;
Lf = #10;
var
I: Integer;
CrFound: Boolean;
begin
Result := Length (S);
CrFound := False;
for I := CurrentPos to Result do
begin
if S[I] = Cr then
CrFound := True;
if (S[I] = Lf) and CrFound then
begin
Result := I-2;
Break
end;
end;
end;
> и скопировать его в буфер?
Использовать метод CopyToClipboard.
Т.е., пример использования может выглядеть так (выделение начиная с текущего положения каретки до конца строки с последующим копированием):procedure TForm1.Button1Click(Sender: TObject);
var
P1,
P2: Integer;
begin
P1 := Memo1.SelStart;
P2 := FindNextCrLf(Memo1.Lines.Text,P1);
if P2 <> P1 then
begin
Memo1.SelLength := P2-P1;
Memo1.CopyToClipboard;
end
end;
← →
Джо © (2007-08-02 04:43) [2]Спать пора. Функция FindNextCrLf в общем некорректна, ну да исправить, думаю, будет не тяжело. Сорри.
← →
begin...end © (2007-08-02 12:21) [3]with Memo do
begin
SelLength := Perform(EM_LINEINDEX, -1, 0) + Perform(EM_LINELENGTH, SelStart, 0) - SelStart;
CopyToClipboard
end
← →
Johnnnn (2007-08-02 17:11) [4]Thanks vsem kto otkliknylsya!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.056 c