![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
stringgrid ondrawcell в отдельном модуле
bag © (2009-08-03 15:05:00)Можно ли как нибудь вынести код ondrawcell в отдельнй юнит и оттуда импортировать? если да то научите
icWasya (2009-08-03 17:42:00) [1]Вообще говоря в ondrawXXX Sender и есть этот самый грид.
bag (2009-08-03 17:04:00) [2]в общем надо еще передовать rect в параметрах, тогда рисует как надо, если не указать то грид будет жестоко искаверкан.
Спасибо, парни!
Anatoly Podgoretsky (2009-08-03 16:29:00) [3]
> Можно ли как нибудь вынести код ondrawcell в отдельнй юнит
> и оттуда импортировать? если да то научите
А в чем дзен?
Kolan (2009-08-03 16:20:00) [4]Вообще — да, сам грид наверно даже лучше передать, чтобы в функции было понятно, что именно на канве грида рисуется. А то рисование наверняка основано на специфики грида, а канву передать можно любую.
Плохиш (2009-08-03 16:01:00) [5]
> Kolan © (03.08.09 15:52) [9]
>
> Плохиш, теперь я ничего не понимаю, а как тогда рисовать?
>
Чё понимать-то? Достаточно передать грид, канвас с ним же и передасца :-)
Хотя ARow и ACol тоже передать надо. Хм, подозреваю, что данное дело в OnXXXDraw выполняется, тогда переменных с гридами, типа sg6_1, совершенно не к чему...
Плохиш (2009-08-03 15:53:00) [6]
> Kolan © (03.08.09 15:49) [7]
> Правда ваша модификация весьма подозрительна.
Ой, да ладно, как-будто первый день на форуме, давно пора привыкнуть к партизанам...
Kolan (2009-08-03 15:52:00) [7]Плохиш, теперь я ничего не понимаю, а как тогда рисовать?
Плохиш (2009-08-03 15:51:00) [8]
> bag (03.08.09 15:44) [6]
Из описания функцииMyDrewCellнадо убрать первые три параметра.
Kolan (2009-08-03 15:49:00) [9]Ну, я же ответил выше. Тоже самое, только без SG6_1. Вызов будет таким:
with sg6_1 do
begin
...
MyDrewCell(ACol, ARow, Canvas)
...
end;
Правда ваша модификация весьма подозрительна. Раньше вы что-то рисовали на каком-то компоненте (вероятно на форме), а текст выводили на канву SG6_1. А после модификации вы и рисуете и текст выводите на канву SG6_1.
bag (2009-08-03 15:44:00) [10]ок, Kolan,
with sg6_1 do
begin
...
if S = '+' then
if (ACol >= 0) and (ARow >= 0) then
begin
Canvas.Brush.Color := $00C1C1FF;
Canvas.Font.Style := [fsbold];
Canvas.Font.Size := 13;
Canvas.FillRect(Rect);
Canvas.TextOut(rect.left + 4, rect.top, S);
end;
...
end;
как то так
bag (2009-08-03 15:42:00) [11]у меня около 5 стрингов, по 80 строчек в каждом...
Плохиш (2009-08-03 15:40:00) [12]Ради 9-ти строк городить огород. Используй
{$INCLUDE filename}
Kolan (2009-08-03 15:39:00) [13]Ну давайте посмотрим. В этой функции вам нужны:
ACol,ARow,Canvasи какой-тоSG6_1.
Значит у функции в отдельном модуле будет примерно такой интерфейс:
procedure MyDrewCell(ACol, ARow: Integer; Canvas: TCanvas; SG6_1: <Нужный тип>);
НекийSG6_1вызывает подозрение, так как он не позволяет сделать функцию универсальной, а без этого она не нужна.
bag (2009-08-03 15:32:00) [14]
if S = '+' then
if (ACol >= 0) and (ARow >= 0) then
begin
Canvas.Brush.Color := $00C1C1FF;
Canvas.Font.Style := [fsbold];
Canvas.Font.Size := 13;
Canvas.FillRect(Rect);
SG6_1.Canvas.TextOut(rect.left + 4, rect.top, S);
end;
не представляю как засунуть его в функцию
Kolan (2009-08-03 15:16:00) [15]Можно — сделайте функцию в отдельном модуле с нужными параметрами и вызывайте её из обработчика.
Я такое проделывал, когда мне требовалась одинаковая раскраска в двух гридах. Правильнее, конечно, написать свой компонент.