Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо