Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Вниз

закраска ячеек в гриде   Найти похожие ветки 

 
bagos ©   (2007-04-24 16:59) [0]

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


 
Сергей М. ©   (2007-04-24 17:01) [1]

Можно.
Уж это-то мы тебе разрешаем)


 
bagos ©   (2007-04-24 17:02) [2]

Я знал что мне не откажут:)


 
Правильный Вася   (2007-04-24 17:14) [3]

DrawCell вызывается для отрисовки конкретной ячейки


 
{RASkov}   (2007-04-24 17:14) [4]

> [2] bagos ©   (24.04.07 17:02)

Только учитывай, что DrawCell вызывается для каждой ячейки грида....

> можно ли в обработчике DrawCell для закраски множества ячеек
> использовать циклы?

Т.е. я так понял, что ты хочешь "красить" сразу несколько ячеек в этом обработчике?


 
bagos ©   (2007-04-24 19:38) [5]

мне нужно закрасить около 10 ячеек,разумеется они всегда разные :)


 
{RASkov} ©   (2007-04-24 19:42) [6]

> [5] bagos ©   (24.04.07 19:38)

Крась их используя ARow и ACol и не надо никаких своих циклов...


 
Углук ©   (2007-04-25 20:42) [7]

Я красил так,  как спрашивающий человек хочет. Могу сказать, что очень кривой способ. Ячейки действительно перекрашиваются в цикле ( даже если юзать ACol,ARow), при этом блицают. Правда, я их градиентом закрашивал...


 
Германн ©   (2007-04-25 21:31) [8]


> Углук ©   (25.04.07 20:42) [7]
>
> Я красил так,  как спрашивающий человек хочет. Могу сказать,
>  что очень кривой способ.

Это не "кривой" способ, это абсолютно неверный способ!


 
Leonid Troyanovsky ©   (2007-04-25 22:21) [9]


> Германн ©   (25.04.07 21:31) [8]

> >  что очень кривой способ.
>
> Это не "кривой" способ, это абсолютно неверный способ!

Ясень пень, что кривой, ведь для перерисовки просто зовут
Invalidate, InvalidateCell, InvalidateRect или как там его.

--
Regards, LVT.


 
Германн ©   (2007-04-26 01:02) [10]


> Leonid Troyanovsky ©   (25.04.07 22:21) [9]
>
>
> > Германн ©   (25.04.07 21:31) [8]
>
> > >  что очень кривой способ.
> >
> > Это не "кривой" способ, это абсолютно неверный способ!
>
>
> Ясень пень, что кривой, ведь для перерисовки просто зовут
> Invalidate, InvalidateCell, InvalidateRect или как там его.
>
>
> --
> Regards, LVT.
>

