![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dxDBGrid + ImageList [D7, 2000]
Sonia © (2007-09-04 15:14:00)Всем драсте!
Имеется 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;
Однако картинок нет. Выполняла пошагово - картинки рисуются, но при переходе на новую строку удаляются. В чем может быть ошибка и как ее решить?
Спасибо!
evvcom (2007-09-05 09:35:00) [1]
> 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'));
Sonia (2007-09-04 16:48:00) [2]О, отлично! Спасибо! :)
Lacmus (2007-09-04 16:34:00) [3]HeaderMinRowCount ?
Sonia (2007-09-04 16:27:00) [4]Так, этот вопрос исчерпан. Надо было установить в ImageIndexes значения при который должен ставится конкретный рисунок. Теперь вопрос по самой грид. Как сделать так, чтобы часть заголовка переносилась на другую строку?
Sonia (2007-09-04 16:21:00) [5]
> Использовать TdxDBGridImageColumn
Он и есть
Lacmus (2007-09-04 15:37:00) [6]Использовать TdxDBGridImageColumn или полностью рисовать ячейку (ADone := True)