Форум: "Начинающим";
Текущий архив: 2009.10.04;
Скачать: [xml.tar.bz2];
Внизstringgrid ondrawcell в отдельном модуле Найти похожие ветки
← →
bag (2009-08-03 15:05) [0]Можно ли как нибудь вынести код ondrawcell в отдельнй юнит и оттуда импортировать? если да то научите
← →
Kolan © (2009-08-03 15:16) [1]Можно — сделайте функцию в отдельном модуле с нужными параметрами и вызывайте её из обработчика.
Я такое проделывал, когда мне требовалась одинаковая раскраска в двух гридах. Правильнее, конечно, написать свой компонент.
← →
bag (2009-08-03 15:32) [2]
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:39) [3]Ну давайте посмотрим. В этой функции вам нужны:
ACol
,ARow
,Canvas
и какой-тоSG6_1
.
Значит у функции в отдельном модуле будет примерно такой интерфейс:procedure MyDrewCell(ACol, ARow: Integer; Canvas: TCanvas; SG6_1: <Нужный тип>);
НекийSG6_1
вызывает подозрение, так как он не позволяет сделать функцию универсальной, а без этого она не нужна.
← →
Плохиш © (2009-08-03 15:40) [4]Ради 9-ти строк городить огород. Используй
{$INCLUDE filename}
← →
bag (2009-08-03 15:42) [5]у меня около 5 стрингов, по 80 строчек в каждом...
← →
bag (2009-08-03 15:44) [6]ок, 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;
как то так
← →
Kolan © (2009-08-03 15:49) [7]Ну, я же ответил выше. Тоже самое, только без SG6_1. Вызов будет таким:
with sg6_1 do
begin
...
MyDrewCell(ACol, ARow, Canvas)
...
end;
Правда ваша модификация весьма подозрительна. Раньше вы что-то рисовали на каком-то компоненте (вероятно на форме), а текст выводили на канву SG6_1. А после модификации вы и рисуете и текст выводите на канву SG6_1.
← →
Плохиш © (2009-08-03 15:51) [8]
> bag (03.08.09 15:44) [6]
Из описания функцииMyDrewCell
надо убрать первые три параметра.
← →
Kolan © (2009-08-03 15:52) [9]Плохиш, теперь я ничего не понимаю, а как тогда рисовать?
← →
Плохиш © (2009-08-03 15:53) [10]
> Kolan © (03.08.09 15:49) [7]
> Правда ваша модификация весьма подозрительна.
Ой, да ладно, как-будто первый день на форуме, давно пора привыкнуть к партизанам...
← →
Плохиш © (2009-08-03 16:01) [11]
> Kolan © (03.08.09 15:52) [9]
>
> Плохиш, теперь я ничего не понимаю, а как тогда рисовать?
>
Чё понимать-то? Достаточно передать грид, канвас с ним же и передасца :-)
Хотя ARow и ACol тоже передать надо. Хм, подозреваю, что данное дело в OnXXXDraw выполняется, тогда переменных с гридами, типа sg6_1, совершенно не к чему...
← →
Kolan © (2009-08-03 16:20) [12]Вообще — да, сам грид наверно даже лучше передать, чтобы в функции было понятно, что именно на канве грида рисуется. А то рисование наверняка основано на специфики грида, а канву передать можно любую.
← →
Anatoly Podgoretsky © (2009-08-03 16:29) [13]
> Можно ли как нибудь вынести код ondrawcell в отдельнй юнит
> и оттуда импортировать? если да то научите
А в чем дзен?
← →
bag (2009-08-03 17:04) [14]в общем надо еще передовать rect в параметрах, тогда рисует как надо, если не указать то грид будет жестоко искаверкан.
Спасибо, парни!
← →
icWasya © (2009-08-03 17:42) [15]Вообще говоря в ondrawXXX Sender и есть этот самый грид.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.10.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c