Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите с ImageComboBox в качестве поля у cxGrid / 15 сообщений из 15, страница 1 из 1
15.02.2018, 13:49
    #39602328
Devillio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
Добрый день!

Помогите разобраться, если не затруднит?

Если колонке задаю Properties = ImageComboBox, указываю ImageList и прописываю Items (где Value есть значение, и иконка соответствующая), и если данные в колонку берутся из датасет - то все работает.
Но мне надо, чтобы данные получались на основании других колонок, а именно - показывалась иконка типа файла, где имя файла - в другой колонке.
GetDisplayText колонки с картинкой
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TframeAprrovesExecs.GDBTVImagesGetDisplayText(
  Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
  var AText: string);
var S: String;
begin
  AText := '4';
  S := ARecord.Values[GDBTVColFN.Index];
  S := Copy(UpperCase(ExtractFileExt(S)), 2, 10);
  if (S = 'DOC') then AText := '20';
  if (S = 'DOCX') then AText := '20';
  if (S = 'ODT') then AText := '20';
  if (S = 'RTF') then AText := '20';
  if (S = 'TXT') then AText := '19';
  if (S = 'PPT') then AText := '18';
...
end;


И в этом случае вместо картинки вижу цифру. Если убираю ShowDescriptions, то ничего не вижу.
Как можно правильно отобразить иконку?

Спасибо!
...
Рейтинг: 0 / 0
15.02.2018, 13:57
    #39602333
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
OnCustomDataCellDraw, OnGetData, в Images добавить текстовые значения -- много вариантов, на любой вкус.
...
Рейтинг: 0 / 0
15.02.2018, 14:24
    #39602375
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
Devillio, еще один это устроить калькулирумое поле куда вытягивать расширение а уже на него натравливать столбец с картинками
...
Рейтинг: 0 / 0
15.02.2018, 14:37
    #39602391
Devillio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
Благодарю за ответы!

Ничего не пойму :(
Прикрутил в запросе поле ('0' as UUU). Прописал OnGetText этому полю. В отладке вижу, что эта процедура исполняется и правильно (на выходе Text принимает правильное значение). В табличке картинки - все равно по значению поля UUU из запроса!

Остальные варианты мне кажутся обходными путями; есть же правильный механизм, работает просто и понятно, но почему-то не сейчас
...
Рейтинг: 0 / 0
15.02.2018, 14:42
    #39602401
Devillio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
JaDi, оой я тукан, думал вы про OnGetText поля датасета, а вы же скорее про OnGetDataText колонки грида.
Сейчас проверю и этот вариант :)
(Но это не отменяет моего недоумения почему OnGetText поля датасета не пашет :))
...
Рейтинг: 0 / 0
15.02.2018, 15:09
    #39602419
Devillio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
Неа, не пашет...

Если не затруднит, гляньте, что я делаю не так?

Так наполнен ImageComboBox


Добавил поле в запрос, вот результат для ", ''4'' as UUU":

(4 за рисунком это включен ShowDescription для отладки)

вот результат для ", ''20'' as UUU":

Т.е. сам механизм ImageComboBox работает.

Если я убираю у колонки DataBinding.FieldName, прописываю OnGetDisplayText у колонки, то получается так:

Т.е. сами индексы рисунков верные, но почему то не показывает картинки, а только рисует текст.

Если же прописать OnGetDataText, то колонка становится вообще пустой.


Рисовать на canvas руками или делать Calculated поле мне кажется как изобретать велосипед, когда есть в руках мопед, просто непонятно как его завести))

Спасибо!
...
Рейтинг: 0 / 0
15.02.2018, 15:21
    #39602430
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
Какую цель вы хотите достичь ?
Отображать просто поле с картинкой или же пользоваться редакотором и выбирать данные в ячейке ?
Если просто зависимая картинка, то нарисуйте её в CustomDrawCell и не мучайтесь с ImageComboBox
...
Рейтинг: 0 / 0
15.02.2018, 16:51
    #39602510
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
На OnGetDataText надо брать имя файл, смотреть его расширение ExtractFileExt и в зависимости от значения присваивать Value нужное значение оконки... предварительно их в imagecombobox добавив
...
Рейтинг: 0 / 0
15.02.2018, 16:53
    #39602511
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
Аа, это в первом посте у автора. Тогда можно добавить новое поле в датасет (autocalc) и на OnCalc датасета туда добавлять значение иконки (код можно из первого поста взять).
...
Рейтинг: 0 / 0
15.02.2018, 17:04
    #39602520
Devillio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
JaDi, да, через OnGetDataText не работает.
Через Calced - работает.
Непонятно, почему не срабатывает как по идее должно.

Ну да ладно :)

Огромное спасибо!
...
Рейтинг: 0 / 0
15.02.2018, 22:28
    #39602676
Олег Третьяков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
Devillio,
Стучись в cкaйп
volchaos
...
Рейтинг: 0 / 0
16.02.2018, 08:47
    #39602731
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
DevillioЧерез Calced - работаетну я ж сразу сказал калькулируемое мутить
DevillioНепонятно, почему не срабатывает как по идее должноу девэксов свои идеи. там от компонента к компоненту и еще в зависимости от класса поля весьма различно могут себя вести
ну а рисовать ч/з customdraw это последнее дело если через датасет/поля и прочее не получилось. хотя ситуации бывают что это неизбежный а порой и самый быстрый вариант
...
Рейтинг: 0 / 0
16.02.2018, 11:13
    #39602803
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
vavanну а рисовать ч/з customdraw это последнее дело
Мы не ищем лёгких путей, мы будем упорно перебирать компоненты, задействовать кучу ненужного кода, подстраиваться под имеющие возможности, вместо того чтобы реализовать порой строчек.
...
Рейтинг: 0 / 0
16.02.2018, 12:36
    #39602878
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
Devillioиконка типа файла, где имя файла - в другой колонке.

Код: 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.
procedure Tfm1.dbgDocsCustomDrawCell(Sender: TcxCustomGridTableView;
  ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
  var ADone: Boolean);
Var
 val: boolean;
 vIconHandle: HIcon;
 FullName: string;
begin
  try
    if AViewInfo.GridView.DataController.RecordCount <= 0 then exit;
    FullName := VarToStr(AViewInfo.GridRecord.Values[dbgDocsFullPath.Index] +  AViewInfo.GridRecord.Values[dbgDocsName.Index]);

    val := FileExists(FullName);

    if not val then
      ACanvas.Font.Color := clRed;


    if (AViewInfo.Item = dbgDocsIcon) then
        begin
          vIconHandle := akGetIconHandle(FullName);
          ACanvas.Brush.Color := clWhite;
          ACanvas.FillRect(AViewInfo.Bounds);
          DrawIconEx(ACanvas.Handle, AViewInfo.ClientBounds.Left + 1, AViewInfo.ClientBounds.Top + 1, vIconHandle, 16, 16, 0, 0, DI_NORMAL or DI_COMPAT);
          ADone := True;
        end;

  except
    abort;
  end;
end;
...
Рейтинг: 0 / 0
16.02.2018, 18:54
    #39603291
vavan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с ImageComboBox в качестве поля у cxGrid
DimaBrМы не ищем лёгких путейза всех не расписываюсь в отличие от, но для меня несколько строк OnCalcFields сделать легче нежели кастомный и специфический под конкретный компонент отрисовщик. приобретая при этом потенциальную возможность сменить один компонент на другой
DimaBrзадействовать кучу ненужного кода
DimaBrподстраиваться под имеющие возможностину разумеется раз уж они есть. предпочитаю по возможности по максимуму эксплуатировать фичи датасетов и аварность компонент нежели рукоблудить отрисовщики
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите с ImageComboBox в качестве поля у cxGrid / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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