Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по EhLib Grid, сортировка 
V
    Опции темы
Академик
Дата 3.7.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник...
Сообщений: 114
Регистрация: 21.6.2006
Где: Столица РТ - Каза нь

Репутация: нет
Всего: -13



Как сделать, чтобы при щелчке по колонке в заголовке таблицы она сортировалась?

СУВ. СПС.  
--------------------
IDE := D2006; DB := Firebird 1.5  
PM MAIL   Вверх
dvamaster
Дата 3.7.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 30.6.2004
Где: Россия : Курган

Репутация: 3
Всего: 10



С EhLib не работал, но обрабатываешь колумнклик и сортируешь, в БД вроде как кеями делается 


--------------------
Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/

Что же я сделал не так? /Король Лир/

Я делаю это для твоего же блага! /Любой родитель и палач/

PKUNZIP.ZIP /неизвестный/
PM MAIL WWW ICQ   Вверх
Dynamic
Дата 4.7.2006, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 2
Всего: 15



смотря какая база. Для парадокса, например, достаточно указать в indexfields имя сортируемого стобца... 


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Akella
Дата 4.7.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



1. Какая база?
2. в свойствах колонки TitleButton := true
3. В свойствах грида MultisortMarking := true
4. В свойствах грида AutoMarking := true
5. В Uses модуля нужно добавить отсюда (..\ehlib\DataService\) нужный модуль, например
uses EhLibADO, если работаешь с ADO и всё
мало того набор данных должен быть основанным на SQL запросе.
в этой же (..\ehlib\DataService\) почитай ReadMe.txt

а в этой папке (..\ehlib\DataService\Others) есть другие модули для сортировки и фильтрации.
 
PM MAIL   Вверх
Dynamic
Дата 4.7.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 372
Регистрация: 5.7.2004
Где: Салехард

Репутация: 2
Всего: 15



Akella, не знаешь SortLocal для чего? Пробовал его менять - ничего не дает...  


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Alex
Дата 4.7.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 17
Всего: 162



Цитата(Dynamic @  4.7.2006,  11:37 Найти цитируемый пост)
Akella, не знаешь SortLocal для чего? Пробовал его менять - ничего не дает...  

Какие компоненты доступа?

Добавлено @ 21:51 
Цитата

Using DBGridEh for sorting and filtering data in the DataSet.

    DBGridEh can not sort or filter data by itself. But it can pass action for sorting or filtering to the specal object that will do it in DataSet. You can adjust grid fot a two type of sorting (local or server), using property SortLocal and two type of filtering (also, local and server), but real possibility to aplly each type of operation depended of the type of DataSet. For instance, TBDEDataSet does not suppot sorting locally (inside DataSet) so you can not sort data locally when grid is linked to TQuery or TTable. Furthermore, EhLib have only special objects for standart type of Data Set (not for a third party DataSet's).

Below you can see a table of special object and DataSet in witch these objects can sort or filter data.


Unit    DataSet    Local sorting    Server sorting    Local filtering    Server filtering

EhLibBDE    TQuery, TTable  N    Y    Y    Y
EhLibADO    TADOQuery,    Y    Y    Y    Y

TADODataSet 

EhLibCDS    TClientDataSet    Y    Y    Y    Y
EhLibDBX    TSQLQuery,

TSQLDataSet    N    Y    N    Y

EhLibIBX    TIBQuery,

TIBDataSet  N    Y    Y    Y

    When grid is adjusted for a local filtering the special object will build exprression and assign it to a property Filter of DataSet. So need also to set Filtered to True manually.

    When grid is adjusted for a server filtering, the special object will build SQL:ORDER BY exprression and replace ORDER BY string in SQL or Command property of DataSet and reopen DataSet. 

    When grid is adjusted for a local sorting the special object will do a sorting using specific of the type of DataSet.

    When grid is adjusted for a server sorting the special object will build expression for SQL 'WHERE' clause in SQL string of dataset. It will try to found string that begining from key string '/*Filter*/' (You can change this key string using global variable - SQLFilterMarker) in SQL expression a nd adds filter expression after this string in same line. So your SQL query have to have a line that begining from '/*Filter*/'. For instance:

' select * 

from table1

where

/*Filter*/ 1=1 '

    For automatically filtering/sorting data in dataset need to add one of the units EhLibXXX (EhLibADO, EhLibBDE, EhLibCDS ... dependenly of the dataset that grid is linked to) to 'uses' clause of any unit of your project. This units have code to register TDatasetFeaturesEh based classes (special o bject) for respective DataSet's. For other third party DataSet's you have to write and register your own special object or you have to wrtie OnApplyFilter or/and OnSortMarkingChanged event for every required grid. More other, you can write OnApplySorting and/or OnApplyFilter for the global varia ble DBGridEhDataService. These events has TNotifyEvent type where Sender is TCustomDBGridEh. 

Adjusting grid for sorting data: 

   TDBGridEh allows to show special sortmarking bitmaps (small triangles) in the right part of title cell. In order to automatically marking  title by sortmarking bitmaps add dghAutoSortMarking to OptionsEh property. Add dghMultiSortMarking too OptionsEh in order to allow sortmarking several columns simultaneously. Set Column.Title.TitleButton to true for titles which will have possibility to change sortmarkers at run time. Or you can set ColumnDefValues.Title.TitleButton to allow to set sortmarking for all columns which Column.Title.TitleButton is not changed. At runtime clicking on title will change sortmarking. Holding Ctrl key allows to mark several columns simultaneously. After user change sormarking grid call OnSortMarkingChanged event or pass action to special object, if it registered. Special object will use Grid.SortLocal property to determine how to sort data: locally o r on the server. If you write OnSortMarkingChanged you can use TDBGrid.SortMarkedColumns property to access to sortmarked columns and TColumnEh.Title.SortMarker property to get state of the sortmarker.

EhLib Software
  

Это сообщение отредактировал(а) Alex - 4.7.2006, 21:52


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Grig
Дата 4.7.2006, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: 4
Всего: 16





--------------------
        
PM MAIL ICQ   Вверх
Академик
Дата 5.7.2006, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник...
Сообщений: 114
Регистрация: 21.6.2006
Где: Столица РТ - Каза нь

Репутация: нет
Всего: -13



Akella
Спасибо!

Alex
Супер! То что доктор прописал!

2Модератор: поставь Алексу плюс от меня. 
--------------------
IDE := D2006; DB := Firebird 1.5  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.