Поиск в SynMemo

Модератор: Модераторы

Ответить
Alex_Gordon1
новенький
Сообщения: 18
Зарегистрирован: 09.02.2011 19:41:12

Поиск в SynMemo

Сообщение Alex_Gordon1 »

Собвственно сабж. Как организовать поиск в syn memo?
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

Поиск по форуму рулит. Буквально недавно рассматривалась возможность поиска и замены строк в компоненте TMemo. Принцип аналогичный
Alex_Gordon1
новенький
Сообщения: 18
Зарегистрирован: 09.02.2011 19:41:12

Сообщение Alex_Gordon1 »

Проблема в том, что там нет SelLength. Проблем бы никаких не было, будь он там.
Maxizar
постоялец
Сообщения: 385
Зарегистрирован: 20.03.2010 18:48:14

Сообщение Maxizar »

Alex_Gordon1 писал(а):Проблема в том, что там нет SelLength. Проблем бы никаких не было, будь он там.

Есть такие св-ва:
SelStart:Integer; - Содержит индекс(номер буквы) начала выделения.
SelEnd:Integer; - -/- конца выделения.
SelText:String - содержит выделенный текст.

=>SelLength=SelEnd-SelStart;
Alex_Gordon1
новенький
Сообщения: 18
Зарегистрирован: 09.02.2011 19:41:12

Сообщение Alex_Gordon1 »

Вот код для поиска:
find:=Edit1.Text;
For i:=0 to Memo1.Lines.Count-1 do
If Pos(FIND, Memo1.Lines.Text)<>0
Then
Begin
Memo1.SetFocus();
Memo1.SelStart:=Pos(FIND,Memo1.Lines.Text)-1;
Memo1.SelLength:=Length(FIND);
End;

Как тут использовать свойства?
Maxizar
постоялец
Сообщения: 385
Зарегистрирован: 20.03.2010 18:48:14

Сообщение Maxizar »

Эх.. нет мммм. ну..... ладно :(
1. Любой код если он больше 2-3 строк, стоит заключать в тэг [cоde]Код [/code]
2. Прочтите книгу по делфи (любую)
3. Я сам ненавижу когда говорят, мол типа погугли, поиск рулит... и т.п. Но вы моглибы хотябы попытатся написать хоть что-то, и уже в этом коде будут непонятки, которые мы бы вам объяснили.
4. учитывая п. 3. Отвечаю (хотя в целях воспитания не должен был)
Ответ:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
var FIndex:Integer;
begin
  FIndex:=Pos(Edit1.Text,SynMemo1.Text);

  if FIndex<>0 then
   begin
    SynMemo1.SelStart:=FIndex;
    SynMemo1.SelEnd:=FIndex+Length(Edit1.Text);
   end;
end; 


Так же прикладываю исходник:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Alex_Gordon1
новенький
Сообщения: 18
Зарегистрирован: 09.02.2011 19:41:12

Сообщение Alex_Gordon1 »

Вообще-то если я обращаюсь на этот форум, я пробовал писать хоть что-то до этого, и ни один способ не помог.
Ваш помог, спасибо.
Ответить