Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.046 c
1-1182075426
igramnet
2007-06-17 14:17
2007.08.26
Как удалить заданную строк или стобец в StringGrid


15-1185830927
uses1
2007-07-31 01:28
2007.08.26
Как упаковать массив чисел не кратных двойке?


2-1185867898
Elen
2007-07-31 11:44
2007.08.26
вопрос по EnumThreadWindows


2-1185989348
rlzzz
2007-08-01 21:29
2007.08.26
Люди Как массив заполнить?


15-1185897195
Kostafey
2007-07-31 19:53
2007.08.26
Тест





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский