Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGrid: Title как Button / 9 сообщений из 9, страница 1 из 1
26.12.2002, 20:44
    #32084978
rock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid: Title как Button
Delphi7.
Подскажите, как заставить Title DBGrid'a вести себя как Button, то есть таким образом чтобы я мог обрабатывать события нажатия разных колонок и рисовать значок сортировки. Много перерыл информации, но нигде нет точного ответа, только готовые компоненты. Наткнулся правда на одно решение заменить Title HeaderControl'ом, но уж больно оно кривое. Смотрел исходники RXLib (RXDBCtrl.pas), но мне как неискушенному не удалось разобраться. Описано очень много методов. Если полное решение описать не представляется возможным буду благодарен за перечисление какие методы, процедуры и параметры в указанном модуле отвечают на событие OnTitleBtnClick.
...
Рейтинг: 0 / 0
27.12.2002, 08:07
    #32085027
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid: Title как Button
Поищи в инете по слову "KULIBA", скачай и посмотри - там это есть.
И вообще там есть ответы на 99% вопросов этого форума (Delphi).
...
Рейтинг: 0 / 0
27.12.2002, 09:26
    #32085052
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid: Title как Button
тигра спит наверное :)
ну что ж, отвечу за него - посмотри компоненты EhLib там в DbGrid всё это есть - события OnTitleBtnClick, свойство TitleImages и т.д...
...
Рейтинг: 0 / 0
27.12.2002, 09:34
    #32085055
rock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid: Title как Button
2eNose
Кулиба у меня конечно есть, но описание данного вопроса там отсутсвует. Как я написал выше, там есть вариант замены Title HeaderControl'ом, но он кривой.

2hDrummer
Если было бы все так легко... Там описаны тысячи процедур и методов. У меня опыт написания компонент нулевой, разобраться тяжело с нахрапу без элементарных объяснений.
...
Рейтинг: 0 / 0
27.12.2002, 09:38
    #32085057
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid: Title как Button
ну волков бояться - в лес не ходить...это раз
а во-вторых не тысяча а всего 2 (два) - одно свойство и одно событие.

или тебе оно так надо, что ты даже разобраться не хочешь?
...
Рейтинг: 0 / 0
27.12.2002, 10:35
    #32085101
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid: Title как Button
Уже не сплю :)

Да, EhLib - самая лучшая библиотека DB-контролов, на мой взгляд
В свойствах колонки грида поставь Title.TitleButton = True, на событии грида TitleBtnClick сделай так (привожу свою процедуру, как датасет у тебя сортируется - так и переделай):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
procedure TNormGridForm.GridTitleBtnClick(Sender: TObject; ACol: Integer;   Column: TColumnEh);
var
  FieldName : String;
  i : Integer;
begin
  for i :=  0  to Grid.Columns.Count -  1  do
  begin
    if Grid.Columns[i].Title.TitleButton then
      if Grid.Columns[i].ID = Column.ID then
      begin
        if (Grid.Columns[i].Title.SortMarker in [smNoneEh, smUpEh])
         then
         begin
            Grid.Columns[i].Title.SortMarker := smDownEh;
            Query.SortOptions := [coDescending,coCaseInsensitive];
         end
         else
         begin
           Grid.Columns[i].Title.SortMarker := smUpEh;
           Query.SortOptions := [coCaseInsensitive];
         end;
         Query.SortFields := Grid.Columns[i].FieldName;
      end
      else
        Grid.Columns[i].Title.SortMarker := smNoneEh;
  end;
end;
...
Рейтинг: 0 / 0
27.12.2002, 15:05
    #32085280
rock
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid: Title как Button
2hDrummer
разве два? По-моему ты ошибаешься. Если внимательно поглядеть то можно там увидеть описания FTitleButtons, FOnTitleButtonClick, FOnCheckButton, DoTitleClick, DrawdataCell, ChecktitleButton и т.д. Гораздо больше чем двух. Ну ладно, буду разбираться. А пока придется юзать EhLib

2tygra
Спасибо за пример. Саму сортировку делать я могу. И примерно так я ее и делаю, но только на ADO. Но меня интересовал сам момент переделки DBGrid.
...
Рейтинг: 0 / 0
27.12.2002, 15:19
    #32085294
hDrummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid: Title как Button
два, три...пять...ну уж никак не "тысячи"
...
Рейтинг: 0 / 0
09.12.2003, 19:39
    #32348404
Cooper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DBGrid: Title как Button
2 tygra

Просто интересно, у тебя там (где !!!!!!!!) действительно smUpEh стоит или это опечатка?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
procedure TForm.DBGridEh1TitleClick(Column: TColumnEh);
  var i:integer;
begin

for i :=  0  to dbGrideh1.Columns.Count -  1  do
  begin
    if dbGrideh1.Columns[i].Title.TitleButton then
      if dbGrideh1.Columns[i].ID = Column.ID then
      begin
        if (dbGrideh1.Columns[i].Title.SortMarker in [smNoneEh, smDownEh]) !!!!!!!!!
         then
         begin
            dbGrideh1.Columns[i].Title.SortMarker := smDownEh;
            adostoredproc.Sort:=dbGrideh1.Columns[i].FieldName+' DESC';
         end
         else
         begin
           dbGrideh1.Columns[i].Title.SortMarker := smUpEh;
           adostoredproc.Sort:=dbGrideh1.Columns[i].FieldName+' ASC';
         end;
//         Query.SortFields := Grid.Columns[i].FieldName;
      end
      else
        dbGrideh1.Columns[i].Title.SortMarker := smNoneEh;
  end;

end;
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DBGrid: Title как Button / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]