Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1188721437
fisher
2007-09-02 12:23
2007.09.30
IQ посетителей форума


2-1188984903
kyro
2007-09-05 13:35
2007.09.30
Можно ли сделать сортировку в тейбл


2-1188813839
Lyberzon
2007-09-03 14:03
2007.09.30
Как загрузить из INI список секций в ComboBox?


3-1179483915
Parenek
2007-05-18 14:25
2007.09.30
как узнать, добавлена ли запись ?


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский