![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Артемий |
![]() ![]()
Сообщение
#1
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Короче пишу я текст. редактор, используя 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;
Вообщем голову поломал долго! -------------------- Dum spiro spero!
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Editor.FindText(FindDialog1.FindText, FindDialog1.Position.X, Int, [stWholeWord]);
Можешь установить другие сочетания для Options: [stWholeWord, stMatchCase]
или []
(значит, ни одной опции не передаешь) |
Артемий |
![]()
Сообщение
#3
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Спасибо!
-------------------- Dum spiro spero!
|
Артемий |
![]()
Сообщение
#4
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Блин, никак не могу понять, как использовать FindDialog! Вот допустим есть форма, на которой лежит РичЭдитор и сам файнд. Как заставить этот файнд искать текст по эдитору. Если можно, дайте готовый проект. Заранее благодарен!
![]() -------------------- Dum spiro spero!
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
А чем, собственно, тебя пример из 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;
? Все вроде работает... |
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 18:28 |