![]() |
![]() ![]() ![]() ![]() |
|
Поиск в TMemo с использованием TFindDialogDelphi , Программа и Интерфейс , Диалоги и ФреймыПоиск в TMemo с использованием TFindDialog
Оформил: DeeCo
private
{ Private declarations }
FSelPos: integer;
public
{ Public declarations }
end;
var
Form1 : TForm1;
implementation
{$R *.dfm}
procedure TForm1.FindDialog1Find(Sender : TObject);
var
S : string;
startpos : integer;
begin
with TFindDialog(Sender) do
begin
{If the stored position is 0 this cannot be a find next. }
if FSelPos = 0 then
Options := Options - [frFindNext];
{ Figure out where to start the search and get the corresponding
text from the memo. }
if frfindNext in Options then
begin
{ This is a find next, start after the end of the last found word. }
StartPos := FSelPos + Length(Findtext);
S := Copy(Memo1.Lines.Text, StartPos, MaxInt);
end
else
begin
{ This is a find first, start at the, well, start. }
S := Memo1.Lines.Text;
StartPos := 1;
end;
{ Perform a global case-sensitive search for FindText in S }
FSelPos := Pos(FindText, S);
if FSelPos > 0 then
begin
{ Found something, correct position for the location of the start
of search. }
FSelPos := FSelPos + StartPos - 1;
Memo1.SelStart := FSelPos - 1;
Memo1.SelLength := Length(FindText);
Memo1.SetFocus;
end
else
begin
{ No joy, show a message. }
if frfindNext in Options then
S := Concat('There are no further occurences of "', FindText,
'" in Memo1.')
else
S := Concat('Could not find "', FindText, '" in Memo1.');
MessageDlg(S, mtError, [mbOK], 0);
end;
end;
end;
// Show the FindDialog
// Den FindDialog anzeigen
procedure TForm1.Button1Click(Sender : TObject);
begin
FSelPos := 0;
FindDialog1.Execute;
end;
Программное приложение на Delphi использует компонент TFindDialog для поиска указанного текста в контроле TMemo. Функциональность поиска реализована в процедуре TForm1.FindDialog1Find. Вот шаг за шагом, что код делает:
Вот несколько предложений для улучшения кода:
Альтернативный способ решения - использовать метод TMemo.FindText вместо реализации собственной функциональности поиска. Метод FindText возвращает позицию первого вхождения указанного текста в тексте контрола TMemo. Вы можете использовать эту позицию для выбора соответствующего диапазона в контроле TMemo. Вот пример: Поиск в TMemo с использованием TFindDialog - статья, которая описывает создание поиска в компоненте TMemo с помощью компонента TFindDialog и обеспечивает работу с результатами поиска. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: Диалоги и Фреймы ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||