0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 8
1

Картинка check box в строках DBGrid

02.04.2018, 11:19. Показов 820. Ответов 4
Метки нет (Все метки)

Пытаюсь сделать картинку заместо check box в строках DBGrid'а а так же подсветить его другим цветом.
есть поле - Статус. В данное поле в зависимости от значения check box нужно поместить картинку.

В данном случае у меня картинка появляется только при нажатии на любое поле. Нужно чтобы только в поле - "статус" отображалось и постоянно.
Пробовал разными способами, но результат нужный не получил.
Прошу помощи, код:

Delphi
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
28
procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var ImageIndex : Integer;
 
begin
IF fgfggBox1.Checked=true
 
Then Begin
ImageIndex:=1;
 
ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top, ImageIndex );
 
{TDBGrid(Sender).Canvas.Brush.Color:=clRed;
TDBGrid(Sender).Canvas.Font.Color:=clWhite;
IF gdSelected IN State
Then Begin
TDBGrid(Sender).Canvas.Brush.Color:= clHighLight;
TDBGrid(Sender).Canvas.Font.Color := clHighLightText;
TDBGrid(Sender).Canvas.FillRect(Rect);} {это код подсветки красным пока закомментил тоже работает не так как нужно}
 
 
End;
 
 
TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
 
 
End;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2018, 11:19
Ответы с готовыми решениями:

Check Box, можно ли реализовать ...
Здравствуйте. Вобщем для курсового надо сделать программу обучения неправильных глаголов по англ...

DBGrid и картинка
Всем доброго времени суток!!!))) Можно ли подключить в DBGrid картинку вместо обыкновенного белого...

вопрос по Check Box
Всем доброго времени суток! Вопрос наверно немного глупый, но я не очень силён в формулахю...

Изменение Check Box
Здравствуйте. Как поменять стиль(форму) Checkbox(Сделать его круглым, квадратным) и как поменять...

4
5498 / 4293 / 1379
Регистрация: 14.04.2014
Сообщений: 19,286
Записей в блоге: 19
02.04.2018, 11:53 2
этот обработчик вызывается для каждой ячейки
и вам в параметрах передают, что это за ячейка и даже в каком состоянии вы должны ее рисовать
DataCol: Integer; Column: TColumn; State: TGridDrawState
так что проверяйте параметры и рисуйте для нужной колонки, не трогайте остальные
0
0 / 0 / 0
Регистрация: 05.11.2015
Сообщений: 8
02.04.2018, 17:54  [ТС] 3
Delphi
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
28
29
30
31
32
33
procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  Var ImageIndex   : Integer;
 
begin
 
IF column.FieldName='Статус' then
if fgfggBox1.Checked=true
 
  Then Begin
    with DBGrid1.Canvas do begin
  ImageIndex:=1;
 
       TDBGrid(Sender).Canvas.FillRect(Rect);
    ImageList1.Draw(TDBGrid(Sender).Canvas,Rect.Left+2,Rect.Top, ImageIndex );
 
    end;
 
 
   { TDBGrid(Sender).Canvas.Brush.Color:=clRed;
    TDBGrid(Sender).Canvas.Font.Color:=clWhite;
     IF  gdSelected   IN State
  Then Begin
      TDBGrid(Sender).Canvas.Brush.Color:= clHighLight;
      TDBGrid(Sender).Canvas.Font.Color := clHighLightText;
        TDBGrid(Sender).Canvas.FillRect(Rect);
  End;     }
 
    End;
 
 // TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State);
 
  End;
Сейчас он работает для поля - "статус" как и должен , но отображает данные некорректно. Некоторые отображает, некоторые нет.
Я не понимаю почему так происходит? в чем ошибка.
0
5498 / 4293 / 1379
Регистрация: 14.04.2014
Сообщений: 19,286
Записей в блоге: 19
02.04.2018, 22:22 4
а какие, простите, данные?
единственное данное, что вы проверяете. это
Цитата Сообщение от Buyniti Посмотреть сообщение
if fgfggBox1.Checked=true
вот это я бы вообще убрал
Цитата Сообщение от Buyniti Посмотреть сообщение
with DBGrid1.Canvas do begin
а тут
Цитата Сообщение от Buyniti Посмотреть сообщение
TDBGrid(Sender).Canvas.FillRect(Rect);
лучше просто dbgrid1.Canvas.FillRect()
хотя это непринципиально...
0
пофигист широкого профиля
4633 / 3078 / 852
Регистрация: 15.07.2013
Сообщений: 17,743
03.04.2018, 01:48 5
Цитата Сообщение от Buyniti Посмотреть сообщение
Я не понимаю почему так происходит? в чем ошибка.
Возможно потому, что вы рисуете только при
Delphi
1
fgfggBox1.Checked=true
а надо бы рисовать ещё и в противном случае.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2018, 01:48
Помогаю со студенческими работами здесь

Как использовать Check Box?
Проблема с использованием Check Box. Есть скрипт GUID и скрипт с основной программой. Нужно...

Генерация check-box на форме
Всех с новым годом!) В общем суть вот в чем. У меня есть файл, в нем построчно записаны названия,...

Как инициализировать Check Box
Как инициализировать чекбокс, если true чтобы галка в окошке стояла?

Задать value для check box
Добрый день! Как задать значение для чек бокса ? Например, цену товара. И чтобы при отметке чек...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru