Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.02;
Скачать: CL | DM;

Вниз

Про поиск в RichEdit...   Найти похожие ветки 

 
Nic (gr. 442)   (2006-03-20 17:38) [0]

Вопрос такой:Имеется TRichEdit. допустим с таким текстом:
Name Вася dsfsdfdsfsdfdsfsd df gt вапв аппа ва павпвапеавпаа аппа пвапаFamily Пупкин dfdsfsdf
В TreeView должно отоброжаться Типо

+Name
  Вася
+Family
  Пупкин

Так вот не подскажите как это осуществить. Текст может быть довольно большим~ 1000 строк. И может меняться, т.е. если мы допустим в Пупкин удалим одну букву, то чтобы в TreeView Фамилия тоже изменилась или удалим в Family одну букву и Пупкин бы исчез.Я думал поставить таймер и секунды через 4 проверять текст на нахождение слов Family, Name. Не будет ли это тормозить? Подскажите, пожалуйста, как осуществить поиск по TRichEdit, чтобы при нахождении Famile в Tree записывалось следующее слово, какими функциями оперировать.


 
Boris Marchenko ©   (2006-03-20 17:49) [1]

Таймер здесь, не нужен... Проверяйте на OnKeyPress. 1000 строк, имхо, немного, тормозить не должно.
Поиск обычный,
for i := 1 to ... do
Наличие слов Name и Family проверять как
if AnsiMidStr(S, i, 4) = "Name" и if AnsiMidStr(S, i, 6) = "Family".


 
Nic (gr. 442)   (2006-03-20 22:17) [2]

СПАСИБО ОБЯЗАТЕЛЬНО ПОПРОБУЮ, как Вы написали.  Ещё отпишусь...


 
Nic (gr. 442)   (2006-03-20 22:24) [3]

Я сейчас подумал, если человек быстро будет набирать текст на клавиатуре(символов 200 в минуту) Вы думаете не будет подвисать?


 
Nic (gr. 442)   (2006-03-21 03:18) [4]

Пока что маленькую часть сделал, не тормозит. Поставил на событие OnKeyPress. Пользовался методом FindText(). Ещё вопрос по RichEdit как вызвать его процедуру OnKeyPress:=Text_GL_PRESS_KEY из других процедур.

procedure TIndex_Form.Text_GL_PRESS_KEY(Sender: TObject; var key: char);
begin
.
.
end;

Text_GL_PRESS_KEY(NIL, "q") <--- Не работает


 
clickmaker ©   (2006-03-21 11:09) [5]


> Text_GL_PRESS_KEY(NIL, "q") <--- Не работает

там же var, а ты передаешь константу


 
Nic (gr. 442)   (2006-03-21 12:45) [6]

Попробую разобраться...

Но пока начал делать кусок задания появился вопрос. А можно ли с помощью FindText искать несколко слов???
Т.е.
FindText("Name" or "Family", ..., ..., [stWholeWord])

так просто не работает. А хотелось бы чтобы он искал Name , но если раньше встретится Family то записывал его. Чтобы было в одном цикле. А не так, чтобы он весь текст просканил вначале на Name, а потом опять начал сканить на Famiy


 
clickmaker ©   (2006-03-21 13:06) [7]


> Nic (gr. 442)   (21.03.06 12:45) [6]

напиши свою, более "умную" функцию поиска. У тебе же есть RichEdit.Lines...


 
Рамиль ©   (2006-03-21 13:11) [8]

Вообще, я бы предложил начинать искать при паузе в наборе, а то при большом тексте тормозить будет (и, наверное, в отдельном потоке, скопировав весь текст из richedit, если будет и дальше тормозить).


 
Nic (gr. 442)   (2006-03-21 13:58) [9]

>напиши свою, более "умную" функцию поиска. У тебе же есть RichEdit.Lines...
А встроенных нет ? :-(
Рамиль
>наверное, в отдельном потоке, скопировав весь текст из richedit
А как это сделать? Помогите, pls я с потоками не работал.


 
Рамиль ©   (2006-03-21 14:11) [10]

Без потока на паузу при наборе попробуй сначала. Если скорости хватит, то заморачиваться с потоком не надо.


 
Nic (gr. 442)   (2006-03-21 14:32) [11]

Рамиль

> Без потока на паузу при наборе попробуй сначала


Сейчас порылся в событиях Rich. Чего-то такого не нашёл. Есть такое событие? Или надо поработать с таймером?

P.S. Извените за может быть для Вас глупые вопросы. Я не волшебник я только учусь :-)


 
Рамиль ©   (2006-03-21 14:37) [12]

Ессно с таймером. По KeyPress запускаешь заново, в OnTimer дизэйблишь и ищешь. Interval подбираешь экспериментально.


 
Nic (gr. 442)   (2006-03-21 14:48) [13]

Так я и думал...
Ладно буду пробовать. Ещё FindText свой писать, хех, ....


 
Nic (gr. 442)   (2006-03-21 15:52) [14]

С Timer разобрался. Пока скорость устраивает. Только, почему-то при нажатии на DEL OnPressKey не срабатывает. Не знаете из-за чего такое может быть?


 
Рамиль ©   (2006-03-21 16:17) [15]

OnKeyDown используй



Страницы: 1 вся ветка

Текущий архив: 2006.04.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.298 c
2-1142896896
jenya_rus
2006-03-21 02:21
2006.04.02
Экспорт имен и расширений файлов в listview.???


6-1132841886
nicksss
2005-11-24 17:18
2006.04.02
в Delphi coхранить сайт как текстовый файл


2-1142416375
Russ
2006-03-15 12:52
2006.04.02
Сервис после запуска сразу останавливается


2-1142831819
Canopus
2006-03-20 08:16
2006.04.02
Отметка в меню POPUP


15-1141754213
ArtemESC
2006-03-07 20:56
2006.04.02
JavaScript