Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];




Вниз

Так всё таки, можно как нибудь победить DBGrid? 


Котелок   (2001-12-10 07:47) [0]

Так всё таки, можно как нибудь победить DBGrid?
Чтобы бегунок у него работал как положено, а не имел только 3-и позиции. Или может есть какой-нито Grid расширенный с такой способностью....



kd   (2001-12-10 08:19) [1]

Я пробовал юзать ADO: ADOQuery->DataSourset1->DBGrid и бегунок работал нормально



Котелок   (2001-12-10 09:07) [2]

Хмм...
Учту на будуюшее

Но сейчас у меня уже куча кода Database->TQuery->datasource->DbGrid

Вот это меня и интересует.....



Alex Y   (2001-12-10 09:09) [3]

Попробуй EhLib компонент, достаточно грамотно сделан.



Mick   (2001-12-10 09:27) [4]

Не надо это бороть. И не надо ставить грамотно сделанные гриды, которые на SQL серверах показывают правильное положение бегунка.



Deniz   (2001-12-10 09:35) [5]

Зависит не от DBGrid"а, а от используемых xxxQuery



Boo   (2001-12-10 09:38) [6]

Если моно получать значения 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



Alex Y   (2001-12-10 09:54) [7]

Deniz абсолютно прав. С данными работает tTable и tQuery, а какой Grid ты используешь не имеет значения.



Boo   (2001-12-10 13:05) [8]

<Alex Y>
Проблема дальше чем TTable или TQuery
для MSSQL трабла упирается в ODBC драйвер, для других серваков не знаю...



Alex Y   (2001-12-10 13:18) [9]

<Boo> Не в драйвер а в tDatabase. Это он коряво работает. см. <kd>



Boo   (2001-12-10 13:43) [10]

Alex Y
точно, сорри
Пора юзать ADO :=)



Alex Y   (2001-12-10 13:49) [11]

<Boo> А то :)



Котелок   (2001-12-11 03:32) [12]

Кусок кода упорно отказывается работать..:-(

В хелпе да и в исходниках написано, что номер позиции может быть получен только из TTable и если тип DBase....

Может какой обходно путь есть..??

И ещё может, кто знает, где можно почитать про ADO...желательно для чайников и котелков....:-))



Alex Y   (2001-12-11 04:55) [13]

На базавом уровне работать с ADO точно также как и с BDE.
Отличие лишь в настройке соединения. В BDE ты Alias настраиваешь в администраторе, а в ADO - прямое соединение соединение (там мастер довольно понятный). А дальше те же самые tADOTable и tADOQuery и работаешь с ними точно также.
Для чайников этого вполне хватит :), а в тонкостях впоследствии сам разберешся.



Котелок   (2001-12-11 07:53) [14]

> Alex Y

Скачал и поставил EhLib. Классссс....Лучше чем Rx-ий, но немного притормаживает (бегунок нормально бегает). С этим можно как нибудь боротся или нет (может какие хитрости в настройках есть...???)?

Я свойство SumList
Active := true;
VirtualRecords := true;
ExternalRecalc := false;

Всё правильно..???



Alex Y   (2001-12-11 08:04) [15]

Вот чего не знаю, того не знаю. Это лучше у разработчиков спросить.
Я сам на него недавно наткнулся.



22606   (2001-12-11 10:24) [16]

EhLib и прочие гриды, реально показывающие расположение записи в наборе данных действуют по принципу "все данные на клиента", ведь для правильного отображения бегунка необходимо по крайней мере знать сколько записей вернул запрос.
Все вышеописанные способы и реализуют это, неважно какой ценой.
Но всякая попытка декоративно приукрасить приложение путем "правильного позиционирования бегунка" обернется сильными тормозами, если данных в запросе (таблице) будет больше.
Поэтому прав здесь Mick</> - ничего не надо трогать.
По большому счету это положение не так уж и важно, во всяком случае быстродействие гораздо важнее.
В крайнем случае это может быть оправдано, если вы уверены, что данных немного (но опять таки тогда и "правильный бегунок" теряет смысл) либо когда база данных локальная типа Dbase или Paradox



22606   (2001-12-11 10:30) [17]

Извините, не углядел за закрывающим тегом.
То Котелок ©: оттого он и тормозит (см.выше)



Котелок   (2001-12-11 10:52) [18]

Если честно, то мне на этот бегунок, как грится, с высокой колоколни....

Но вот заказчик упёрся....Надо ему понимаешь-ли...

Всем TNX за помощь.....



Yakudza   (2001-12-11 11:49) [19]

А где взять EhLib ?



Котелок   (2001-12-13 02:25) [20]

Хде-Хде..???

На сайте разроботчика..:-)))
Поисковые сервера зачем созданы..??:-)
http://www.farpost.com/personal/dmitryb/RUS/ehlibrus.exe

Пароль 2-а раза название 2-го месяца года большими буквами....



Мефодий   (2001-12-14 12:57) [21]

Я тоже скачал и поставил EhLib. Проверил на DBF файле (с опциями, указанными Alex Y). Все отлично работает, если нет индекса или он подключен. При включении индекса получается еще хуже, чем у Борланда.



Мефодий   (2001-12-14 17:29) [22]

Поправка
..., если нет индекса или он не подключен.
Я также давно ищу решение и все больше убеждаюсь, что для индексированного файла ВАРИАНТОВ НЕТ.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.75 MB
Время: 0.016 c
6-52627           KLM                   2001-09-28 10:11  2002.01.17  
Кодировка почты


3-52488           andey                 2001-12-14 21:26  2002.01.17  
Сколько запрашивать


1-52525           Beat                  2001-12-27 10:21  2002.01.17  
TIcon 16x16 а не 32x32?


3-52467           Grafr                 2001-12-14 06:25  2002.01.17  
Как искать в поле типа Memo без учета регистра


14-52643          Андрей Сенченко       2001-11-19 17:13  2002.01.17  
Зачем нужны DLL ?