Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Поиск текста в 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;

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay