Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.09.30;
Скачать: CL | DM;

Вниз

dxDBGrid + ImageList   Найти похожие ветки 

 
Sonia ©   (2007-09-04 15:14) [0]

Всем драсте!
Имеется dxDBGrid + OraStoredProc +ImageList 2-мя картинками. Делаю, чтобы в поле colSTAT (типа ImageColumn) отображалась соответствующая картинка.


procedure TfMain.dxDBGridCustomDrawCell(Sender: TObject; ACanvas: TCanvas;
 ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
 ASelected, AFocused, ANewItemRow: Boolean; var AText: String;
 var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
 var ADone: Boolean);
begin
  if AColumn.Name = "colSTAT" then
    if OraStoredProc.FieldByName("stat").Value = "ARR" then
      ImageList.Draw(ACanvas,ARect.Left,ARect.Top,1)
    else
      ImageList.Draw(ACanvas,ARect.Left,ARect.Top,0);
end;


Однако картинок нет. Выполняла пошагово - картинки рисуются, но при переходе на новую строку удаляются. В чем может быть ошибка и как ее решить?
Спасибо!


 
Lacmus ©   (2007-09-04 15:37) [1]

Использовать TdxDBGridImageColumn или полностью рисовать ячейку (ADone := True)


 
Sonia ©   (2007-09-04 16:21) [2]


> Использовать TdxDBGridImageColumn

Он и есть


 
Sonia ©   (2007-09-04 16:27) [3]

Так, этот вопрос исчерпан. Надо было установить в ImageIndexes значения при который должен ставится конкретный рисунок. Теперь вопрос по самой грид. Как сделать так, чтобы часть заголовка переносилась на другую строку?


 
Lacmus ©   (2007-09-04 16:34) [4]

HeaderMinRowCount ?


 
Sonia ©   (2007-09-04 16:48) [5]

О, отлично! Спасибо! :)


 
evvcom ©   (2007-09-05 09:35) [6]


> if AColumn.Name = "colSTAT" then

Марина, не делай так никогда. Придет тебе в голову завтра или через месяц, а то и не тебе, поменять имя столбца, и всё - приплыли! Ошибку будешь искать долго и мучительно. Делай так
if AColumn = colSTAT then

> но при переходе на новую строку удаляются. В чем может быть
> ошибка и как ее решить?

Ты при отрисовке грида используешь значение из DataSet. Грид только при изменении данных в DS достает их из него и сохраняет в своих внутренних массивах, при дальнейших отрисовках он курсор больше не трогает, поэтому ты для всех строк при отрисовке получаешь одно и то же значение OraStoredProc.FieldByName("stat").Value.

> if OraStoredProc.FieldByName("stat").Value = "ARR" then
>       ImageList.Draw(ACanvas,ARect.Left,ARect.Top,1)
>     else
>       ImageList.Draw(ACanvas,ARect.Left,ARect.Top,0);

Смотри, как более оптимально это написать:
ImageList.Draw(ACanvas,ARect.Left,ARect.Top, Integer(OraStoredProc.FieldByName("stat").Value = "ARR"));



Страницы: 1 вся ветка

Текущий архив: 2007.09.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.023 c
3-1180347550
salexn
2007-05-28 14:19
2007.09.30
Как работает MaxRecords свойство ADO для Oracle


2-1188993958
Странник81
2007-09-05 16:05
2007.09.30
Вывод файла на экран


2-1188907163
ArtikZ
2007-09-04 15:59
2007.09.30
time


1-1184576114
Unknown user
2007-07-16 12:55
2007.09.30
Подскажите алгоритмы быстрого геометрического поиска?


8-1164884405
POL~LITRA
2006-11-30 14:00
2007.09.30
Движение планет вокруг солнца