Попробуйте так: "Подключите" следующую процедуру к событию OnFind для
FindDialog. Единственная проблема заключается в том, что в DBMemo я не могу
получить выделенный текст, тем не менее в стандартном Memo такой проблемы
нет.
procedure TMainForm.FindDialog1Find(Sender: TObject);
var
Buff, P, FT: PChar;
BuffLen: Word;
beginwith Sender as TFindDialog dobegin
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 = nilthen
MessageBeep(0)
elsebegin
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;
Если Вас заинтересовала или понравилась информация по разработке на Delph - "Поиск текста в DBMemo", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу: Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!