![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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