Помощь - Поиск - Пользователи - Календарь
Полная версия: Findtext
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Артемий
Короче пишу я текст. редактор, используя TRichEdit. Кинул на форму Файнд диалог и пытаюсь найти нужное слово вот таким способом:

procedure TForm1.N12Click(Sender: TObject);
begin
FindDialog1.Execute;
end;
////////////////////////////////
procedure TForm1.FindDialog1Find(Sender: TObject);
var
T: TSearchTypes;
Int: Integer;
begin
Int := 1;
Editor.FindText(FindDialog1.FindText, FindDialog1.Position.X, Int, T);
end;


В том дело, что переменной TSearchTypes нужно присвоить определенное значение, НО КАК? Конечно может кто знает, подскажите пожалуйста!
Пробовал запрос в Delphi Help, вот чё пишет:

type
TSearchType = (stWholeWord, stMatchCase);
TSearchTypes = set of TSearchType;
function FindText(const SearchStr: string; StartPos, Length: Integer; Options: TSearchTypes): Integer;

Вообщем голову поломал долго!
volvo
Editor.FindText(FindDialog1.FindText, FindDialog1.Position.X, Int, [stWholeWord]);

Можешь установить другие сочетания для Options:
[stWholeWord, stMatchCase]

или
[]

(значит, ни одной опции не передаешь)
Артемий
Спасибо!
Артемий
Блин, никак не могу понять, как использовать FindDialog! Вот допустим есть форма, на которой лежит РичЭдитор и сам файнд. Как заставить этот файнд искать текст по эдитору. Если можно, дайте готовый проект. Заранее благодарен! wacko.gif
volvo
А чем, собственно, тебя пример из Help-а по FindDialog не устраивает?

procedure TForm1.Button1Click(Sender: TObject);
begin
FindDialog1.Execute; // <--- Запускаешь FindDialog
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var
FoundAt: LongInt;
StartPos, ToEnd: Integer;

begin
with RichEdit1 do begin
if SelLength <> 0 then
StartPos := SelStart + SelLength
else
StartPos := 0;

ToEnd := Length(Text) - StartPos;
FoundAt := FindText(FindDialog1.FindText, StartPos, ToEnd, [stMatchCase]);
if FoundAt <> -1 then begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(FindDialog1.FindText);
Perform(EM_SCROLLCARET, 0, 0); { Это было добавлено, чтобы RichEdit прокручивался }
end;
end;

end;
? Все вроде работает...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.