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

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

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]

Можно — сделайте функцию в отдельном модуле с нужными параметрами и вызывайте её из обработчика.

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


Наверх

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