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

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

Если колонке задаю 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
Помогите с ImageComboBox в качестве поля у cxGrid
    #39602333
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OnCustomDataCellDraw, OnGetData, в Images добавить текстовые значения -- много вариантов, на любой вкус.
...
Рейтинг: 0 / 0
Помогите с ImageComboBox в качестве поля у cxGrid
    #39602375
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devillio, еще один это устроить калькулирумое поле куда вытягивать расширение а уже на него натравливать столбец с картинками
...
Рейтинг: 0 / 0
Помогите с ImageComboBox в качестве поля у cxGrid
    #39602391
Devillio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю за ответы!

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

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

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

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


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

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

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

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

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

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

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


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

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

Ну да ладно :)

Огромное спасибо!
...
Рейтинг: 0 / 0
Помогите с ImageComboBox в качестве поля у cxGrid
    #39602676
Олег Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Devillio,
Стучись в cкaйп
volchaos
...
Рейтинг: 0 / 0
Помогите с ImageComboBox в качестве поля у cxGrid
    #39602731
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DevillioЧерез Calced - работаетну я ж сразу сказал калькулируемое мутить
DevillioНепонятно, почему не срабатывает как по идее должноу девэксов свои идеи. там от компонента к компоненту и еще в зависимости от класса поля весьма различно могут себя вести
ну а рисовать ч/з customdraw это последнее дело если через датасет/поля и прочее не получилось. хотя ситуации бывают что это неизбежный а порой и самый быстрый вариант
...
Рейтинг: 0 / 0
Помогите с ImageComboBox в качестве поля у cxGrid
    #39602803
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vavanну а рисовать ч/з customdraw это последнее дело
Мы не ищем лёгких путей, мы будем упорно перебирать компоненты, задействовать кучу ненужного кода, подстраиваться под имеющие возможности, вместо того чтобы реализовать порой строчек.
...
Рейтинг: 0 / 0
Помогите с ImageComboBox в качестве поля у cxGrid
    #39602878
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Помогите с ImageComboBox в качестве поля у cxGrid
    #39603291
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrМы не ищем лёгких путейза всех не расписываюсь в отличие от, но для меня несколько строк OnCalcFields сделать легче нежели кастомный и специфический под конкретный компонент отрисовщик. приобретая при этом потенциальную возможность сменить один компонент на другой
DimaBrзадействовать кучу ненужного кода
DimaBrподстраиваться под имеющие возможностину разумеется раз уж они есть. предпочитаю по возможности по максимуму эксплуатировать фичи датасетов и аварность компонент нежели рукоблудить отрисовщики
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Помогите с ImageComboBox в качестве поля у cxGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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