Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Про поиск в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
9-1127285948
Kerk
2005-09-21 10:59
2006.04.02
Игра "Точки"


1-1141213505
Aleksandr.
2006-03-01 14:45
2006.04.02
Что случилось с GetHeapStatus?


15-1142247265
Сатир
2006-03-13 13:54
2006.04.02
Обработка события дочернего компонента


4-1137499500
polinom
2006-01-17 15:05
2006.04.02
Memory, как определить размер и область памяти для нового процеса


2-1142586275
ilga
2006-03-17 12:04
2006.04.02
ADOQuery.Parameters





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский