Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

Поиск фрагмента текста в Memo и выделение его.   Найти похожие ветки 

 
Wood   (2004-11-29 11:34) [0]

Простите за ламерский вопрос, но просто еще не приходилось сталкиваться с такой проблемой. Подскажите, какими функциями пользоваться или ссылочку, плиз. Спасибо!


 
MBo ©   (2004-11-29 11:44) [1]

Memo.Lines.Text
Pos SelStart SelLength


 
kaktus   (2004-11-29 11:50) [2]

Если стоит вопрос о поиске фрагмента текста, то ты здесь работай с символами по обработке события Memo KeyPress или KeyDown. В этих обработчиках есть параметр Key - это символ нажатой клавиши. Далее для выделения текста в Memo используют следующее:
selStart и selLength
вот типа пример выделения и замены текста определенной длины на забитые значения (автозамена):

for i := 0 to keys.Count-1 do
    begin
      if (keys.Strings[i] = Str) then
      begin
        Memo1.SelStart := prProbel;
//первый пробел
        Memo1.SelLength := curProbel - prProbel;
//текущий пробел - предедущий
        Memo1.SetSelTextBuf(PChar(zam.strings[i]));
        Break;
      end;
   end;


 
Wood   (2004-11-29 11:57) [3]

MBo ©[1]
selStart и selLength я понимаю, POS - посмотрю F1, только откуда я узнаю с какого момента selStart и selLength, пока еще надо найти кусок текста...Спасибо.
kaktus >> вот типа пример выделения и замены текста определенной длины на забитые значения (автозамена) [2]
Спасибо, с key более-менее понятно, но ПОИСК в готовом тексте!?


 
Wood   (2004-11-29 12:07) [4]

Кажется, с POS я начал разбираться, как установить курсор на найденом участке, т.е. какое значение будет после функции Pos() для selStart и selLength.


 
MBo ©   (2004-11-29 12:18) [5]

http://delphibase.endimus.com/?action=viewfunc&topic=strsearch&id=10272
http://delphibase.endimus.com/?action=viewfunc&topic=strsearch&id=10271


 
kaktus   (2004-11-29 12:33) [6]

Вот в примере Memo1.SelStart := prProbel - это установка указателя (виртуально) на начальную позицию выделяемого текста. Для поиска фрагмента текста предлагаю такой себе алгоритм:

1.Определить длину искомого фрагмента(k := Length(str))!
2.В секторе объявлений переменных (глобально) - создай переменную  допустим обзовем ее count;
3.Далее в обработчике события Memo OnKeyPress ты прописываеш        Inc(count).
4.Потом после этого условие

if count = Length(str) then begin
 memo1.selStart  := prPos;
 memo1.selLength := Length(Memo1.Text);
end else begin
 prPos := Length(Memo1.Text);
 count := 0;
end;

Пробуй может будут ошибки - писал здесь!


 
Wood   (2004-11-29 12:56) [7]

>>MBo ©,kaktus
спасибо, буду разбираться



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.044 c
3-1100604655
Stass
2004-11-16 14:30
2004.12.12
Композитный отчет (QR)


1-1101677694
Bobby Digital
2004-11-29 00:34
2004.12.12
Переслать переменную


1-1101715306
Molchanov
2004-11-29 11:01
2004.12.12
Удаление строк из TRichEdit


1-1101850668
mr. Bill
2004-12-01 00:37
2004.12.12
Помогите с установкой!


1-1101898348
Mishenka
2004-12-01 13:52
2004.12.12
Как в RichEdit сохранить текст в файл вместе со всеми цветами?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский