На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Компоненты / Поиск текста в DBMemo Сделать домашней страницей Добавить в избранное Написать писмо

Поиск текста в DBMemo


Попробуйте так: "Подключите" следующую процедуру к событию OnFind для FindDialog. Единственная проблема заключается в том, что в DBMemo я не могу получить выделенный текст, тем не менее в стандартном Memo такой проблемы нет.


procedure TMainForm.FindDialog1Find(Sender: TObject);
var
  Buff, P, FT: PChar;
  BuffLen: Word;
begin
  with Sender as TFindDialog do
  begin
    GetMem(FT, Length(FindText) + 1);
    StrPCopy(FT, FindText);
    BuffLen := DBMemo1.GetTextLen + 1;
    GetMem(Buff, BuffLen);
    DBMemo1.GetTextBuf(Buff, BuffLen);
    P := Buff + DBMemo1.SelStart + DBMemo1.SelLength;
    P := StrPos(P, FT);
    if P = nil then
      MessageBeep(0)
    else
    begin
      DBMemo1.SelStart := P - Buff;
      DBMemo1.SelLength := Length(FindText);
    end;
    FreeMem(FT, Length(FindText) + 1);
    FreeMem(Buff, BuffLen);
  end;
end;

Попробуйте так: "Подключите" следующую процедуру к событию OnFind для FindDialog. Единственная проблема заключается в том, что в DBMemo я не могу получить выделенный текст, тем не менее в стандартном Memo такой проблемы нет.


begin
  DBMemo1.SelStart:= P - Buff;
  DBMemo1.SelLength:= Length(FindText);
end;
  FreeMem(FT, Length(FindText) + 1);
  FreeMem(Buff,BuffLen);
  DBMemo1.SetFocus;
end;


Copyright ©   "DELPHI WORLD"   E-mail:   delphiworld@mail.ru  http://www.delphiworld.narod.ru
Источник получения информации: http://www.delphiworld.narod.ru
Hosted by uCoz