Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.14;
Скачать: CL | DM;

Вниз

StringGrid.Objects... Вопросы реализации   Найти похожие ветки 

 
Cosinus ©   (2004-10-27 13:43) [0]

Господа! Никак не пойму, что я не так делаю...
Вот так в Objects некоторых ячеек записывается цвет шрифта
Data_sg.Objects[j,i]:=pointer(integer(Color));
А вот так я его (цвет) вынимаю
procedure TMainForm1.Data_sgDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
 data_sg.Font.Color:=Integer(Data_sg.objects[ACol,ARow]);
end;

Идет постоянная перерисовка (моргает и дергается). Подскажите, в чем дело?


 
Pentium133 ©   (2004-10-27 13:47) [1]

Изменение цвета шрифта грида вызывает повторный вызов этого события. И так - постоянно.


 
clickmaker ©   (2004-10-27 13:47) [2]


> data_sg.Font.Color :=

Этим ты загоняешь его в рекурсию: он опять вызывает OnDrawCell и т.д.


 
Pentium133 ©   (2004-10-27 13:47) [3]

Нужно использовать OnDrawCell


 
Johnmen ©   (2004-10-27 13:49) [4]

А чтоб избавиться, просто ещё иф
if data_sg.Font.Color<>Integer(Data_sg.objects[ACol,ARow]) then ...


 
Pentium133 ©   (2004-10-27 13:50) [5]


> Pentium133 ©   (27.10.04 13:47) [3]

Не это имел в видe :))
В данном случае изменяй цвет и выводи текст средствами Canvas


 
Cosinus ©   (2004-10-27 13:53) [6]


> Johnmen ©   (27.10.04 13:49) [4]

Как ни странно, не прокатывает ;)

> Pentium133 ©   (27.10.04 13:50) [5]

Дело в том, что все работало в немного другом виде. Я просто совершенно нечаянно убил кусок кода, который был в DrawCell. А теперь никак восстановить не могу


 
Pentium133 ©   (2004-10-27 13:55) [7]

Ну я тебе и говорю что надо написать раз не можешь востановить то что было...


 
MBo ©   (2004-10-27 14:04) [8]

Если ты посмотришь на любой приличный пример использования DrawCell, хотя бы в справке, то увидишь, что цвет шрифта компонента не меняют, а работают со шрифтом его Canvas, и тут же вручную выводят текст.


 
Cosinus ©   (2004-10-27 14:25) [9]

Всем спасибо. Работа с Canvas действительно решила все проблеммы...
 with Sender as TStringGrid,Canvas do
 begin
   Font.Color:=Integer(objects[ACol,ARow]);
   TextOut(Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
 end



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

Текущий архив: 2004.11.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.05 c
14-1098977679
Silla
2004-10-28 19:34
2004.11.14
Visual C++ 6&amp;7 Forum


3-1098090555
Layner
2004-10-18 13:09
2004.11.14
Помогите парсировать SQL запрос


14-1098710385
отслуживший в армии
2004-10-25 17:19
2004.11.14
что значит: "расцветет махровым цветом"


4-1096839798
Ded Moroz
2004-10-04 01:43
2004.11.14
Перехват


6-1094244415
AlexG
2004-09-04 00:46
2004.11.14
Имя пользователя, работающего на компьютере