Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

StringGrid.Objects... Вопросы реализации


Cosinus ©   (2004-10-27 13:43:00) 

Господа! Никак не пойму, что я не так делаю...
Вот так в 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;

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


Cosinus   (2004-10-27 14:25:00) [1]

Всем спасибо. Работа с 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


MBo   (2004-10-27 14:04:00) [2]

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


Pentium133   (2004-10-27 13:55:00) [3]

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


Cosinus   (2004-10-27 13:53:00) [4]


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

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

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

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


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


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

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


Johnmen   (2004-10-27 13:49:00) [6]

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


Pentium133   (2004-10-27 13:47:00) [7]

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


clickmaker   (2004-10-27 13:47:00) [8]


> data_sg.Font.Color :=

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


Pentium133   (2004-10-27 13:47:00) [9]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо