|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Некорректно работает поиск и выделени записи в DBGrid
Доброе утро!
Ситуация следующая: Delphi7, БД paradox. организовал поиск по БД через locate. Пример: Выделяю кликом мыши 1 запись. В поиске, через TEdit, ввожу имя той записи, которая стоит выше выделенной. Курсор переходит на запрашиваемую запись, если кликнуть на нее, то выделяется другая запись, не та, что запрашивалась. Если в поиске вводить запись, имя которой находится ниже выделенной изначально, то после наведения на нее(запрошенную запись) курсора и кликанья на нее - выделяется корректно, т.е. именно та запись, которая была запрошена. Код: Код:
procedure TMainFrm.NameEdChange(Sender: TObject); begin //Data.CustTbl.Locate('CUST_NAME',NameEd.Text,[loCaseInsensitive,loPartialKey]); CustGrd.DataSource.DataSet.Locate('CUST_NAME',NameEd.Text,[loCaseInsensitive,loPartialKey]); Label2.Caption := IntToStr(CustGrd.DataSource.DataSet.RecNo); end; По поводу некорректного выделения записи: если выделить кликом мыши 1 запись и колесом мыши двигаться по таблице вверх, то получаются выделены 2 записи. как исправить это? чтобы выделялась только та запись, которая относится к выделению колесом мыши. Последний раз редактировалось Admin, 13.11.2012 в 10:59. |
#2
|
||||
|
||||
Цитата:
|
#3
|
|||
|
|||
Цитата:
да, я обработал по-другому колесо мышки(взял с какого-то сайта): Код:
procedure TMainFrm.FormCreate(Sender: TObject); begin Application.OnMessage := AppMessage; end; procedure TMainFrm.next_Prior; begin CustGrd.DataSource.DataSet.Prior; end; procedure TMainFrm.next_record; begin CustGrd.DataSource.DataSet.Next; end; procedure TMainFrm.AppMessage(var Msg:TMsg; var Handled: Boolean); begin IF Msg.message = WM_MOUSEWHEEL then if CustGrd.Focused then if CustGrd.DataSource.DataSet.Active then begin IF(( msg.wParam <=32512) and ( Msg.message = WM_MOUSEWHEEL)) then next_record; IF(( msg.wParam > 32512) and ( Msg.message = WM_MOUSEWHEEL)) then next_Prior ; Handled:=true; end; end; Последний раз редактировалось RodionSabitov, 13.11.2012 в 12:10. |
#4
|
|||
|
|||
да, dbgrid стандартный
но это не решило естественно проблему выделения строк и поиска. проблема с поиском пропадает, если место для отображения записей в таблице не больше "размера объекта" dbgrid, но это естественно не решение. кто может помочь? Последний раз редактировалось RodionSabitov, 13.11.2012 в 12:31. |
#5
|
||||
|
||||
Цитата:
Если там вернуть значение False то после этого работает так как тебе нужно? |
#6
|
|||
|
|||
Цитата:
тогда не работает удаление выделенной записи, если убрать dgMultiSelect Код:
CustGrd.SelectedRows.Delete; как удалять выделенную запись без мультиселекта? при этом да, глюк с 2мя выделенными записями исчезает. Последний раз редактировалось RodionSabitov, 13.11.2012 в 13:38. |
#7
|
|||
|
|||
Цитата:
ладно, думаю, в обработке кнопки, отвечающей за удаление записи, буду менять опцию мультиселект. далее: скачал ehgrid, там поиск корректно работает, не знаешь? |
#8
|
||||
|
||||
Цитата:
Код:
CustGrd.DataSource.DataSet.Delete; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
RodionSabitov (14.11.2012)
|
#9
|
|||
|
|||
в итоге использовал ehgrid, там есть стандартный поиск =)
|