Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Вниз

Проблема с рисованием на канве TDBGrid   Найти похожие ветки 

 
madmech ©   (2010-08-31 14:33) [0]

Проблема такова. Работаю со стандартным TDBgrid, на заголовках которого вручную рисую стрелки или др. объекты в случае сортировки по этим заголовкам. Все работает нормально до поры до времени, но как только курсор попадает на "белое", незанятое информацией (записями) пространство грида ровно под сортировочным столбцом (полем), графический объект начинает "плыть" и моргать. При отведении курсора с сортировочного столбца мигание исчезает.
В чем может быть загвоздка? Раньше работал на D7 или на BDS2006, этого недоразумения не возникало, а как только перешел на D2010, появилось. Скрины грида я по необходимости предоставлю.
Сразу оговорюсь: другие компоненты и библиотеки типа EhLib можете не предлагать, т.к. я изменил до неузнаваемости имеющийся грид, добавив к нему множество своих возможностей, учитывающих специфику поставленной задачи, по сути, создав свой компонент. Мне проще было работать "с нуля", с чистого листа, взяв за основу самый простой компонент.


 
Юрий Зотов ©   (2010-08-31 19:28) [1]


> В чем может быть загвоздка?

Похоже, когда курсор попадает в эту зону, начинается непрерывная перерисовка. А почему она начинается - это надо код смотреть.


 
Игорь Шевченко ©   (2010-08-31 21:08) [2]


> В чем может быть загвоздка?


в обработке сообщения WM_MOUSEMOVE


 
madmech ©   (2010-09-27 18:12) [3]

Проблема по-прежнему актуальна, я наконец-то завершил всю рутинную работу, которая не давала мне сосредоточть свое внимание на этой ошибке.
Привожу код отрисовки объекта:

procedure TMainForm.FIODBGridDrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
begin
   with FIODBGrid do
   begin

          ...

     DefaultDrawDataCell(Rect, Field, State);

     // Отрисовка сортировочных стрелок на заголовках при сортировке
     // Рисуем только в случае, когда нет сортировки по EE
     if FlagM_EE = 0 then
     begin
       if DM1.MCDS.IndexName = "IndexFIO1" then
         if Field.Index = 4 then
           DM1.TitleImList.Draw(Canvas, Rect.Left, 0, 0);
       if DM1.MCDS.IndexName = "IndexFIO2" then
         if Field.Index = 4 then
           DM1.TitleImList.Draw(Canvas, Rect.Left, 0, 1);
     end;

           ...

   end;
end;


 
madmech ©   (2010-09-29 15:14) [4]


> Похоже, когда курсор попадает в эту зону, начинается непрерывная
> перерисовка. А почему она начинается - это надо код смотреть.
>

Отключил все перерисоки, какие только можно, оставив только ту, код которой привел выше. Все равно "моргание" осталось.


> в обработке сообщения WM_MOUSEMOVE

Я его не обрабатываю.

Может быть, есть еще какие-нибудь едеи? Кто-нибудь сталкивался с такой же или похожей проблемой?


 
madmech ©   (2010-09-29 15:23) [5]

Если что, DM1.TitleImList - это компонент TImageList, лежащий в модуле данных.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
2-1285455023
Германн
2010-09-26 02:50
2010.12.26
Resize формы


2-1286211551
denissoft
2010-10-04 20:59
2010.12.26
где скачать пример memory path–ера!


2-1286133494
Sperry
2010-10-03 23:18
2010.12.26
"обратный цыкл"


15-1284409769
Юрий
2010-09-14 00:29
2010.12.26
С днем рождения ! 14 сентября 2010 вторник


15-1284537412
12
2010-09-15 11:56
2010.12.26
MSSQL. OPENQUERY. Как linked_server := self ?





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