Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Tmemo описание


Автор: User2103 22.6.2007, 23:26
Как обрабатывать строки в мемо подскажите. Мне надо запустить,написать текст и при этом в оnchаnge  проверять наличие подстроки,потом эту подстроку выделить.Как можно это реализовать?Знаю что вопрос тупой,но все равно.Киньте фрагмент кода

Автор: SPrograMMer 23.6.2007, 06:39
Цитата(User2103 @  22.6.2007,  23:26 Найти цитируемый пост)
Как обрабатывать строки в мемо подскажите

Memo1.Lines[I] - I`ая строка в мемо

Цитата(User2103 @  22.6.2007,  23:26 Найти цитируемый пост)
проверять наличие подстроки

Код

If Pos(SubStr,Memo1.Lines[Num])>0 Then
 // Под строка есть
Else
 //Подстроки нет.


Цитата(User2103 @  22.6.2007,  23:26 Найти цитируемый пост)
подстроку выделить

C выделениями работают свойства SelLength, SelStart....

Автор: User2103 23.6.2007, 08:54
Я бы проверял линии мемо(как массив строк),но как тогда определить количество линии для обработки ?Как определить конец всего текста в мемо ?На си конец строки $.А тут как?

Автор: Poseidon 23.6.2007, 11:51
Цитата(User2103 @  23.6.2007,  08:54 Найти цитируемый пост)
но как тогда определить количество линии для обработки ?

Memo1.Lines.Count

Цитата(User2103 @  23.6.2007,  08:54 Найти цитируемый пост)
Как определить конец всего текста в мемо ?
Можно определить количество символов. Последний будет концом мемо smile

Length(Memo1.Text)

Автор: User2103 23.6.2007, 19:12
А можно сделать текст жирным(определенное слово в тексте) при обработке onchange. То есть сомтрите, я как бы пишу в мемо текст, затем в ОнЧэнже проверяю строку на наличие подстроки (которые будут например , как массив строк) и затем если оно есть , тоя его сделаю жирным. Например есть зарезервированные слова Tasm, basm, wasm ,masm(массив строк)  и в мемо я пишу : Tasm have two режима , а masm один. Слова :Tasm и masm должны стать жирного шрифта. как лучше сделать: перепечатывать слово(меняя в свойствах font(жирным) , а потом ставить обратно(тонкий)) или есть спец команды?просто не хочу конструировать велосипед ,если он уже готов)))  

Автор: Alexeis 23.6.2007, 20:04
  Это уже не мемо а RichEdit

Автор: lukas 23.6.2007, 21:27
User2103, 

хочешь сделать подсветку? Думаю с помощью стандартных компонентов это не получится так красиво и удобно. Через RichEditor - не очень то красиво все получается.

Автор: Alexeis 23.6.2007, 21:30
lukas, и что например некрасиво?

Автор: User2103 24.6.2007, 13:03
С помощью какого компонента можно это сделать? И как более эффективно реализовать?(можно код не писать , просто алгоритм какой выбрать действий)

Автор: User2103 24.6.2007, 13:21
А вот.... ещё такой вопрос, как определить номер линии в мемо, там где находится курсор? я хочу попробывать в мемо сделать подсветку))) 

Автор: User2103 24.6.2007, 14:16
значит вот
Код

procedure TForm1.Memo1Change(Sender: TObject);
var
   LineNumber : integer;
   i:integer;
begin
   LineNumber := SendMessage(Memo1.Handle, EM_LINEFROMCHAR, word(-1), 0);

  for i:=1 to LineNumber-1 do
  If Pos('tasm',Memo1.Lines[i])>0 Then
      memo1.Font.Style:=[fsbold];
end;

жирным становится весь текст, а надо чт бы тока тасм , те как я понимаю наподобии SelLength, SelStart что то надо придумать.

Автор: Alexeis 24.6.2007, 15:03
User2103, говорю же, нужно использовать TRichEdit, текст в мемо может менять стиль только весь целиком.

Автор: User2103 24.6.2007, 15:19
Вообщем , да... понял теперь... буду экспериментировать)) спсиб за помощь, хороший форум

Автор: 0LineGate 24.6.2007, 17:42
это оченб плхое на подсветку синтаксиса... попробуй SynEdit... мемо в данном случае использовать как минимум глупо  smile 

Автор: lukas 24.6.2007, 20:45
Alexeis

ну например заметно как каретка убегает и возвращается, и постоянные моргания, все таки нужно хотябы сравнить Editor в Любой среде программирования и TRichEditor, как бы сказать, технология редактирования текста немного другая, более удобная для программирования. SysEdit хорошая замена....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)