Главная страница
    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-1188540456
ZeroDivide
2007-08-31 10:07
2007.09.30
Умственны способности депутата... какими они должны быть?


6-1170156869
maxistent
2007-01-30 14:34
2007.09.30
закачка/докачка по ftp/http


3-1179909872
ed_ch
2007-05-23 12:44
2007.09.30
Как получить вычисляемое поле в базе данных


15-1188409507
barakuda
2007-08-29 21:45
2007.09.30
Продажа программы


15-1188440446
Slider007
2007-08-30 06:20
2007.09.30
С днем рождения ! 30 августа 2007 четверг





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский