![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Так всё таки, можно как нибудь победить DBGrid? [D4, MySQL, MsAccess 97/2000]
Котелок © (2001-12-10 07:47:00)Так всё таки, можно как нибудь победить DBGrid?
Чтобы бегунок у него работал как положено, а не имел только 3-и позиции. Или может есть какой-нито Grid расширенный с такой способностью....
Мефодий (2001-12-14 17:29:00) [1]Поправка
..., если нет индекса или он неподключен.
Я также давно ищу решение и все больше убеждаюсь, что для индексированного файла ВАРИАНТОВ НЕТ.
Мефодий (2001-12-14 12:57:00) [2]Я тоже скачал и поставил EhLib. Проверил на DBF файле (с опциями, указанными Alex Y). Все отлично работает, если нет индекса или он подключен. При включении индекса получается еще хуже, чем у Борланда.
Котелок (2001-12-13 02:25:00) [3]Хде-Хде..???
На сайте разроботчика..:-)))
Поисковые сервера зачем созданы..??:-)
http://www.farpost.com/personal/dmitryb/RUS/ehlibrus.exe
Пароль 2-а раза название 2-го месяца года большими буквами....
Yakudza (2001-12-11 11:49:00) [4]А где взять EhLib ?
Котелок (2001-12-11 10:52:00) [5]Если честно, то мне на этот бегунок, как грится, с высокой колоколни....
Но вот заказчик упёрся....Надо ему понимаешь-ли...
Всем TNX за помощь.....
22606 (2001-12-11 10:30:00) [6]Извините, не углядел за закрывающим тегом.
То Котелок ©: оттого он и тормозит (см.выше)
22606 (2001-12-11 10:24:00) [7]EhLib и прочие гриды, реально показывающие расположение записи в наборе данных действуют по принципу "все данные на клиента", ведь для правильного отображения бегунка необходимо по крайней мере знать сколько записей вернул запрос.
Все вышеописанные способы и реализуют это, неважно какой ценой.
Но всякая попытка декоративно приукрасить приложение путем "правильного позиционирования бегунка" обернется сильными тормозами, если данных в запросе (таблице) будет больше.
Поэтому прав здесь Mick</> - ничего не надо трогать.
По большому счету это положение не так уж и важно, во всяком случае быстродействие гораздо важнее.
В крайнем случае это может быть оправдано, если вы уверены, что данных немного (но опять таки тогда и "правильный бегунок" теряет смысл) либо когда база данных локальная типа Dbase или Paradox
Alex Y (2001-12-11 08:04:00) [8]Вот чего не знаю, того не знаю. Это лучше у разработчиков спросить.
Я сам на него недавно наткнулся.
Котелок (2001-12-11 07:53:00) [9]> Alex Y
Скачал и поставил EhLib. Классссс....Лучше чем Rx-ий, но немного притормаживает (бегунок нормально бегает). С этим можно как нибудь боротся или нет (может какие хитрости в настройках есть...???)?
Я свойство SumList
Active := true;
VirtualRecords := true;
ExternalRecalc := false;
Всё правильно..???
Alex Y (2001-12-11 04:55:00) [10]На базавом уровне работать с ADO точно также как и с BDE.
Отличие лишь в настройке соединения. В BDE ты Alias настраиваешь в администраторе, а в ADO - прямое соединение соединение (там мастер довольно понятный). А дальше те же самые tADOTable и tADOQuery и работаешь с ними точно также.
Для чайников этого вполне хватит :), а в тонкостях впоследствии сам разберешся.
Котелок (2001-12-11 03:32:00) [11]Кусок кода упорно отказывается работать..:-(
В хелпе да и в исходниках написано, что номер позиции может быть получен только из TTable и если тип DBase....
Может какой обходно путь есть..??
И ещё может, кто знает, где можно почитать про ADO...желательно для чайников и котелков....:-))
Alex Y (2001-12-10 13:49:00) [12]<Boo> А то :)
Boo (2001-12-10 13:43:00) [13]Alex Y
точно, сорри
Пора юзать ADO :=)
Alex Y (2001-12-10 13:18:00) [14]<Boo> Не в драйвер а в tDatabase. Это он коряво работает. см. <kd>
Boo (2001-12-10 13:05:00) [15]<Alex Y>
Проблема дальше чем TTable или TQuery
для MSSQL трабла упирается в ODBC драйвер, для других серваков не знаю...
Alex Y (2001-12-10 09:54:00) [16]Deniz абсолютно прав. С данными работает tTable и tQuery, а какой Grid ты используешь не имеет значения.
Boo (2001-12-10 09:38:00) [17]Если моно получать значения RecordCount и GerRecNo, то моно изнахратится:
procedure TFrom1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
If Table1.State=dsBrowse then begin
SetScrollRange(DBGrid1.Handle, SB_VERT, 0, Table1.RecordCount-1, False);
SetScrollPos(DBGrid1.Handle, SB_VERT, GetRecNo-1, False);
end;
end;
Изврат конечно, но говорят проходит (код не мой).
Недостатки: работает не со всеми дровами ODBC, прорисовка движка скрола 2 раза
Table1 моно заменить на Query1
Deniz (2001-12-10 09:35:00) [18]Зависит не от DBGrid"а, а от используемых xxxQuery
Mick (2001-12-10 09:27:00) [19]Не надо это бороть. И не надо ставить грамотно сделанные гриды, которые на SQL серверах показывают правильное положение бегунка.
Alex Y (2001-12-10 09:09:00) [20]Попробуй EhLib компонент, достаточно грамотно сделан.