Главная страница
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.024 c
4-1175497718
valager
2007-04-02 11:08
2007.09.30
Чтение данных из другого приложения


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


3-1179935533
YURA-007
2007-05-23 19:52
2007.09.30
Проблема автоинкримента и ClientDataSet а!


15-1188394941
sdubaruhnul
2007-08-29 17:42
2007.09.30
Задача на оптимизацмю парковки


2-1188900056
Service
2007-09-04 14:00
2007.09.30
Service