IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Findtext, Не втыкаю!
Артемий
сообщение 25.10.2006 18:41
Сообщение #1


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


Короче пишу я текст. редактор, используя 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!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
volvo
сообщение 25.10.2006 18:54
Сообщение #2


Гость






Editor.FindText(FindDialog1.FindText, FindDialog1.Position.X, Int, [stWholeWord]);

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

или
[]

(значит, ни одной опции не передаешь)
 К началу страницы 
+ Ответить 
Артемий
сообщение 25.10.2006 19:11
Сообщение #3


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


Спасибо!


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Артемий
сообщение 28.10.2006 16:54
Сообщение #4


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


Блин, никак не могу понять, как использовать FindDialog! Вот допустим есть форма, на которой лежит РичЭдитор и сам файнд. Как заставить этот файнд искать текст по эдитору. Если можно, дайте готовый проект. Заранее благодарен! wacko.gif


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.10.2006 17:17
Сообщение #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;
? Все вроде работает...
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 19:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"