Форум: "Начинающим";
Текущий архив: 2007.06.24;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.049 c