Консультация № 109061
12.11.2007, 14:11
0.00 руб.
0 1 1
Добрый день!
У меня вопросец ...
Подскажите как сделать поиск по строчно в String Grid
Хотелось бы что-то наподобие поиска в 1С(вводишь слово а искомая строка сразу подсвечивается)

Заранее спасибо!

Обсуждение

Неизвестный
12.11.2007, 16:03
общий
это ответ
Здравствуйте, Грек А.В.!
Могу предложить немного другой вариант вы вводите то что ищете а при нажатии на кнопку найти производится поиск.
В низу формы положите элемент Tpanel + Tedit + 2 кнопки (найти, отмена)

У Grid выберети собтии при нажатии кнопки

там напишите - это позволит вводить текст в поле

Panel.Visible := True;
Find.SetFocus;
Find.SelText := key;
end;

потом создайте событие при нажатии кнопки "найти"

Var
I : Integer;
S : String;
isOK : Boolean;
List : TList - переменная которая содержит весь список вашего поля
begin
isOk := False;
S := AnsiUpperCase(Trim(WhatFind.Text));
For I := Grid.Row To List.Count - 1 Do Begin
isOK := Pos(S, AnsiUpperCase(List[I].Name) = 1;
If isOK Then Break;
End;
If Not isOK Then
For I := 0 To Grid.Row - 1 Do Begin
If I > List.Count - 1 Then Break;
isOK := Pos(S, AnsiUpperCase(List[I].Name) = 1;
If isOK Then Break;
End;
If isOK Then Begin
Grid.Row := I + 1;
DoSelectCell(I)
End Else ShowMessage(‘ничего не найдено‘);
End;

вот так вроде будет работать. Возможны варианты в строке isOK := Pos(S, AnsiUpperCase(List[I].Name) = 1;
но в любом случае алгоритм такой.

Форма ответа