Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 16:00   #1
AndreyF
Пользователь
 
Регистрация: 15.10.2008
Сообщений: 44
По умолчанию DBGrid нарисовать на заголовке

Здравствуйте, ребята.
Сколько времени уже потратил, ничего не получается, подскажите пожалуйста, как нарисовать у DBGrid что-нибудь на заголовке?
Обрабатываю событие:
Код:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
   MyRect: TRect;
begin
   Form1.DBGrid1.Canvas.Ellipse(0,0,20,20);//так конечно рисует на DBGrid, но не на нужном заголовке
   Form1.DBGrid1.Canvas.Ellipse(MyRect.Left,MyRect.Right,MyRect.Bottom,MyRect.Top);//а если так то MyRect.Left=10724032 и MyRect.Top=4590854345 и т.д.
end;
Как узнать координаты заголовка?
AndreyF вне форума Ответить с цитированием
Старый 09.12.2009, 17:36   #2
shock-in
Пользователь
 
Регистрация: 13.11.2009
Сообщений: 23
По умолчанию

может так?
Код:
procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
   MyRect: TRect;
begin
   Form1.DBGrid1.Canvas.Ellipse(x,y,x+20,y+20);
   Form1.DBGrid1.Canvas.Ellipse(MyRect.Left,MyRect.Right,MyRect.Bottom,MyRect.Top);
end;
shock-in вне форума Ответить с цитированием
Старый 09.12.2009, 17:49   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Отталкиваемся от ширины колонки в пикселях:
Код:
DBGrid1.Columns.Items[2].Width
Это ширина 3-го поля...
mihali4 вне форума Ответить с цитированием
Старый 10.12.2009, 08:38   #4
AndreyF
Пользователь
 
Регистрация: 15.10.2008
Сообщений: 44
По умолчанию

координаты мыши считывать - не совсем подходит, не красиво рисуется фигура в заголовке.
думаю правильно - надо от ширины столбца отталкиваться, только не могу вычислить выбранный столбец
делаю так:
Код:
DBGrid1.Columns.Items[DBGrid1.SelectedIndex].Width;
это работает только, когда я по сетке нажимаю, а когда по заголовку SelectedIndex=0.
Как узнать номер выбранного столбца узнать?
AndreyF вне форума Ответить с цитированием
Старый 10.12.2009, 13:35   #5
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Вопросы странные какие-то...
Код:
procedure TForm1.DBGrid2TitleClick(Column: TColumn);
begin
Label1.Caption:=IntToStr(Column.Index);
end;
Не забудьте, что вам нужно будет суммировать ширины всех предыдущих столбцов и еще добавить ширину столбца-индикатора - примерно 12 пикселов.
Ну, и зазорчик сделать между вертикальной линией и рисунком - еще 4-6 пикселов.
mihali4 вне форума Ответить с цитированием
Старый 11.12.2009, 12:25   #6
AndreyF
Пользователь
 
Регистрация: 15.10.2008
Сообщений: 44
По умолчанию

Цитата:
Вопросы странные какие-то...
Я просто так пытался написать DBGrid1.Column.Index, а надо просто Column.Index в процедуре procedure TForm1.DBGrid2TitleClick(Column: TColumn);

С шириной вроде разобрался:
Код:
var
   i,w: Integer;
begin
    w:=0;
    for i:=0 to Column.Index do w:=w+1+Form1.DBGrid1.Columns.Items[i].Width;
это всё хорошо, только если столбцы вправо не листать, а у меня их порядка 40 полей, так вот когда вправо перемещаюсь по столбцам, получается, что нажимаю на заголовок 25 столбца, а на самом экране вижу то только 7-8 столцов, а ширина то считается всех 25 столбцов, так как поститать ширину всех видимых в данный момент столбцов или узнать какие в данный момент видны столбцы?
и как вычислить отступ сверху самого прямоугольника заголовка столбца в DBGrid?

DBGrid у меня находится не в самом верху формы, сначала расположен toolbar, а ниже сам DBGrid?
AndreyF вне форума Ответить с цитированием
Старый 11.12.2009, 14:02   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

25 столбцов??? Мрак... Ну и нравы...
Если следовать правилам "юзабилити", то в ДБГрид выводят только основные параметры, причем весьма желательно, чтобы горизонтального скролла не было и в помине.
А все второстепенные показатели отображаются под ДБГридом в наборе либо ДБЭдитов (при условии запрета редактирования), либо ДБТекстов.
mihali4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Координаты в заголовке формы???? sasha3050 Помощь студентам 8 21.09.2009 16:57
Команды в заголовке acidcool SQL, базы данных 3 27.08.2009 17:28
Звук в заголовке формы. Skolot Microsoft Office Access 1 28.04.2009 11:08
Фильтр в заголовке DBGrid vrb БД в Delphi 3 16.04.2009 22:34
Позиция курсора в заголовке NieL Общие вопросы Delphi 3 17.12.2008 18:01