Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Как мне найти запись (осуществить 'Find') в TQuery?
Я привел ниже код, который я использую в своей работе, правда, в нем еще необходимо организовать обработку исключительных ситуаций, но это дело времени. Когда пользователь нажимает кнопку "Найти", обработчик события OnClick вызывает процедуру SearchName.
Объявляем: FindSearch : Boolean и инициализируем значением True.
functionLookForString(target, source: string
): boolean; { в случае игнорирования перед вызовом pos необходимо преобразовать source и target в верхний регистр } begin
LookForString := pos(target, source); end
; procedure
SearchName(searchtype: string
; stringtofind: string
); var
OldCursor: TCursor; CurrentPos: TBookmark; found: boolean; begin
if
Form1.Query1.State = dsEdit then
Form1.Query1.Post; if
StringToFind = '' then
exit; OldCursor := Screen.Cursor; Screen.Cursor := crHourGlass; with
Form1 do
begin
CurrentPos := Query1.GetBookmark; Query1.DisableControls; found := false
; if
searchtype <> 'prev' then
{ первый или следующий } begin
if
searchtype = 'first' then
Query1.First else
if
not
Query1.EOF then
Query1.Next; while
(not
Query1.EOF) and
(not
found) do
begin
if
LookForString(StringToFind, MemberName) <> 0 then
found := true
; if
not
found then
Query1.Next; end
; end
else
begin
{ prev } if
not
Query1.BOF then
Query1.Prior; while
(not
Query1.BOF) and
(not
found) do
begin
if
LookForString(StringToFind, MemberName) <> 0 then
found := true
; if
not
found then
Query1.Prior; end
; end
; Screen.Cursor := OldCursor; if
found then
begin
FindSearch := false
; ChangeFindCaption; UpdateStatusLabel; end
else
begin
MessageDlg('Больше ничего не найдено.', mtInformation, [mbOK], 0); Query1.GotoBookmark(CurrentPos); end
; Query1.EnableControls; Query1.FreeBookmark(CurrentPos); end
;
{ конец работы с Form1 } end; procedure
TForm1.FindButtonClick(Sender: TObject); begin
if
FindSearch then
SearchName('first', Page0Edit.Text) else
SearchName('next', Page0Edit.Text); end
;