Поиск по записке в Delphi? - PullRequest
       13

Поиск по записке в Delphi?

6 голосов
/ 20 ноября 2010

Кто-нибудь может дать мне какой-нибудь простой код, который позволил бы мне искать простую строку в заметке и выделить ее в заметке после ее обнаружения?

Ответы [ 2 ]

11 голосов
/ 20 ноября 2010

Этот поиск позволяет выполнять перенос документов, регистрозависимый поиск и поиск с позиции курсора.

type
  TSearchOption = (soIgnoreCase, soFromStart, soWrap);
  TSearchOptions = set of TSearchOption;


function SearchText(
    Control: TCustomEdit; 
    Search: string; 
    SearchOptions: TSearchOptions): Boolean;
var
  Text: string;
  Index: Integer;
begin
  if soIgnoreCase in SearchOptions then
  begin
    Search := UpperCase(Search);
    Text := UpperCase(Control.Text);
  end
  else
    Text := Control.Text;

  Index := 0;
  if not (soFromStart in SearchOptions) then
    Index := PosEx(Search, Text, 
         Control.SelStart + Control.SelLength + 1);

  if (Index = 0) and 
      ((soFromStart in SearchOptions) or 
       (soWrap in SearchOptions)) then
    Index := PosEx(Search, Text, 1);

  Result := Index > 0;
  if Result then
  begin
    Control.SelStart := Index - 1;
    Control.SelLength := Length(Search);
  end;
end;

Вы можете установить HideSelection = False в заметке, чтобы показать выбор, даже если заметка не отображается.t фокусировка.

Используйте как это:

  SearchText(Memo1, Edit1.Text, []);

Позволяет также искать изменения.

3 голосов
/ 20 ноября 2010
  function TForm1.FindText( const aPatternToFind: String):Boolean;
  var
    p: Integer;
  begin
    p := pos(aPatternToFind, Memo1.Text);
    Result :=  (p > 0);
    if Result then
      begin
        Memo1.SelStart := p;
        Memo1.SelLength := Length(aPatternToFind);
        Memo1.SetFocus; // necessary so highlight is visible
      end;
  end;

Это НЕ выполняет поиск по всем строкам, если WordWrap имеет значение true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...