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

Вниз

finddialog   Найти похожие ветки 

 
Nipel   (2007-06-02 20:36) [0]

У меня проблема с finddialog. Он находит 1 строку выделяет ёё а дальше не работает. Не могу сообразить почему. Упустил что-то. :)Подскажите

procedure TForm1.N16Click(Sender: TObject);
var spos:integer;
begin
spos:=memo1.SelStart;
With FindDialog1 do
 begin
 findtext:=memo1.SelText;
 Position:=Point(Form1.Left,Form1.Top+memo1.Top+memo1.Height);
 Options:=Options+[frHideUpDown,frHideWholeWord];
 execute;
 end;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
var spos:integer;
begin

 with FindDialog1 do begin
  if frMatchCase in Options
  then memo1.SelStart:=pos(FindText,Copy(Memo1.Lines.Text,spos+1, Length(memo1.Lines.Text)))+spos-1
  else memo1.SelStart:=pos(AnsiLowerCase(FindText),AnsiLowerCase(copy(memo1.Lines.Text, spos+1,length(memo1.Lines.Text))))+spos-1;
  if memo1.SelStart>=spos
  then begin
  memo1.SelLength:=length(FindText);
  spos:=memo1.SelStart+memo1.sellength+1;
  end
  else
   if MessageDlg("Text ""+FindText+" not found. Continue dialog?",
   mtConfirmation,mbYesNoCancel,0) <> mrYes
   then CloseDialog;

end;
memo1.SetFocus;
end;


 
DVM ©   (2007-06-02 20:45) [1]


procedure TForm1.AFindExecute(Sender: TObject);
begin
{запоминание позиции курсора}
SPos:=RichEdit1.SelStart;
with FindDialog1 do begin
 {начальное значение текста поиска - текст, выделенный в RichEdit1}
 FindText:=RichEdit1.SelText;
 {позиционирование окна диалога внизу RichEdit1}
 Position:=Point(Form1.Left,Form1.Top+RichEdit1.Top+RichEdit1.Height);
 {удаление из диалога кнопок "Вверх", "Вниз",
  "Только  слово целиком"}
 Options:=Options + [frHideUpDown,frHideWholeWord];
 {выполнение}
 Execute;
end;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
begin
with FindDialog1 do begin
if frMatchCase in Options
 {поиск с учетом регистра}
 then RichEdit1.SelStart:=Pos(FindText,
                          Copy(RichEdit1.Lines.Text,SPos+1,
                            Length(RichEdit1.Lines.Text)))+Spos-1
 {поиск без учета регистра}
 else RichEdit1.SelStart:=Pos(AnsiLowerCase(FindText),
                   AnsiLowerCase(Copy(RichEdit1.Lines.Text,SPos+1,
                   Length(RichEdit1.Lines.Text))))+Spos-1;
 if RichEdit1.SelStart>=Spos
  then begin
   {выделение найденного текста}
   RichEdit1.SelLength:=Length(FindText);
   {изменение начальной позиции поиска}
   SPos:=RichEdit1.SelStart+RichEdit1.SelLength+1;
  end
  else
   if MessageDlg(
         "Текст ""+FindText+"" не найден. Продолжать диалог?",
         mtConfirmation,mbYesNoCancel,0) <> mrYes
   then CloseDialog;
end;
RichEdit1.SetFocus;
end;


 
nipel   (2007-06-02 21:05) [2]

Все равно не работает


 
DVM ©   (2007-06-02 21:33) [3]

В Options FindDialog-а что отмечено?



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

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

Наверх




Память: 0.47 MB
Время: 0.025 c
2-1180772684
Gloomer
2007-06-02 12:24
2007.06.24
Разрыв соединения


2-1180939730
Alexys
2007-06-04 10:48
2007.06.24
Кнопки


3-1175150328
fishka
2007-03-29 10:38
2007.06.24
Проблема с Excel


9-1154520722
Нуб
2006-08-02 16:12
2007.06.24
DelphiX


15-1180352115
boriskb
2007-05-28 15:35
2007.06.24
Планы США по освоению космоса на 20 лет