Форум: "Начинающим";
Текущий архив: 2007.09.30;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c