Не понял, увы. Наверно луна не в той фазе :(


 
{RASkov} ©   (2007-04-26 12:19) [11]

> Я красил так,  как спрашивающий человек хочет. Могу сказать,
> что очень кривой способ. Ячейки действительно перекрашиваются
> в цикле ( даже если юзать ACol,ARow), при этом блицают.
> Правда, я их градиентом закрашивал...

Краски не жалеете.... Нафига одну и туже ячейку "красить" туеву хучу раз? Еще бы не блицали....
Еще раз:
Для перерисовки(прорисовки) ячейки, есть событие OnDrawCell, которое вызывается для каждой ячейки [ACol, ARow], и если ипользовать там еще и циклы для закраски нескольких ячеек, то они будут краситься по несколько раз "все"....


 
bagos ©   (2007-04-26 12:39) [12]

Бейте,пинайте,не могу понять как правильно красить ячейки. Крашу используя цикл.
GG := StrToInt(StringGrid1.Cells[0, 2]) - 2;
For I:=1 to ValueListEditor1.RowCount - 1 do
begin
 ARow := I + 1;
 Row_Xz := StrToInt(StringGrid1.Cells[0, FF]);
 ACol := StrToInt(ValueListEditor1.Cells[1, I]);
 If ARow=I+1 then
   begin
     S := StringGrid1.Cells[ACol,FF];
     Rect := StringGrid1.CellRect(ACol,FF);
     StringGrid1.Canvas.Brush.Color:=clSkyBlue;
     StringGrid1.Canvas.FillRect(Rect);
     StringGrid1.Canvas.TextRect(Rect, Rect.BottomRight.X-70, Rect.BottomRight.Y-18, S);
end;

Знаю что по уродски...
Но по другому не умею :(


 
bagos ©   (2007-04-26 12:40) [13]

GG := StrToInt(StringGrid1.Cells[0, 2]) - 2; -- эт лишнее
Row_Xz := StrToInt(StringGrid1.Cells[0, FF]); и это тоже


 
homm ©   (2007-04-26 12:55) [14]

> Знаю что по уродски...
> Но по другому не умею :(

Тебе чё сказали в [11]? И еще где-то раньше??

Для перерисовки(прорисовки) ячейки, есть событие OnDrawCell

в него приходит индекс этой ячейки горизонтальный и вертикальный (ACol, ARow).
В ней и закрашивай ту ячейку, которую тебя просят. А уж эта процедура вызовиться много раз для всех ячеек, та что не одн незакрашеной не останеться.


 
{RASkov} ©   (2007-04-26 13:00) [15]

> [12] bagos ©   (26.04.07 12:39)

И где этот "ужас" находится? на OnDrawCell? Покажи полный обработчик где это находится с учетом [13]....
Впринципе если на OnDrawCell - то тогда убери это оттуда в другое место.....
> Rect.BottomRight.X-70, Rect.BottomRight.Y-18,

Может проще - Rect.Left+2 и Rect.Top+2 ?


 
{RASkov} ©   (2007-04-26 13:09) [16]

> ARow := I + 1;
> Row_Xz := StrToInt(StringGrid1.Cells[0, FF]);
> ACol := StrToInt(ValueListEditor1.Cells[1, I]);
> If ARow=I+1 then

Интересно :)
И что за FF....


 
bagos ©   (2007-04-26 19:39) [17]


> {RASkov} ©   (26.04.07 13:09) [16]
Интересно :)
И что за FF....

это называется запутование самого себя...

procedure TForm1.resultDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var
col,row,row_xz:integer;
i,j,h:integer;
s,s1,s2,s3,s4,s5:string;
rect1,rect2,rect3,rect4,rect5:trect;
gg,ff:integer;
begin
if s_a_prinad.Keys[1]="" then begin
end
else begin
//
result.Canvas.Brush.Color:=clBtnFace;
s4:=result.Cells[0,0];
rect4:=result.CellRect(0,0);
result.Canvas.FillRect(rect4);
result.Canvas.TextRect(rect4,rect4.BottomRight.X-73,rect4.BottomRight.Y-18,s4);
//
result.Canvas.Brush.Color:=clBtnFace;
s5:=result.Cells[0,1];
rect5:=result.CellRect(0,1);
result.Canvas.FillRect(rect5);
result.Canvas.TextRect(rect5,rect5.BottomRight.X-55,rect5.BottomRight.Y-18,s5);

for h:=1 to result.ColCount-1 do begin
result.Canvas.Brush.Color:=clBtnFace;
s3:=result.Cells[h,0];
rect3:=result.CellRect(h,0);
result.Canvas.FillRect(rect3);
result.Canvas.TextRect(rect3,rect3.BottomRight.X-40,rect3.BottomRight.Y-18,s3);
end;


gg:=strtoint(result.Cells[0,2])-2;
for i:=1 to s_a_prinad.RowCount-1 do begin
ff:=i+1;
row_Xz:=strtoint(result.Cells[0,ff]);
row:=strtoint(s_a_prinad.cells[0,i])-gg;
col:=strtoint(s_a_prinad.Cells[1,i]);
if ff=i+1 then begin
s:=result.Cells[col,ff];
s1:=result.Cells[col,0];
rect:=result.CellRect(col,ff);
rect1:=result.CellRect(col,0);
result.Canvas.Brush.Color:=clSkyBlue;
result.Canvas.FillRect(rect);
result.Canvas.FillRect(rect1);
result.Canvas.TextRect(rect,rect.BottomRight.X-70,rect.BottomRight.Y-18,s);
result.Canvas.TextRect(rect1,rect1.BottomRight.X-40,rect1.BottomRight.Y-18,s1);
end;
end;

for j:=2 to result.RowCount-1 do begin
result.Canvas.Brush.Color:=clBtnFace;
s2:=result.Cells[0,j];
rect2:=result.CellRect(0,j);
result.Canvas.FillRect(rect2);
result.Canvas.TextRect(rect2,rect2.BottomRight.X-40,rect2.BottomRight.Y-18,s2);
end;
end;

end;


визуально работает как нужно, но я как чувствовал что не прально делаю

Спасибо за ответы


 
{RASkov} ©   (2007-04-26 21:13) [18]

> [17] bagos ©   (26.04.07 19:39)

Нифига не понятно что к чему...
Сделай скрин твоей формы и прокомментируй его здесь. От чего и как должны красится ячейки в сгриде..
Вообще [17] - это ужас.... я даже разбирать не стал :(


 
homm ©   (2007-04-26 21:42) [19]

> визуально работает как нужно, но я как чувствовал что не
> прально делаю

Ты глуп, ужасно глуп. Даже если предположить что ты не понял того, что тебе здесь по 10 раз каждый сказал, ты мог бы еше раз попросит уточнить то что тебе не далось, вместо этого ты продлжаешь липить свои ужасные нарезки кода. Зачем ты вообще сюда обратился, если слушать не желаешь?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.178 c
2-1177511768
Stas12
2007-04-25 18:36
2007.05.20
Поиск в бинарном файле.


2-1177786122
ppcumax
2007-04-28 22:48
2007.05.20
Как поменять кодировку в RichEdit?


15-1177149836
borodaj
2007-04-21 14:03
2007.05.20
обработка изображений


2-1177849540
N3xt
2007-04-29 16:25
2007.05.20
Задачка)


2-1178102376
Neket
2007-05-02 14:39
2007.05.20
Колличество строк





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский