Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2008, 22:54   #1
Bayram_662
 
Аватар для Bayram_662
 
Регистрация: 14.12.2008
Сообщений: 9
По умолчанию FindDialog ,ReplaceDialog

Привет!!Плз срочно мне нужна помощь
Вот у мя такая проблема: Я создал текстовый редактор,там поставил FindDialog ,ReplaceDialog ,они у мя просто окрываются а чтобы там менять местами слова или же найти не находят, что мне делать? точнее я кажется не правильно пишу

begin
memo1.HideSelection:=true;

if pos(replacedialog1.FindText,memo1.T ext)<>0 then
begin
memo1.selstart:=pos(replacedialog1. findtext,memo1.text)-1;
memo1.SelLength:=length(replacedial og1.FindText);
memo1.SelText:=replacedialog1.Repla ceText;

end;
Memo1.HideSelection:=false;
end;
procedure TForm1.N15Click(Sender: TObject);
begin
replacedialog1.Execute ;

end;

Последний раз редактировалось Bayram_662; 14.12.2008 в 22:58.
Bayram_662 вне форума Ответить с цитированием
Старый 14.12.2008, 23:10   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну если срочно...
Тогда - самый быстрый метод:
- тыркаем мышкой в, например, FindDialog и нажимаем F1
- в открывшемся окне хэлпа выбираем первое попавшееся свойство компонента, например, FindText
- и теперь уже на этой страничке жмем заветную ссылочку "Delphi example "
Быстрее не бывает...

З.Ы. Да, забыл... Остальные вопросы - аналогично.
mihali4 вне форума Ответить с цитированием
Старый 14.12.2008, 23:17   #3
Bayram_662
 
Аватар для Bayram_662
 
Регистрация: 14.12.2008
Сообщений: 9
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Ну если срочно...
Тогда - самый быстрый метод:
- тыркаем мышкой в, например, FindDialog и нажимаем F1
- в открывшемся окне хэлпа выбираем первое попавшееся свойство компонента, например, FindText
- и теперь уже на этой страничке жмем заветную ссылочку "Delphi example "
Быстрее не бывает...

З.Ы. Да, забыл... Остальные вопросы - аналогично.
СПАСИБО ,но мне нужно было конретынй код!
Bayram_662 вне форума Ответить с цитированием
Старый 14.12.2008, 23:24   #4
Ульви
Новичок
Джуниор
 
Регистрация: 14.12.2008
Сообщений: 1
По умолчанию

при нажатии F1 появляется помощь на англ языке!!
Ульви вне форума Ответить с цитированием
Старый 14.12.2008, 23:29   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Ульви Посмотреть сообщение
при нажатии F1 появляется помощь на англ языке!!
Без знания хотя бы азов английского компьютер лучше вообще не включать!
mihali4 вне форума Ответить с цитированием
Старый 15.12.2008, 08:25   #6
KiDoki
Форумчанин
 
Регистрация: 06.10.2008
Сообщений: 102
По умолчанию

Код:
procedure TForm1.FindDialog1Find(Sender: TObject);
var
FTPos:Integer; // Переменная для текущей позиции
IText,FText:String; // Исходный текст, Искомый текст 
begin
RichEdit1.SetFocus; // Устанавливаем фокус ввода на Мемо иначе мы ничего не увидим
if not (frMatchCase in FindDialog1.Options) then 
FText:=AnsiLowerCase(FindDialog1.FindText) else // Если в диалоги ищем без учета регистра 
FText:=FindDialog1.FindText; // Если в диалоги ищем c учета регистра 
if frDown in FindDialog1.Options then 
begin // Поиск Вниз 
IText:=copy(RichEdit1.Text,RichEdit1.SelStart+RichEdit1.SelLength+1,Length(RichEdit1.Text)); // Задаем исходный текст после текущей позиции курсора
if not (frMatchCase in FindDialog1.Options) then IText:=AnsiLowerCase(IText); // Если в диалоги ищем без учета регистра 
FTPos:=pos(FText,IText); // Собственно сам поиск 
if FTPos=0 then Exit; // Если ничего не нашли то выходим из процедуры 
FTPos:=FTPos+RichEdit1.SelStart+RichEdit1.SelLength; // Делаем поправку на текущее положение курсора
RichEdit1.SelStart:=FTPos-1;RichEdit1.SelLength:=Length(FText); // Выделяем текст
end else  // Поиск Вверх 
begin
IText:=copy(RichEdit1.Text,0,RichEdit1.SelStart); // Задаем исходный текст до текущей позиции курсора 
if not (frMatchCase in FindDialog1.Options) then IText:=AnsiLowerCase(IText); // Если в диалоги ищем без учета регистра 
for FTPos:=length(IText)-length(FText) downto 1 do // Перебераем текст с конца до начала 
if copy(IText,FTPos,length(FText))=FText then // Если фрагмент текста совпал с искомым то 
begin 
RichEdit1.SelStart:=FTPos-1;RichEdit1.SelLength:=Length(FText); // Выделяем текст 
Exit; // Выходим из процедуры 
end; 
end;
end;
Код:
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
begin
FindDialog1.Options:=ReplaceDialog1.Options; // Всё аналогично предедущей процедуре 
FindDialog1.FindText:=ReplaceDialog1.FindText; // Аналогично 
with Sender as TReplaceDialog do // Заменяем пока можем 
while True do
begin 
if RichEdit1.SelText <> FindText then FindDialog1Find(Sender); // Если нет выделеного текста то ищем 
if RichEdit1.SelLength = 0 then Break; // Если так и не нашли текст то выходим из цикла 
RichEdit1.SelText := ReplaceText; // Заменяем текст 
if not (frReplaceAll in Options) then Break; // Если нам надо один раз заменить то выходим из цикла
end;
end;
Код:
procedure TForm1.ReplaceDialog1Find(Sender: TObject);
begin
FindDialog1.Options:=ReplaceDialog1.Options; // Устанавливаем в диалоге поиска такие-же опции как и в диалоге замены
FindDialog1.FindText:=ReplaceDialog1.FindText; // Аналогично делаем с текстом
FindDialog1Find(Sender); // Вызываем процедуру поиска
end;
Нашел в интернете где-то, давно ещё...

Последний раз редактировалось KiDoki; 15.12.2008 в 08:28.
KiDoki вне форума Ответить с цитированием
Старый 15.12.2008, 22:25   #7
Bayram_662
 
Аватар для Bayram_662
 
Регистрация: 14.12.2008
Сообщений: 9
По умолчанию

Цитата:
Сообщение от KiDoki Посмотреть сообщение
Код:
procedure TForm1.FindDialog1Find(Sender: TObject);
var
FTPos:Integer; // Переменная для текущей позиции
IText,FText:String; // Исходный текст, Искомый текст 
begin
RichEdit1.SetFocus; // Устанавливаем фокус ввода на Мемо иначе мы ничего не увидим
if not (frMatchCase in FindDialog1.Options) then 
FText:=AnsiLowerCase(FindDialog1.FindText) else // Если в диалоги ищем без учета регистра 
FText:=FindDialog1.FindText; // Если в диалоги ищем c учета регистра 
if frDown in FindDialog1.Options then 
begin // Поиск Вниз 
IText:=copy(RichEdit1.Text,RichEdit1.SelStart+RichEdit1.SelLength+1,Length(RichEdit1.Text)); // Задаем исходный текст после текущей позиции курсора
if not (frMatchCase in FindDialog1.Options) then IText:=AnsiLowerCase(IText); // Если в диалоги ищем без учета регистра 
FTPos:=pos(FText,IText); // Собственно сам поиск 
if FTPos=0 then Exit; // Если ничего не нашли то выходим из процедуры 
FTPos:=FTPos+RichEdit1.SelStart+RichEdit1.SelLength; // Делаем поправку на текущее положение курсора
RichEdit1.SelStart:=FTPos-1;RichEdit1.SelLength:=Length(FText); // Выделяем текст
end else  // Поиск Вверх 
begin
IText:=copy(RichEdit1.Text,0,RichEdit1.SelStart); // Задаем исходный текст до текущей позиции курсора 
if not (frMatchCase in FindDialog1.Options) then IText:=AnsiLowerCase(IText); // Если в диалоги ищем без учета регистра 
for FTPos:=length(IText)-length(FText) downto 1 do // Перебераем текст с конца до начала 
if copy(IText,FTPos,length(FText))=FText then // Если фрагмент текста совпал с искомым то 
begin 
RichEdit1.SelStart:=FTPos-1;RichEdit1.SelLength:=Length(FText); // Выделяем текст 
Exit; // Выходим из процедуры 
end; 
end;
end;
Код:
procedure TForm1.ReplaceDialog1Replace(Sender: TObject);
begin
FindDialog1.Options:=ReplaceDialog1.Options; // Всё аналогично предедущей процедуре 
FindDialog1.FindText:=ReplaceDialog1.FindText; // Аналогично 
with Sender as TReplaceDialog do // Заменяем пока можем 
while True do
begin 
if RichEdit1.SelText <> FindText then FindDialog1Find(Sender); // Если нет выделеного текста то ищем 
if RichEdit1.SelLength = 0 then Break; // Если так и не нашли текст то выходим из цикла 
RichEdit1.SelText := ReplaceText; // Заменяем текст 
if not (frReplaceAll in Options) then Break; // Если нам надо один раз заменить то выходим из цикла
end;
end;
Код:
procedure TForm1.ReplaceDialog1Find(Sender: TObject);
begin
FindDialog1.Options:=ReplaceDialog1.Options; // Устанавливаем в диалоге поиска такие-же опции как и в диалоге замены
FindDialog1.FindText:=ReplaceDialog1.FindText; // Аналогично делаем с текстом
FindDialog1Find(Sender); // Вызываем процедуру поиска
end;
Нашел в интернете где-то, давно ещё...


Чего-то на FindDialog1Find(Sender); показывает ошибку((
Bayram_662 вне форума Ответить с цитированием
Старый 15.12.2008, 22:45   #8
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

То Bayram_662
Не стоит цитировать целиком предыдущий пост - он и так виден.
А форум - не резиновый.
Не нужно нажимать на кнопку "Цитата" - просто пишем внизу, в окошке быстрого ответа и все дела...
mihali4 вне форума Ответить с цитированием
Старый 16.12.2008, 16:59   #9
KiDoki
Форумчанин
 
Регистрация: 06.10.2008
Сообщений: 102
По умолчанию

Что за ошибка?
KiDoki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение FindDialog к Table Qnix Общие вопросы C/C++ 3 19.06.2008 15:09