| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Знак сортировки (стрелка/треугол.) в title DBGrid |
| Автор: chikistbuch 7.4.2012, 19:19 |
| Подскажите, как добавить стрелочку в заголовок колонки DBGrid'a, которая бы указывала о сортировке, как здесь: http://s1.ipicture.ru/Gallery/Viewfull/9797878.html Вот как это сделано в EhLib'e: http://s1.ipicture.ru/Gallery/Viewfull/9797932.html Неужели никто не знает как это сделать???? |
| Автор: TANGOR 14.4.2012, 06:15 |
| Ну во первых этот грид на картинке не обычный DBGrid а DefExpress-совский там всё это есть. а если нужна сортировка по клику на заголовок, то: //Если DBGrid к Query присоединен то так: procedure TForm1.FormCreate(Sender: TObject); Var path:string; begin GetDir(0,path); ADOConnection1.Close; ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+path+'\DB.mdb;Persist Security Info=False'; ADOConnection1.Connected:=true; QSQL:='SELECT * from main '; With ADOQuery2 do begin Close; SQL.Clear; SQL.Add(QSQL); Open; end; ADOTable1.Open; end; //В событии DBGrid OnTitleClick прописываем. procedure TForm1.DBGrid1TitleClick(Column: TColumn); Var f:string; begin f:= Column.FieldName;//без этой переменной у меня работать не хочет with ADOQuery2 do begin Close; SQL.Clear; SQL.Add(QSQL); SQL.Add('ORDER BY '+f); Open; end; end; //Если Table к DBGrid подключен то в OnTitleClick пишем. procedure TForm1.DBGrid2TitleClick(Column: TColumn); Var f:string; begin f:= Column.FieldName; ADOTable1.Sort:=f; end; |
| Автор: chikistbuch 14.4.2012, 08:09 | ||
а где его взять и бесплатен ли он? |
| Автор: Akella 14.4.2012, 11:06 |
| devexporess.com такие гриды бесплатными не бывают |
| Автор: chikistbuch 14.4.2012, 14:01 |
| Так что, в стандартный DBGrid эту стрелку вставить нельзя???? Подскажите хоть как узнать ширину колонки, координату начала колонки, хоть что-то к чему можно было бы привязаться |
| Автор: Akella 14.4.2012, 17:44 | ||
Кто сказал, что нельзя? Ты плохо ищешь. Я уверен, что в интернете должны быть готовые примеры. Добавлено через 1 минуту и 2 секунды А что, свойства, методы и события грида и колонок самому изучить нельзя, справку почитать? |
| Автор: chikistbuch 15.4.2012, 17:16 | ||
Дружище, подскажи как к этим метотодам или как они называються, константы что ли обращаться
Value Indicates changes to cvColor The column's Color property. cvWidth The column's Width property. cvFont The column's Font property. cvAlignment The column's Alignment property. cvReadOnly The column's ReadOnly property. cvTitleColor The column title's Color property. cvTitleCaption The column title's Caption property. cvTitleAlignment The column title's Alignment property. cvTitleFont The column title's Font property. cvImeMode The column's ImeMode property. cvImeName The column's ImeName property. |
| Автор: Akella 16.4.2012, 11:12 |
| к ним не надо обращаться. Это константы. Значения констант присваиваются свойствам, например, или переменным. |
| Автор: chikistbuch 16.4.2012, 18:13 | ||||
Так как присвоить переменной значение константы
Хотя мне это и не поможет в данной ситуации, но на будущее помогло бы разобраться, Спасибо. |
| Автор: Akella 16.4.2012, 19:50 | ||
это же азЫ О_о как же ты без них собрался программировать |
| Автор: chikistbuch 16.4.2012, 19:55 | ||||
как
до этого cvWidth нужно же как-то добраться мы же не пишем
Так вот вопрос, что нужно написать чтобы добраться, к примеру, к cvWidth Кстати, спасибо что так быстро отреагировал!! |
| Автор: Akella 16.4.2012, 20:11 | ||||
|
| Автор: chikistbuch 16.4.2012, 20:13 |
| ничего не понял, нет чтобы нормально объяснить! ну да ладно, буду сам пытаться (((((((((( |
| Автор: Akella 16.4.2012, 20:15 | ||||||
| Значение cvWidth нужно чему-то присвоить. Добавлено через 1 минуту и 52 секунды может быть так? ColumnValue := [здесь перечисляй нужные константы]; например:
Добавлено через 2 минуты и 18 секунд Тебе что, сложно в диспетчер свойств посмотреть? Добавлено через 3 минуты и 57 секунд ну и можно проверять
почитай про множества и перечислимые типы |
| Автор: chikistbuch 16.4.2012, 20:20 |
| СПАСИБО!!! Буду пробовать! |
| Автор: chikistbuch 27.4.2012, 00:54 | ||||||||
| Расскажу максимально подробно, чтобы даже таким валенкам как я было ясно: Определяем новый класс TDBGrid
Процедура DrawGridTitle закрашивает все что было отрисовано самим Grid'ом и поверх него пишет заголовок нужной колонки соблюдая требуемый отступ для стрелки
Как я понял DrawCell вызывается каждый раз при необходимости перерисовки ячеки (любое изменение Grid'a) в переменной order_n содержится номер колонки по которой будет производится сортировка данных, т.е. колонка в заголовке которой рисуем стрелку updown: boolean - я её использую для определения направления рисования стрелки
Ну и наконец-то обработчик грида при нажатии на заголовок
Вот что получилось, я счастлив http://s2.ipicture.ru/ |
| Автор: superVad 27.4.2012, 09:32 | ||||
|