![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SOS!!! [D5, XP]
Nafania © (2006-01-11 13:04:00)Здравствуйте! Я новичек в Делфи. При написании Меню у меня возникла проблема - не работает команда FIND. Вот что у меня есть:
procedure TForm1.Surasti1Click(Sender: TObject);
begin
FindDialog1.Position := Point(Memo1.Left, Memo1.Top + Memo1.Height);
FindDialog1.Execute;
end;
procedure TForm1.FindDialog1Find(Sender: TObject);
begin
if Pos(FindDialog1.FindText, Memo1.Lines.Text)<>0
then begin
Memo1.SelStart := Pos(FindDialog1.FindText,
Memo1.Lines.Text)-1;
Memo1.SelLength := Length(FindDialog1.FindText);
end;
end;
Слово SURASTI на литовском означает FIND
Помогите, пожалуйста! Где ошибка???? :(
Nafania (2006-01-11 15:35:00) [1]
> Игорь Шевченко © (11.01.06 13:23) [1]
> Я так делал:
Игорь, Вы умничка! Огромнейшее Вам спасибо!!! :-* Вы - мой спаситель!!! Всё получилось!!!! :))))
umbra (2006-01-11 13:34:00) [2]так а как что получается в результате выполнения процедуры? где оказывается курсор, что выделено?
Игорь Шевченко (2006-01-11 13:23:00) [3]Я так делал:
procedure TFooForm.FindDialogFind(Sender: TObject);
var
SearchText: string;
AText: string;
I: Integer;
LastSearchPos: Integer;
begin
SearchText := FindDialog.FindText;
if Memo.SelStart = 0 then
LastSearchPos := 0
else
LastSearchPos := Succ(Memo.SelStart);
AText := Copy(Memo.Lines.Text, Succ(LastSearchPos),
Length(Memo.Lines.Text));
if not (frMatchCase in FindDialog.Options) then
I := Pos(UpperCase(SearchText), UpperCase(AText))
else
I := Pos(SearchText, AText);
if I <> 0 then begin
SendMessage (Memo.Handle, EM_SETSEL, Pred(I+LastSearchPos),
Pred(I+LastSearchPos)+Length(SearchText));
SendMessage (Memo.Handle, EM_SCROLLCARET, 0, 0);
end else
ShowMessageFmt('Строка ''%s'' не найдена', [SearchText]);
FindDialog.CloseDialog;
end;