Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DevExpress. Есть ли возможность в одну ячейку TcxGrid засунуть несколько иконок? / 7 сообщений из 7, страница 1 из 1
20.03.2019, 09:55
    #39788819
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress. Есть ли возможность в одну ячейку TcxGrid засунуть несколько иконок?
Добрый день.

Использую TcxGridTableView, создаю несколько колонок, по одной из колонок мне нужно отображать иконки загруженные в TcxImageList. Т.е. в разных записях по колонке должны присутствовать разное количество иконок.

Такое возможно? (не нашёл нужной свойство по колонке).
...
Рейтинг: 0 / 0
20.03.2019, 10:05
    #39788825
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress. Есть ли возможность в одну ячейку TcxGrid засунуть несколько иконок?
CustomDrewCell
...
Рейтинг: 0 / 0
20.03.2019, 10:07
    #39788829
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress. Есть ли возможность в одну ячейку TcxGrid засунуть несколько иконок?
Способы:

1) делаешь много тоненьких колонок. Каждая для своей иконки. Сколько их может быть сразу? Пять? Тогда 5 колонок.
2) отрисовывать что угодно в событии OnCustomDrawCell
...
Рейтинг: 0 / 0
20.03.2019, 10:54
    #39788867
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress. Есть ли возможность в одну ячейку TcxGrid засунуть несколько иконок?
из странных вариантов можно еще рассмотреть TcxButtonEdit в ячейке, тогда по иконкам-кнопкам еще и тыкать можно будет
...
Рейтинг: 0 / 0
20.03.2019, 11:10
    #39788880
Игорь_UUS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress. Есть ли возможность в одну ячейку TcxGrid засунуть несколько иконок?
DimaBr,

хм.. вроде как идея ясна, а Вы можете привести пример в виде куска кода?
...
Рейтинг: 0 / 0
20.03.2019, 11:37
    #39788902
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress. Есть ли возможность в одну ячейку TcxGrid засунуть несколько иконок?
Код: pascal
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.
procedure TMainTableGraphFrm.cxTreeCustomDrawDataCell;
var Node: TcxTreeListNode;
    R: TRect;
begin
...
  if AViewInfo.Column = cxTreeDrawProp then begin
    R := AViewInfo.ContentRect;
    if Node.Selected
      then ACanvas.FillRect(R,cxTree.Styles.Selection.Color)
      else ACanvas.FillRect(R,GraphDontNowColor);

    if SignVacansy then begin
      ACanvas.DrawImage(DataModuleFrm.ImageListGrid,R.Left,R.Top+1,19);
      inc(R.Left,16);
    end;
    if SignState then begin
      ACanvas.DrawImage(DataModuleFrm.ImageListGrid,R.Left,R.Top+1,20);
      inc(R.Left,16);
    end;
...
    ADone := true;
    Exit;
  end;
....
end;
...
Рейтинг: 0 / 0
20.03.2019, 11:38
    #39788903
__Avenger__
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DevExpress. Есть ли возможность в одну ячейку TcxGrid засунуть несколько иконок?
Код: pascal
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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
procedure TformDEOperations.tvMainPARAMS_MASKCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);

  procedure DrawRhomb(ACanvas: TCanvas; const x, y: Integer; const AColor: TColor; const ASize: Integer = 5);
  begin
    with ACanvas do
    begin
      Brush.Style := bsSolid;
      Brush.Color := AColor;
      Pen.Color   := AColor;
      Polygon([
        Point(x, y),
        Point(x + ASize, y - ASize),
        Point(x + 2 * ASize, y),
        Point(x + ASize, y + ASize)
      ]);
    end;
  end;

const
  RhombSize = 4;
var
  ARect: TRect;
  x, y: Integer;
  AMask: Int64;
begin
  if not Assigned(AViewInfo) then
    Exit;
  AMask := StrToInt64Def(VarToStr(AViewInfo.GridRecord.Values[tvMainPARAMS_MASK.Index]), 0);
  ARect := AViewInfo.Bounds;
  ACanvas.FillRect(ARect, AViewInfo.Params.Color);
  x     := ARect.Left + 2;
  y     := ARect.Top  - 1 + (ARect.Bottom - ARect.Top) div 2;
  // Draw Rhombs
  // Обработанный или необработанный пакет
  if AMask and 8 = 8 then // В процессе обработки обнаружены ошибки
    DrawRhomb(ACanvas.Canvas, x, y, clOlive, RhombSize)
  else if AMask and 1 = 1 then
    DrawRhomb(ACanvas.Canvas, x, y, clLime, RhombSize)
  else
    DrawRhomb(ACanvas.Canvas, x, y, clRed, RhombSize);
  Inc(x, 2 * RhombSize + 3);
  // Выгруженный пакет
  if AMask and 2 = 2 then
    DrawRhomb(ACanvas.Canvas, x, y, clFuchsia, RhombSize);
  Inc(x, 2 * RhombSize + 3);
  // В пакете есть PB2
  if AMask and 4 = 4 then
    DrawRhomb(ACanvas.Canvas, x, y, clBlack, RhombSize);
  ADone := True;
end;

...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / DevExpress. Есть ли возможность в одну ячейку TcxGrid засунуть несколько иконок? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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